|
|
|
|
|
""" |
|
|
Deploy Code Interpreter to HuggingFace Spaces |
|
|
""" |
|
|
|
|
|
import os |
|
|
import sys |
|
|
import json |
|
|
from huggingface_hub import HfApi |
|
|
from pathlib import Path |
|
|
|
|
|
def deploy_to_spaces(space_name=None, token=None, private=False): |
|
|
""" |
|
|
Deploy the code interpreter to HuggingFace Spaces |
|
|
""" |
|
|
|
|
|
repo_path = Path(__file__).parent |
|
|
|
|
|
|
|
|
api = HfApi() |
|
|
|
|
|
|
|
|
if token: |
|
|
print("Setting HuggingFace token...") |
|
|
os.environ["HF_TOKEN"] = token |
|
|
|
|
|
try: |
|
|
|
|
|
print(f"\nπ Deploying to HuggingFace Spaces...") |
|
|
print(f"Repository path: {repo_path}") |
|
|
print(f"Space name: {space_name or 'code-interpreter-sandbox'}") |
|
|
|
|
|
|
|
|
repo_url = api.create_repo( |
|
|
repo_id=space_name or "code-interpreter-sandbox", |
|
|
repo_type="space", |
|
|
space_sdk="docker", |
|
|
private=private, |
|
|
exist_ok=True |
|
|
) |
|
|
|
|
|
|
|
|
repo_id = f"{api.whoami()['name']}/{space_name or 'code-interpreter-sandbox'}" |
|
|
|
|
|
print(f"\nβ
Repository created: {repo_url}") |
|
|
|
|
|
|
|
|
print("\nπ€ Uploading files...") |
|
|
api.upload_folder( |
|
|
repo_id=repo_id, |
|
|
repo_type="space", |
|
|
folder_path=repo_path, |
|
|
commit_message="Initial commit: Advanced Code Interpreter Sandbox" |
|
|
) |
|
|
|
|
|
print("\nπ Deployment successful!") |
|
|
print(f"\nπ Your Space is available at:") |
|
|
print(f" https://huggingface.co/spaces/{repo_id}") |
|
|
|
|
|
print(f"\nβ³ Build status: https://huggingface.co/spaces/{repo_id}/settings") |
|
|
|
|
|
return repo_id |
|
|
|
|
|
except Exception as e: |
|
|
print(f"\nβ Deployment failed: {str(e)}") |
|
|
print(f"\nError type: {type(e).__name__}") |
|
|
|
|
|
if "401" in str(e) or "token" in str(e).lower(): |
|
|
print("\nπ‘ Tip: Make sure you have a valid HuggingFace token.") |
|
|
print(" Get one at: https://huggingface.co/settings/tokens") |
|
|
|
|
|
if "404" in str(e) or "not found" in str(e).lower(): |
|
|
print("\nπ‘ Tip: You may not have permission to create this space.") |
|
|
print(" Make sure you're logged in to the correct account.") |
|
|
|
|
|
return None |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
|
SPACE_NAME = os.environ.get("HF_SPACE_NAME", "code-interpreter-sandbox") |
|
|
TOKEN = os.environ.get("HF_TOKEN", None) |
|
|
PRIVATE = os.environ.get("HF_PRIVATE", "false").lower() == "true" |
|
|
|
|
|
|
|
|
result = deploy_to_spaces( |
|
|
space_name=SPACE_NAME, |
|
|
token=TOKEN, |
|
|
private=PRIVATE |
|
|
) |
|
|
|
|
|
if result: |
|
|
print("\n" + "="*60) |
|
|
print("β¨ DEPLOYMENT COMPLETE!") |
|
|
print("="*60) |
|
|
sys.exit(0) |
|
|
else: |
|
|
print("\n" + "="*60) |
|
|
print("β DEPLOYMENT FAILED") |
|
|
print("="*60) |
|
|
sys.exit(1) |
|
|
|