Jaiwincr7 commited on
Commit
13879a6
Β·
1 Parent(s): a90cb45

FINAL DOCKERFIX: Ensuring Dockerfile copies pdf_utils.py instead of the nonexistent main.py.

Browse files
Files changed (1) hide show
  1. app.py +34 -24
app.py CHANGED
@@ -1,8 +1,11 @@
1
  import streamlit as st
2
  from merged import load_model_and_tokenizer, generate_code_stream
3
- from pdf_utils import test_case
4
 
 
 
5
  st.write("πŸš€ App started")
 
6
  # ---------------- Load model ONCE ----------------
7
  @st.cache_resource
8
  def load_model():
@@ -10,16 +13,16 @@ def load_model():
10
 
11
  tokenizer, model = load_model()
12
 
13
- # ---------------- Session state ----------------
14
  for key in ["selected_language", "generated_code", "pdf_bytes", "user_input"]:
15
  if key not in st.session_state:
16
  st.session_state[key] = "" if key != "selected_language" else None
17
 
18
- # ---------------- UI helpers ----------------
19
  def select_language(lang):
20
  st.session_state.selected_language = lang
21
  st.session_state.generated_code = ""
22
- st.session_state.pdf_bytes = ""
23
  st.session_state.user_input = ""
24
 
25
  def reset():
@@ -27,33 +30,40 @@ def reset():
27
  st.session_state[k] = "" if k != "selected_language" else None
28
 
29
  # ---------------- UI ----------------
30
- st.title("Generate any code and get test case for it")
31
 
 
32
  if st.session_state.selected_language is None:
 
33
  cols = st.columns(4)
34
  cols[0].button("Java", on_click=select_language, args=("Java",))
35
  cols[1].button("React.js", on_click=select_language, args=("React.js",))
36
  cols[2].button("Python", on_click=select_language, args=("Python",))
37
  cols[3].button("C++", on_click=select_language, args=("C++",))
38
 
 
39
  else:
40
  lang = st.session_state.selected_language
41
  st.subheader(f"Selected Language: {lang}")
42
- st.button("Reset", on_click=reset)
43
 
44
  st.session_state.user_input = st.text_input(
45
  "Describe the task",
46
  value=st.session_state.user_input
47
  )
48
 
49
- if st.button("Generate Code"):
 
50
  if st.session_state.user_input.strip():
 
51
  st.session_state.generated_code = ""
 
52
 
53
  st.subheader("Generated Code")
54
  code_placeholder = st.empty()
55
 
56
- with st.spinner("Generating code..."):
 
57
  for token in generate_code_stream(
58
  lang,
59
  st.session_state.user_input,
@@ -61,27 +71,27 @@ else:
61
  model
62
  ):
63
  st.session_state.generated_code += token
64
- code_placeholder.code(
65
- st.session_state.generated_code
66
- )
67
 
68
- # Generate test case PDF AFTER code generation
69
- st.session_state.pdf_bytes = test_case(
70
- st.session_state.generated_code
71
- )
 
72
 
 
73
 
74
  else:
75
  st.warning("Please enter a task")
76
 
77
  st.divider()
78
 
79
- with st.spinner("πŸ“„ Generating test cases PDF..."):
80
- st.session_state.pdf_bytes = test_case(
81
- st.session_state.generated_code
82
- )
83
-
84
- st.success("βœ… Test cases PDF generated")
85
-
86
-
87
-
 
1
  import streamlit as st
2
  from merged import load_model_and_tokenizer, generate_code_stream
3
+ from pdf_utils import test_case
4
 
5
+ # ---------------- App Boot ----------------
6
+ st.set_page_config(page_title="Code + Test Case Generator", layout="wide")
7
  st.write("πŸš€ App started")
8
+
9
  # ---------------- Load model ONCE ----------------
10
  @st.cache_resource
11
  def load_model():
 
13
 
14
  tokenizer, model = load_model()
15
 
16
+ # ---------------- Session State ----------------
17
  for key in ["selected_language", "generated_code", "pdf_bytes", "user_input"]:
18
  if key not in st.session_state:
19
  st.session_state[key] = "" if key != "selected_language" else None
20
 
21
+ # ---------------- UI Helpers ----------------
22
  def select_language(lang):
23
  st.session_state.selected_language = lang
24
  st.session_state.generated_code = ""
25
+ st.session_state.pdf_bytes = b""
26
  st.session_state.user_input = ""
27
 
28
  def reset():
 
30
  st.session_state[k] = "" if k != "selected_language" else None
31
 
32
  # ---------------- UI ----------------
33
+ st.title("🧠 Generate Code & Download Test Cases")
34
 
35
+ # -------- Language Selection --------
36
  if st.session_state.selected_language is None:
37
+ st.subheader("Select Language")
38
  cols = st.columns(4)
39
  cols[0].button("Java", on_click=select_language, args=("Java",))
40
  cols[1].button("React.js", on_click=select_language, args=("React.js",))
41
  cols[2].button("Python", on_click=select_language, args=("Python",))
42
  cols[3].button("C++", on_click=select_language, args=("C++",))
43
 
44
+ # -------- Main App --------
45
  else:
46
  lang = st.session_state.selected_language
47
  st.subheader(f"Selected Language: {lang}")
48
+ st.button("πŸ”„ Reset", on_click=reset)
49
 
50
  st.session_state.user_input = st.text_input(
51
  "Describe the task",
52
  value=st.session_state.user_input
53
  )
54
 
55
+ # -------- Generate Code Button --------
56
+ if st.button("βš™οΈ Generate Code"):
57
  if st.session_state.user_input.strip():
58
+
59
  st.session_state.generated_code = ""
60
+ st.session_state.pdf_bytes = b""
61
 
62
  st.subheader("Generated Code")
63
  code_placeholder = st.empty()
64
 
65
+ # 1️⃣ Code Generation Loader
66
+ with st.spinner("βš™οΈ Generating code..."):
67
  for token in generate_code_stream(
68
  lang,
69
  st.session_state.user_input,
 
71
  model
72
  ):
73
  st.session_state.generated_code += token
74
+ code_placeholder.code(st.session_state.generated_code)
 
 
75
 
76
+ # 2️⃣ PDF Generation Loader
77
+ with st.spinner("πŸ“„ Generating test cases PDF..."):
78
+ st.session_state.pdf_bytes = test_case(
79
+ st.session_state.generated_code
80
+ )
81
 
82
+ st.success("βœ… Test cases PDF generated")
83
 
84
  else:
85
  st.warning("Please enter a task")
86
 
87
  st.divider()
88
 
89
+ # -------- Download PDF --------
90
+ if st.session_state.get("pdf_bytes"):
91
+ st.download_button(
92
+ label="πŸ“₯ Download Test Cases PDF",
93
+ data=st.session_state.pdf_bytes,
94
+ file_name="test_cases.pdf",
95
+ mime="application/pdf",
96
+ key="download_pdf"
97
+ )