Spaces:
Build error
Build error
File size: 1,887 Bytes
0d4201c 6c486f7 0d4201c 6c486f7 |
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 |
import evaluate
import json
import os
import re
import sys
from pathlib import Path
module = evaluate.load("SEA-AI/horizon-metrics")
REGEX_YAML_BLOCK = re.compile(r"---[\n\r]+([\S\s]*?)[\n\r]+---[\n\r]")
def json_to_string_type(input_types):
"""Maps json input type to str."""
return ["str" if i == "json" else i for i in input_types]
def parse_readme(filepath):
"""Parses a repositories README and removes"""
if not os.path.exists(filepath):
return "No README.md found."
with open(filepath, "r") as f:
text = f.read()
match = REGEX_YAML_BLOCK.search(text)
if match:
text = text[match.end():]
return text
def launch_gradio_widget(metric):
"""Launches `metric` widget with Gradio."""
try:
import gradio as gr
except ImportError as error:
print(
"To create a metric widget with Gradio make sure gradio is installed."
)
raise error
local_path = Path(sys.path[0])
def compute(data):
return metric.compute(
) ##**parse_gradio_data(data, gradio_input_types)
iface = gr.Interface(
fn=compute,
inputs=[
gr.inputs.Textbox(lines=5, label="Predictions"),
gr.inputs.Textbox(lines=5, label="Ground Truth")
],
outputs=gr.outputs.Textbox(label=metric.name),
description=
(metric.info.description +
"\nIf this is a text-based metric, make sure to wrap you input in double quotes."
" Alternatively you can use a JSON-formatted list as input."),
title=f"Metric: {metric.name}",
article=parse_readme(local_path / "README.md"),
# TODO: load test cases and use them to populate examples
# examples=[parse_test_cases(test_cases, feature_names, gradio_input_types)]
)
iface.launch()
launch_gradio_widget(module)
|