import os import json import datetime from email.utils import parseaddr from io import BytesIO from huggingface_hub import HfApi import gradio as gr from eval_utils import get_evaluation_scores # Constants LEADERBOARD_PATH = "Exploration-Lab/IL-TUR-Leaderboard" SUBMISSION_FORMAT = "predictions" TOKEN = os.environ.get("TOKEN", None) YEAR_VERSION = "2024" api = HfApi(token=TOKEN) # Helper functions for formatting messages def format_message(msg, color): return f"

{msg}

" def format_error(msg): return format_message(msg, "red") def format_warning(msg): return format_message(msg, "orange") def format_log(msg): return format_message(msg, "green") def model_hyperlink(link, model_name): return f'{model_name}' def input_verification(method_name, url, path_to_file, organisation, mail): """Verify the input fields for submission.""" # Check if any field is empty if any( input == "" for input in [method_name, url, path_to_file, organisation, mail] ): return format_warning("Please fill all the fields.") # Verify email format _, parsed_mail = parseaddr(mail) if "@" not in parsed_mail: return format_warning("Please provide a valid email address.") # Check if file is attached if path_to_file is None: return format_warning("Please attach a file.") return parsed_mail def add_new_eval( method_name: str, submitted_by: str, url: str, path_to_file: str, organisation: str, mail: str, ): """Add a new evaluation to the leaderboard.""" # Verify input parsed_mail = input_verification(method_name, url, path_to_file, organisation, mail) if parsed_mail.startswith("