from __future__ import annotations import getpass import os from pathlib import Path from huggingface_hub import HfApi PROJECT_DIR = Path(__file__).resolve().parents[1] def main() -> None: token = os.getenv("HF_TOKEN") or getpass.getpass("Hugging Face write token: ") if not token.startswith("hf_"): raise SystemExit("The token does not look like a Hugging Face token.") api = HfApi(token=token) account = api.whoami() namespace = account["name"] space_id = os.getenv( "HF_SPACE_REPO", f"{namespace}/polymarket-lp-collector" ) dataset_id = os.getenv( "HF_DATASET_REPO", f"{namespace}/polymarket-l2-history" ) api.create_repo( repo_id=dataset_id, repo_type="dataset", private=False, exist_ok=True, ) api.upload_file( path_or_fileobj=PROJECT_DIR / "deploy/hf-dataset-card.md", path_in_repo="README.md", repo_id=dataset_id, repo_type="dataset", commit_message="Add dataset card", ) api.create_repo( repo_id=space_id, repo_type="space", space_sdk="docker", private=False, exist_ok=True, ) api.add_space_secret( repo_id=space_id, key="HF_TOKEN", value=token, description="Uploads collector archives to the public dataset.", ) variables = { "HF_DATASET_REPO": dataset_id, "MAX_MARKETS": "40", "DATA_DIR": "/data", "HEALTH_HOST": "0.0.0.0", "PORT": "8080", "ROTATION_SECONDS": "3600", "MAX_FILE_MIB": "256", "BACKUP_INTERVAL_SECONDS": "3600", "BACKUP_MIN_AGE_SECONDS": "120", "REQUIRE_REMOTE_BACKUP": "true", } for key, value in variables.items(): api.add_space_variable(repo_id=space_id, key=key, value=value) api.upload_folder( folder_path=PROJECT_DIR, repo_id=space_id, repo_type="space", ignore_patterns=[ ".git/**", ".venv/**", ".venv-hf/**", ".tools/**", "data/**", "upload/**", "**/__pycache__/**", "*.zip", ".env", ".koyeb.yaml", ], commit_message="Deploy Polymarket LP collector", ) api.request_space_hardware(repo_id=space_id, hardware="cpu-basic") runtime = api.get_space_runtime(repo_id=space_id) print(f"Space: https://huggingface.co/spaces/{space_id}") print(f"Dataset: https://huggingface.co/datasets/{dataset_id}") print(f"Hardware requested: {runtime.requested_hardware or runtime.hardware}") if __name__ == "__main__": main()