abdev-leaderboard / submit.py
loodvanniekerkginkgo's picture
Adding FAQs, moving submission and utils code around
3edbc93
raw
history blame
1.59 kB
from pathlib import Path
import tempfile
from typing import BinaryIO
import json
import gradio as gr
from datetime import datetime
from about import API, submissions_repo
def make_submission(
submitted_file: BinaryIO,
user_state):
if user_state is None:
raise gr.Error("You must submit your username to submit a file.")
file_path = submitted_file.name
if not file_path:
raise gr.Error("Uploaded file object does not have a valid file path.")
path_obj = Path(file_path)
timestamp = datetime.utcnow().isoformat()
with (path_obj.open("rb") as f_in):
file_content = f_in.read().decode("utf-8")
# write to dataset
filename = f"{user_state}/{timestamp.replace(':', '-')}_{user_state}.json"
record = {
"submission_filename": filename,
"submission_time": timestamp,
"csv_content": file_content,
"evaluated": False,
"user": user_state,
}
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 {user_state} at {timestamp}"
)
Path(tmp_name).unlink()
return "✅ Your submission has been received! Sit tight and your scores will appear on the leaderboard shortly."