Saranath07
Application added
4d3ef13
raw
history blame
1.72 kB
import gradio as gr
import os
import json
import ast
import requests
from difflib import Differ
from jinja2 import Template, Environment
def update_question(selected_question, data):
if data is None or not data:
return "", "", "", "", "", ""
selected_data = next(d for d in data if d["question"] == selected_question)
function_template = selected_data["question_template"].replace("\\n", "\n")
# print(selected_data)
return (
selected_data["solution"],
selected_data["question"],
selected_data["testcases"],
function_template,
)
def run_code(code_snippet, test_cases, input_type="stdin"):
actual_output_messages = []
expected_output_messages = []
if input_type == "code":
code_snippet += "\nimport sys; exec(sys.stdin.read())"
# print(code_snippet)
for test_case in test_cases:
expected_output = test_case["output"]
payload = {
"language": "python",
"version": "3.10.0",
"files": [{"name": "script.py", "content": code_snippet}],
"stdin": test_case["input"],
}
response = requests.post("https://emkc.org/api/v2/piston/execute", json=payload)
execution_result = response.json()
actual_output = (
execution_result["run"]["output"].strip()
if "run" in execution_result and "output" in execution_result["run"]
else ""
)
actual_output_messages.append(actual_output)
expected_output_messages.append(expected_output)
output_json = {
"actual_output": actual_output_messages,
"expected_output": expected_output_messages,
}
return output_json