import os from pathlib import Path from huggingface_hub import HfApi, create_repo SPACE_ID = os.getenv("HF_SPACE_ID", "qyam23/pulse-cv") TOKEN = os.getenv("HF_TOKEN") ROOT = Path(__file__).resolve().parents[1] def require_token() -> str: if not TOKEN: raise SystemExit("HF_TOKEN is required to deploy the Hugging Face Space.") return TOKEN def main() -> None: token = require_token() api = HfApi(token=token) create_repo( repo_id=SPACE_ID, repo_type="space", space_sdk="docker", exist_ok=True, token=token, ) api.add_space_secret(repo_id=SPACE_ID, key="HF_TOKEN", value=token) api.add_space_variable(repo_id=SPACE_ID, key="AI_PROVIDER", value="huggingface") api.add_space_variable(repo_id=SPACE_ID, key="HF_MODEL", value=os.getenv("HF_MODEL", "Qwen/Qwen3-32B:nscale")) api.add_space_variable( repo_id=SPACE_ID, key="HF_MODEL_CANDIDATES", value=os.getenv( "HF_MODEL_CANDIDATES", "Qwen/Qwen3-32B:nscale,Qwen/Qwen3-32B:ovhcloud,Qwen/Qwen3-Coder-30B-A3B-Instruct:ovhcloud,Qwen/Qwen2.5-Coder-7B-Instruct:nscale,openai/gpt-oss-20b:groq,openai/gpt-oss-20b", ), ) api.add_space_variable(repo_id=SPACE_ID, key="NODE_ENV", value="production") api.add_space_variable(repo_id=SPACE_ID, key="PORT", value="7860") api.upload_folder( repo_id=SPACE_ID, repo_type="space", folder_path=str(ROOT), path_in_repo=".", commit_message="Deploy PulseCV Docker Space", ignore_patterns=[ ".git/*", ".github/*", ".sandbox/*", ".env", ".env.*", "node_modules/*", "artifacts/*", "*.log", "server-validation*.log", "hf_site*.log", "pulse_site.log", ], ) print(f"Deployed {SPACE_ID} without exposing secrets.") if __name__ == "__main__": main()