Spaces:
Sleeping
Sleeping
| from email.utils import parseaddr | |
| from huggingface_hub import HfApi | |
| import io | |
| import os | |
| import base64 | |
| import pandas as pd | |
| from utils import DEFAULT_COLUMNS, DEFAULT_METRICS, LEADERBOARD_PATH | |
| 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 add_new_eval( | |
| corpus: str, | |
| organization: str, | |
| mail: str, | |
| fpath: str, | |
| ): | |
| for input in [corpus, organization, mail, fpath]: | |
| if not input: | |
| return format_warning("Please fill all the fields.") | |
| if organization == 'Baseline': | |
| return format_warning("Your organization name cannot be Baseline.") | |
| _, parsed_mail = parseaddr(mail) | |
| if '@' not in parsed_mail: | |
| return format_warning("Please provide a valid email adress.") | |
| # load the file | |
| io_path = f"submission/{corpus}.csv" | |
| df = pd.read_csv(io_path) | |
| df_new = pd.read_csv(fpath) | |
| for col in DEFAULT_METRICS: | |
| if col not in df_new.columns: | |
| return format_warning(f"Missing column in the submitted file: {col}") | |
| df_new['organization'] = organization | |
| df_new['id'] = base64.b64encode(os.urandom(6)).decode('ascii') | |
| df_new = df_new[DEFAULT_COLUMNS] | |
| df = pd.concat([df, df_new]).reset_index(drop=True) | |
| buffer = io.BytesIO() | |
| df.to_csv(buffer, index=False) # Write the DataFrame to a buffer in CSV format | |
| buffer.seek(0) # Rewind the buffer to the beginning | |
| api.delete_file( | |
| repo_id = LEADERBOARD_PATH, | |
| path_in_repo = io_path, | |
| token = TOKEN, | |
| repo_type='space' | |
| ) | |
| api.upload_file( | |
| repo_id = LEADERBOARD_PATH, | |
| path_in_repo = io_path, | |
| path_or_fileobj = buffer, | |
| token = TOKEN, | |
| repo_type = 'space', | |
| ) | |
| return format_log(f"Submitted to {corpus} by {organization} successfully.\nPlease refresh the leaderboard, and wait a bit to see the score displayed") | |