|
from email.utils import parseaddr |
|
from huggingface_hub import HfApi |
|
import os |
|
import datetime |
|
import json |
|
import pandas as pd |
|
|
|
LEADERBOARD_PATH = "Exploration-Lab/IL-TUR-Leaderboard" |
|
|
|
api = HfApi() |
|
TOKEN = os.environ.get("TOKEN", None) |
|
YEAR_VERSION = "2024" |
|
|
|
|
|
def format_error(msg): |
|
return f"<p style='color: red; font-size: 20px; text-align: center;'>{msg}</p>" |
|
|
|
|
|
def format_warning(msg): |
|
return f"<p style='color: orange; font-size: 20px; text-align: center;'>{msg}</p>" |
|
|
|
|
|
def format_log(msg): |
|
return f"<p style='color: green; font-size: 20px; text-align: center;'>{msg}</p>" |
|
|
|
|
|
def model_hyperlink(link, model_name): |
|
return f'<a target="_blank" href="{link}" style="color: var(--link-text-color); text-decoration: underline;text-decoration-style: dotted;">{model_name}</a>' |
|
|
|
|
|
def input_verification(method_name, url, path_to_file, organisation, mail): |
|
for input in [method_name, url, path_to_file, organisation, mail]: |
|
if input == "": |
|
return format_warning("Please fill all the fields.") |
|
|
|
|
|
_, parsed_mail = parseaddr(mail) |
|
if not "@" in parsed_mail: |
|
return format_warning("Please provide a valid email adress.") |
|
|
|
if path_to_file is None: |
|
return format_warning("Please attach a file.") |
|
|
|
return parsed_mail |
|
|
|
|
|
def add_new_eval( |
|
method_name: str, |
|
url: str, |
|
path_to_file: str, |
|
organisation: str, |
|
mail: str, |
|
): |
|
|
|
parsed_mail = input_verification( |
|
method_name, |
|
url, |
|
path_to_file, |
|
organisation, |
|
mail, |
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import io |
|
|
|
|
|
with open(path_to_file, "r") as f: |
|
submission = json.load(f) |
|
|
|
with open("submissions/baseline/results.json", "r") as f: |
|
results = json.load(f) |
|
|
|
|
|
results.append(submission[0]) |
|
|
|
leaderboard_buffer = io.BytesIO() |
|
|
|
|
|
|
|
|
|
leaderboard_buffer.write(json.dumps(results).encode()) |
|
leaderboard_buffer.seek(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
api.upload_file( |
|
repo_id=LEADERBOARD_PATH, |
|
|
|
path_in_repo=f"submissions/results.json", |
|
path_or_fileobj=leaderboard_buffer, |
|
token=TOKEN, |
|
repo_type="space", |
|
) |
|
|
|
return format_log( |
|
f"Method {method_name} submitted by {organisation} successfully. \nPlease refresh the leaderboard, and wait a bit to see the score displayed" |
|
) |
|
|