Skip to content

Commit 52aefb6

Browse files
Merge pull request haseeb-heaven#14 from haseeb-heaven:streamlit
Added Example Code Snippets
2 parents fb5650b + 037b096 commit 52aefb6

File tree

6 files changed

+126
-39
lines changed

6 files changed

+126
-39
lines changed

libs/code_runner.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def get_lang_code(self, lang):
5656
self.logger.error(f"Language {lang} not found")
5757
return None
5858

59-
def run_code(self, code, language):
59+
def run_code(self, code, language,code_input=None,compile_only=False):
6060
try:
6161
if not code or not language:
6262
self.logger.error("Code or language is not provided.")
@@ -73,7 +73,7 @@ def run_code(self, code, language):
7373

7474
# Replace escape sequences with empty characters
7575
code = code.replace("\\n", "").replace("\\t", "").replace("\\r", "").replace("\"", "\"")
76-
data = {"code": code, "language": language}
76+
data = {"code": code, "language": language,"input" : code_input,"compileOnly" : compile_only}
7777

7878
self.logger.info(f"Sending request to {self.server_url}/run_code and data is '{data}'")
7979
response = requests.post(f"{self.server_url}/run_code", json=data)

libs/geminiai.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,9 @@ def convert_generated_code(self, code, code_language):
240240
if gemini_completion:
241241
# Extracted code from the palm completion
242242
code = gemini_completion.text
243-
extracted_code = self.utils.extract_code(code)
243+
extracted_code = None
244+
if code:
245+
extracted_code = self.utils.extract_code(code)
244246

245247
# Check if the code or extracted code is not empty or null
246248
if not code or not extracted_code:

libs/general_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def execute_code(self, compiler_mode: str):
7272
# Execute code using JDoodle API
7373
elif compiler_mode.lower() == "api":
7474
logger.info("Executing code using JDoodle API")
75-
code_output = self.code_runer.run_code(generated_code, code_language)
75+
code_output = self.code_runer.run_code(generated_code, code_language,code_input=st.session_state.code_input,compile_only=False)
7676
logger.info(f"Execution Output: {code_output}")
7777
return code_output
7878

libs/tasks_parser.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import json
2+
from libs.logger import logger
3+
import random
4+
5+
class CodingTasksParser:
6+
"""A class to parse coding tasks from a JSON file."""
7+
8+
def __init__(self):
9+
"""Initialize the parser with the file path."""
10+
self.file_path = 'data/coding_tasks.json'
11+
self._data = None
12+
self._parse()
13+
14+
def _parse(self):
15+
"""Parse the JSON file and store the data."""
16+
try:
17+
with open(self.file_path, 'r') as f:
18+
self._data = json.load(f)
19+
logger.info(f'Successfully parsed file {self.file_path}')
20+
except Exception as exception:
21+
logger.error(f'Failed to parse file {self.file_path}: {exception}')
22+
raise
23+
24+
def _get_tasks(self):
25+
"""Return a list of all tasks."""
26+
if self._data is None:
27+
raise ValueError('No data parsed yet')
28+
return self._data['coding_tasks']
29+
30+
def _get_task(self, index):
31+
"""Return a specific task by its index."""
32+
if self._data is None:
33+
raise ValueError('No data parsed yet')
34+
try:
35+
return self._data['coding_tasks'][index]
36+
except IndexError:
37+
logger.error(f'No task at index {index}')
38+
raise
39+
40+
def get_random_task(self):
41+
"""Return a random task."""
42+
try:
43+
tasks = self._get_tasks()
44+
task = self._get_task(random.randint(0, len(tasks) - 1))
45+
return task['task'], task['example']['input'], task['example']['output']
46+
except Exception as exception:
47+
logger.error(f'Failed to get random task: {exception}')
48+
raise

libs/utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ def initialize_session_state():
6262
st.session_state.compiler_online_privacy_accepted = None
6363
if "compiler_api_privacy_accepted" not in st.session_state:
6464
st.session_state.compiler_api_privacy_accepted = None
65+
if "general_utils" not in st.session_state:
66+
st.session_state.general_utils = None
67+
if "tasks_parser" not in st.session_state:
68+
st.session_state.tasks_parser = None
6569

6670
# Initialize session state for Vertex AI
6771
if "vertexai" not in st.session_state:
@@ -162,12 +166,12 @@ def load_css(file_name):
162166
st.markdown(f'<style>{f.read()}</style>', unsafe_allow_html=True)
163167

164168
def display_code_editor(font_size, tab_size, theme, keybinding, show_gutter, show_print_margin, wrap, auto_update, readonly, language):
165-
if st.session_state.generated_code and st.session_state.compiler_mode == "Offline":
169+
if st.session_state.generated_code and st.session_state.compiler_mode in ["Offline", "API"]:
166170
st.session_state.generated_code = st_ace(
167171
language=language.lower(),
168172
theme=theme,
169173
keybinding=keybinding,
170-
height=400,
174+
height=600,
171175
value=st.session_state.generated_code,
172176
font_size=font_size,
173177
tab_size=tab_size,

0 commit comments

Comments
 (0)