| import os |
| import sys |
| from huggingface_hub import HfApi, create_repo, upload_folder |
| from config import BASE_DIR |
|
|
| def deploy_to_hf_spaces(space_name: str = "Demo", hf_token: str = None): |
| """Deploy local folder F:\\hermas_agent to a Public Hugging Face Space.""" |
| token = hf_token or os.getenv("HF_TOKEN") |
| if not token: |
| print("[!] Error: HF_TOKEN environment variable or parameter is missing.") |
| return False |
|
|
| api = HfApi(token=token) |
| |
| try: |
| user_info = api.whoami(token=token) |
| username = user_info['name'] |
| print(f"[+] Logged in as Hugging Face User: '{username}'") |
| except Exception as e: |
| print(f"[!] Error validating Hugging Face Token: {e}") |
| return False |
|
|
| repo_id = f"{username}/{space_name}" |
| print(f"[+] Setting up Hugging Face Space repository: '{repo_id}'...") |
|
|
| try: |
| create_repo( |
| repo_id=repo_id, |
| repo_type="space", |
| space_sdk="gradio", |
| space_hardware="cpu-basic", |
| private=False, |
| exist_ok=True, |
| token=token |
| ) |
| print(f"[+] Space repository '{repo_id}' created/verified successfully!") |
| except Exception as e: |
| print(f"[!] Note: API Repo Creation response: {e}") |
|
|
| try: |
| api.update_repo_visibility(repo_id=repo_id, private=False, repo_type="space") |
| print(f"[+] Set Space visibility to Public: '{repo_id}'") |
| except Exception as e: |
| print(f"[!] Note on visibility: {e}") |
|
|
| print(f"[+] Uploading files from '{BASE_DIR}' to Space '{repo_id}'...") |
| try: |
| upload_folder( |
| folder_path=str(BASE_DIR), |
| repo_id=repo_id, |
| repo_type="space", |
| token=token, |
| ignore_patterns=[".git*", "data/*", "__pycache__/*", "*.pyc", ".env"] |
| ) |
| print("[+] SUCCESS! Deployment completed successfully!") |
| print(f"[+] Live Space URL: https://huggingface.co/spaces/{repo_id}") |
| return True |
| except Exception as e: |
| print(f"[!] Upload error: {e}") |
| return False |
|
|
| if __name__ == "__main__": |
| token = os.getenv("HF_TOKEN") |
| space_name = sys.argv[1] if len(sys.argv) > 1 else "Demo" |
| deploy_to_hf_spaces(space_name, hf_token=token) |
|
|