File size: 2,258 Bytes
d868fac | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | #!/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() |