codeboosterstech's picture
Upload 9 files
9fbf50e verified
raw
history blame
2.12 kB
from huggingface_hub import HfApi, create_repo
from typing import Dict, Optional
import tempfile
import os
def deploy_to_space(
token: str,
space_name: str,
files: Dict[str, str],
username: Optional[str] = None
) -> str:
"""
Deploys the given files to a Hugging Face Space.
Returns the URL of the deployed space.
"""
if not token:
raise ValueError("Hugging Face Token is required.")
api = HfApi(token=token)
# Authenticate and get user
try:
user_info = api.whoami()
if not username:
username = user_info['name']
except Exception as e:
raise ValueError(f"Invalid Token: {str(e)}")
repo_id = f"{username}/{space_name}"
# Create Repo if not exists
try:
api.create_repo(
repo_id=repo_id,
repo_type="space",
space_sdk="gradio",
exist_ok=True,
private=False # Default to public, can be changed
)
except Exception as e:
print(f"Repo creation/check status: {e}")
# Prepare files for upload
operations = []
# Create a temporary directory to write files to upload
# Note: api.upload_file or upload_folder can be used.
# We will use upload_file loop for simplicity with in-memory strings
# Ideally we use commit_operations for atomicity but simple upload loop is fine for MVP
# Let's use upload_file content directly
try:
for filename, content in files.items():
# Convert string content to bytes
content_bytes = content.encode('utf-8')
api.upload_file(
path_or_fileobj=content_bytes,
path_in_repo=filename,
repo_id=repo_id,
repo_type="space",
commit_message=f"Update {filename} via Agent"
)
return f"https://huggingface.co/spaces/{repo_id}"
except Exception as e:
raise RuntimeError(f"Deployment Failed: {str(e)}")