demo / deploy_space.py
Crytonix's picture
Upload folder using huggingface_hub
4fc1d53 verified
Raw
History Blame Contribute Delete
2.26 kB
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)