|
import subprocess |
|
import streamlit as st |
|
from utils.load_jsonl import load_data |
|
|
|
|
|
data_file = "output.jsonl" |
|
data = load_data(data_file) |
|
|
|
|
|
category_dict = {} |
|
for entry in data: |
|
category = entry["metadata"].get("category", "Uncategorized") |
|
if category not in category_dict: |
|
category_dict[category] = [] |
|
category_dict[category].append(entry) |
|
|
|
st.title("Code Execution") |
|
|
|
|
|
category_selected = st.selectbox("Select Category", list(category_dict.keys())) |
|
|
|
|
|
question_dict = {q["question"]: {"code": q["code"], "folder": q["folder"]} for q in category_dict[category_selected]} |
|
question_selected = st.selectbox("Select Question", list(question_dict.keys())) |
|
|
|
|
|
selected_entry = question_dict[question_selected] |
|
folder_name = selected_entry["folder"] |
|
code_snippet = selected_entry["code"] |
|
|
|
|
|
st.code(code_snippet, language="python") |
|
|
|
|
|
if st.button("Execute"): |
|
|
|
|
|
code_path = f"data/questions/{folder_name}/code.py" |
|
|
|
try: |
|
|
|
result = subprocess.check_output(["python", str(code_path)], text=True, stderr=subprocess.STDOUT) |
|
|
|
|
|
st.subheader("Execution Output:") |
|
st.success(result) |
|
|
|
except subprocess.CalledProcessError as e: |
|
|
|
st.error(f"Error executing script:\n{e.output}") |