PulsoElectoral / bootstrap.py
noodbox's picture
Update bootstrap.py
f2d4203 verified
Raw
History Blame Contribute Delete
1.42 kB
from pathlib import Path
import json
import os
from huggingface_hub import hf_hub_download
DATASET_REPO = "noodbox/sv_territorial_master_dataset_v1"
BOOTSTRAP_FLAG = Path(".bootstrap_complete")
RUNTIME_DIR = Path("runtime_data")
MANIFEST_PATH = RUNTIME_DIR / "manifest.json"
REQUIRED_FILES = [
"data/geo/sv_geo_44.geojson",
"data/geo/sv_geo_distritos.geojson",
"data/territorial/territories_master.csv",
"data/territorial/capitals.csv",
"data/socioeconomic/indicators.csv",
"data/electoral/elections_results.csv",
"data/political/parties.csv",
"data/political/candidates.csv",
"data/game/campaign_effects.csv",
]
def run_bootstrap(force: bool = False):
RUNTIME_DIR.mkdir(exist_ok=True)
if MANIFEST_PATH.exists() and BOOTSTRAP_FLAG.exists() and not force:
return
token = os.getenv("HF_TOKEN")
downloaded = {}
for file_path in REQUIRED_FILES:
local_path = hf_hub_download(
repo_id=DATASET_REPO,
repo_type="dataset",
filename=file_path,
token=token,
)
downloaded[file_path] = local_path
manifest = {
"dataset_repo": DATASET_REPO,
"files": downloaded,
"status": "ready",
}
with open(MANIFEST_PATH, "w", encoding="utf-8") as f:
json.dump(manifest, f, ensure_ascii=False, indent=2)
BOOTSTRAP_FLAG.write_text("ok", encoding="utf-8")