Spaces:
Sleeping
Sleeping
File size: 2,434 Bytes
e1ce262 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | """Helpers to load from and push rows to a HuggingFace dataset."""
from datetime import datetime, timezone
import pandas as pd
from datasets import Dataset, load_dataset
from config import HF_DATASET_PATH, REGISTRATION_COLUMNS, SUBMISSION_COLUMNS, TOKEN
# ββ Internal helpers ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def _load_subset(subset: str) -> pd.DataFrame:
"""Load one config/subset of the HF dataset as a DataFrame.
Returns an empty DataFrame (with the right columns) if nothing exists yet.
"""
columns = REGISTRATION_COLUMNS if subset == "registrations" else SUBMISSION_COLUMNS
try:
ds = load_dataset(HF_DATASET_PATH, subset, split="train", token=TOKEN)
return ds.to_pandas()
except Exception:
return pd.DataFrame(columns=columns)
def _push_subset(df: pd.DataFrame, subset: str) -> None:
"""Push a DataFrame back to HF as a dataset config."""
ds = Dataset.from_pandas(df, preserve_index=False)
ds.push_to_hub(HF_DATASET_PATH, config_name=subset, split="train", token=TOKEN)
# ββ Public API ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
def load_registrations() -> pd.DataFrame:
return _load_subset("registrations")
def add_registration(name: str, email: str, affiliation: str, team_name: str) -> None:
df = load_registrations()
new_row = {
"timestamp": datetime.now(timezone.utc).isoformat(),
"name": name,
"email": email,
"affiliation": affiliation,
"team_name": team_name,
}
df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)
_push_subset(df, "registrations")
def load_submissions() -> pd.DataFrame:
return _load_subset("submissions")
def add_submission(team_name: str, method: str, score: float, file_name: str) -> None:
df = load_submissions()
new_row = {
"timestamp": datetime.now(timezone.utc).isoformat(),
"team_name": team_name,
"method": method,
"score": score,
"file_name": file_name,
}
df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)
_push_subset(df, "submissions") |