cgeorgiaw's picture
cgeorgiaw HF Staff
fixing login button
4d92199
raw
history blame
2.45 kB
import pathlib
from pathlib import Path
import tempfile
from typing import BinaryIO, Literal
import json
import pandas as pd
import gradio as gr
from datasets import load_dataset, Dataset
from huggingface_hub import upload_file, hf_hub_download
from gradio_leaderboard import ColumnFilter, Leaderboard, SelectColumns
from evaluation import evaluate_problem
from datetime import datetime
import os
from huggingface_hub import HfApi
from about import PROBLEM_TYPES, TOKEN, CACHE_PATH, API, submissions_repo, results_repo
def submit_boundary(
problem_type: Literal["geometrical", "simple_to_build", "mhd_stable"],
boundary_file: BinaryIO,
profile: gr.OAuthProfile | None
) -> str:
# error handling
print(profile)
print("the profile name is: ", profile.username)
if profile.username is None:
raise gr.Error("You must be logged in to submit a file.")
file_path = boundary_file.name
if not file_path:
raise gr.Error("Uploaded file object does not have a valid file path.")
path_obj = pathlib.Path(file_path)
timestamp = datetime.utcnow().isoformat()
with (
path_obj.open("rb") as f_in,
tempfile.NamedTemporaryFile(delete=False, suffix=".json") as tmp_boundary,
):
file_content = f_in.read()
tmp_boundary.write(file_content)
tmp_boundary_path = pathlib.Path(tmp_boundary.name)
# write to dataset
filename = f"{problem_type}/{timestamp.replace(':', '-')}_{problem_type}.json"
record = {
"submission_filename": filename,
"submission_time": timestamp,
"problem_type": problem_type,
"boundary_json": file_content.decode("utf-8"),
"evaluated": False,
"user": profile.username,
}
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as tmp:
json.dump(record, tmp, indent=2)
tmp.flush()
tmp_name = tmp.name
API.upload_file(
path_or_fileobj=tmp_name,
path_in_repo=filename,
repo_id=submissions_repo,
repo_type="dataset",
commit_message=f"Add submission for {problem_type} at {timestamp}"
)
pathlib.Path(tmp_name).unlink()
tmp_boundary_path.unlink()
return "βœ… Your submission has been received! Sit tight and your scores will appear on the leaderboard shortly.", filename