Spaces:
Running
Running
Jaiwincr7
FINAL DOCKERFIX: Ensuring Dockerfile copies pdf_utils.py instead of the nonexistent main.py.
13879a6
| import streamlit as st | |
| from merged import load_model_and_tokenizer, generate_code_stream | |
| from pdf_utils import test_case | |
| # ---------------- App Boot ---------------- | |
| st.set_page_config(page_title="Code + Test Case Generator", layout="wide") | |
| st.write("π App started") | |
| # ---------------- Load model ONCE ---------------- | |
| def load_model(): | |
| return load_model_and_tokenizer() | |
| tokenizer, model = load_model() | |
| # ---------------- Session State ---------------- | |
| for key in ["selected_language", "generated_code", "pdf_bytes", "user_input"]: | |
| if key not in st.session_state: | |
| st.session_state[key] = "" if key != "selected_language" else None | |
| # ---------------- UI Helpers ---------------- | |
| def select_language(lang): | |
| st.session_state.selected_language = lang | |
| st.session_state.generated_code = "" | |
| st.session_state.pdf_bytes = b"" | |
| st.session_state.user_input = "" | |
| def reset(): | |
| for k in st.session_state: | |
| st.session_state[k] = "" if k != "selected_language" else None | |
| # ---------------- UI ---------------- | |
| st.title("π§ Generate Code & Download Test Cases") | |
| # -------- Language Selection -------- | |
| if st.session_state.selected_language is None: | |
| st.subheader("Select Language") | |
| cols = st.columns(4) | |
| cols[0].button("Java", on_click=select_language, args=("Java",)) | |
| cols[1].button("React.js", on_click=select_language, args=("React.js",)) | |
| cols[2].button("Python", on_click=select_language, args=("Python",)) | |
| cols[3].button("C++", on_click=select_language, args=("C++",)) | |
| # -------- Main App -------- | |
| else: | |
| lang = st.session_state.selected_language | |
| st.subheader(f"Selected Language: {lang}") | |
| st.button("π Reset", on_click=reset) | |
| st.session_state.user_input = st.text_input( | |
| "Describe the task", | |
| value=st.session_state.user_input | |
| ) | |
| # -------- Generate Code Button -------- | |
| if st.button("βοΈ Generate Code"): | |
| if st.session_state.user_input.strip(): | |
| st.session_state.generated_code = "" | |
| st.session_state.pdf_bytes = b"" | |
| st.subheader("Generated Code") | |
| code_placeholder = st.empty() | |
| # 1οΈβ£ Code Generation Loader | |
| with st.spinner("βοΈ Generating code..."): | |
| for token in generate_code_stream( | |
| lang, | |
| st.session_state.user_input, | |
| tokenizer, | |
| model | |
| ): | |
| st.session_state.generated_code += token | |
| code_placeholder.code(st.session_state.generated_code) | |
| # 2οΈβ£ PDF Generation Loader | |
| with st.spinner("π Generating test cases PDF..."): | |
| st.session_state.pdf_bytes = test_case( | |
| st.session_state.generated_code | |
| ) | |
| st.success("β Test cases PDF generated") | |
| else: | |
| st.warning("Please enter a task") | |
| st.divider() | |
| # -------- Download PDF -------- | |
| if st.session_state.get("pdf_bytes"): | |
| st.download_button( | |
| label="π₯ Download Test Cases PDF", | |
| data=st.session_state.pdf_bytes, | |
| file_name="test_cases.pdf", | |
| mime="application/pdf", | |
| key="download_pdf" | |
| ) | |