Spaces:
Sleeping
Sleeping
File size: 1,721 Bytes
4d3ef13 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
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
|