import evaluate from evaluate.utils import launch_gradio_widget # from pathlib import Path # import sys # import os # from .logging import get_logger # logger = get_logger(__name__) # ### # def launch_gradio_widget(metric): # """Launches `metric` widget with Gradio.""" # try: # import gradio as gr # except ImportError as error: # logger.error("To create a metric widget with Gradio make sure gradio is installed.") # raise error # local_path = Path(sys.path[0]) # # if there are several input types, use first as default. # if isinstance(metric.features, list): # (feature_names, feature_types) = zip(*metric.features[0].items()) # else: # (feature_names, feature_types) = zip(*metric.features.items()) # gradio_input_types = infer_gradio_input_types(feature_types) # def compute(data): # return metric.compute(**parse_gradio_data(data, gradio_input_types)) # iface = gr.Interface( # fn=compute, # inputs=gr.Dataframe( # headers=feature_names, # col_count=len(feature_names), # row_count=1, # datatype=json_to_string_type(gradio_input_types), # ), # outputs=gr.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() # ### module = evaluate.load("saicharan2804/my_metric") launch_gradio_widget(module)