Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| import argparse | |
| import os | |
| from huggingface_hub import HfApi | |
| def parse_args() -> argparse.Namespace: | |
| parser = argparse.ArgumentParser( | |
| description="Upload a local folder to a Hugging Face Space, respecting .gitignore and showing progress." | |
| ) | |
| parser.add_argument("repo_id", help="Space repository ID in the form 'username/space-name'") | |
| parser.add_argument( | |
| "--folder-path", "-f", default=".", help="Local folder path to upload (default: current directory)" | |
| ) | |
| parser.add_argument("--path-in-repo", "-p", default="", help="Target path in the repository (default: root)") | |
| parser.add_argument( | |
| "--commit-message", "-m", default="Upload folder via script", help="Commit message for the upload" | |
| ) | |
| parser.add_argument( | |
| "--token", | |
| "-t", | |
| default=None, | |
| help=( | |
| "Hugging Face access token (will use HF_TOKEN or HUGGINGFACE_HUB_TOKEN from environment if not provided)" | |
| ), | |
| ) | |
| parser.add_argument("--large", action="store_true", help="Use upload_large_folder for large uploads") | |
| return parser.parse_args() | |
| def main() -> None: | |
| args = parse_args() | |
| # Determine token from argument or environment | |
| token = args.token or os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") | |
| if not token: | |
| print( | |
| "Warning: No token provided via --token or environment variable. " | |
| "Please set HF_TOKEN/HUGGINGFACE_HUB_TOKEN or run `huggingface-cli login`." | |
| ) | |
| api = HfApi() | |
| if args.large: | |
| api.upload_large_folder( | |
| folder_path=args.folder_path, repo_id=args.repo_id, repo_type="space", print_report=True | |
| ) | |
| else: | |
| api.upload_folder( | |
| folder_path=args.folder_path, | |
| path_in_repo=args.path_in_repo, | |
| repo_id=args.repo_id, | |
| repo_type="space", | |
| token=token, | |
| commit_message=args.commit_message, | |
| ) | |
| print(f"Successfully uploaded '{args.folder_path}' to '{args.repo_id}'.") | |
| if __name__ == "__main__": | |
| main() | |