Spaces:
Sleeping
Sleeping
File size: 1,941 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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
import gradio as gr
import os
import json
import ast
import requests
from difflib import Differ
from jinja2 import Template, Environment
# output_json = {"actual_output": actual_output_messages, "expected_output":expected_output_messages }
# input,
def make_template_testcases(selected_question, data):
from run import update_question
solution, question_display, testcases, code_input = update_question(
selected_question, data
)
testcases_template = Template(
"""
{% for testcase in testcases %}
### Input {{loop.index}}
```
{{testcase.input}}
```
### Expected Output {{loop.index}}
```
{{testcase.output}}
```
{% endfor %}
"""
)
return (
solution,
question_display,
testcases_template.render(testcases=testcases),
code_input,
)
def make_template_outputs(code_snippet, selected_question, test_data):
from run import run_code
selected_data = next(
(item for item in test_data if item["question"] == selected_question), None
)
test_cases = selected_data["testcases"]
input_type = selected_data["input_type"]
output_json = run_code(code_snippet, test_cases, input_type)
def zip_filter(a, b):
return zip(a, b)
env = Environment()
env.filters["zip"] = zip_filter
output_template = env.from_string(
"""
{% set list1 = output_json['actual_output'] %}
{% set list2 = output_json['expected_output'] %}
{% for item1, item2 in list1 | zip(list2) %}
### Actual Output {{loop.index}}
{% if item1 == item2 %}
Passed ✅
{% else %}
Expected: {{ item2 }}, but got: {{ item1 }} ❌
{% endif %}
{% endfor %}
"""
)
return output_template.render(output_json=output_json)
|