"""Sube vendor/data al dataset privado `rrc-data` y reinicia el Space RRC. Es el paso que faltaba en la rutina: el Space baja su data de este dataset al bootear (``ensure_data`` con ``RR_DATA_REPO``). Subiendo acá los artefactos frescos + reiniciando el Space, la app de HF queda actualizada. ``upload_folder`` sube SOLO los archivos que cambiaron (dedupe por hash), así que aunque mande toda la carpeta transfiere poco. Usa el token HF ya configurado localmente (whoami = pablogrois). Uso: python racing-reports/scripts/push_data_to_hf.py """ from __future__ import annotations from pathlib import Path from huggingface_hub import HfApi DATASET_ID = "pablogrois/rrc-data" SPACE_ID = "pablogrois/RRC" DATA_DIR = Path(__file__).resolve().parents[1] / "vendor" / "data" # Lo que el Space NO usa y no tiene sentido que baje en cada boot (`ensure_data` hace # snapshot_download de TODO el dataset). `match_team_stats.parquet` son 56 MB que solo # necesita el build local de la app de Estilos de juego. NO_SUBIR = ["match_team_stats.parquet"] def main() -> None: if not DATA_DIR.is_dir(): raise SystemExit(f"No existe {DATA_DIR}") api = HfApi() who = api.whoami()["name"] print(f"[hf] usuario {who} → subiendo {DATA_DIR} a datasets/{DATASET_ID} …", flush=True) api.upload_folder( folder_path=str(DATA_DIR), repo_id=DATASET_ID, repo_type="dataset", commit_message="Refresh semanal de artefactos (rutina martes)", ignore_patterns=NO_SUBIR, ) print("[hf] dataset actualizado. Reiniciando Space para que re-sincronice…", flush=True) api.restart_space(SPACE_ID) print(f"[hf] Space {SPACE_ID} reiniciándose ✓", flush=True) if __name__ == "__main__": main()