| | |
| | import argparse |
| | import os |
| | from typing import Optional |
| |
|
| | from huggingface_hub import HfApi, SpaceStorage |
| |
|
| |
|
| | def parse_args() -> argparse.Namespace: |
| | parser = argparse.ArgumentParser(description="Request (or delete) persistent storage for a Hugging Face Space.") |
| | parser.add_argument("repo_id", help="Space repository ID in the form 'username/space-name'") |
| | parser.add_argument( |
| | "--storage", |
| | "-s", |
| | choices=[e.name for e in SpaceStorage], |
| | default=SpaceStorage.SMALL.name, |
| | help="Storage tier to request (default: SMALL)", |
| | ) |
| | parser.add_argument( |
| | "--delete", |
| | action="store_true", |
| | help="Delete the Space storage instead of requesting it", |
| | ) |
| | parser.add_argument( |
| | "--token", |
| | "-t", |
| | default=None, |
| | help="Hugging Face access token (uses HF_TOKEN or HUGGINGFACE_HUB_TOKEN if not provided)", |
| | ) |
| | return parser.parse_args() |
| |
|
| |
|
| | def resolve_token(token_arg: Optional[str]) -> Optional[str]: |
| | return token_arg or os.getenv("HF_TOKEN") or os.getenv("HUGGINGFACE_HUB_TOKEN") |
| |
|
| |
|
| | def main() -> None: |
| | args = parse_args() |
| | token = resolve_token(args.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(token=token) |
| |
|
| | if args.delete: |
| | result = api.delete_space_storage(repo_id=args.repo_id) |
| | print(result) |
| | return |
| |
|
| | storage = SpaceStorage(args.storage) |
| | result = api.request_space_storage(repo_id=args.repo_id, storage=storage) |
| | print(result) |
| |
|
| |
|
| | if __name__ == "__main__": |
| | main() |
| |
|