Spaces:
Running on Zero
Running on Zero
Download upload_binaries.py from Aniruddha7/QueryLensV2b: direct link, hf CLI and curl.
- Browser
- Download file 2.38 kB
-
https://huggingface.co/spaces/Aniruddha7/QueryLensV2b/resolve/main/upload_binaries.py
- Command line
-
hf download hf://spaces/Aniruddha7/QueryLensV2b/upload_binaries.py
-
curl -L -o upload_binaries.py https://huggingface.co/spaces/Aniruddha7/QueryLensV2b/resolve/main/upload_binaries.py
2.38 kB
| """ | |
| upload_binaries.py -- push binary files to a HF Space via the Xet backend. | |
| HF Spaces now reject binary files on plain `git push`; the supported path is | |
| `huggingface_hub` (>= 0.32 with `hf_xet`), which uploads through Xet storage. | |
| Usage: | |
| python upload_binaries.py -r OWNER/REPO -p path/in/repo.db -f local/file.db | |
| Auth: uses your cached HF token (created by `huggingface-cli login`). | |
| Skips the upload if the remote file already has identical bytes. | |
| """ | |
| import argparse | |
| import hashlib | |
| import sys | |
| from huggingface_hub import HfApi, hf_hub_download, get_token | |
| def sha256_of(path: str) -> str: | |
| h = hashlib.sha256() | |
| with open(path, "rb") as fh: | |
| for chunk in iter(lambda: fh.read(1 << 20), b""): | |
| h.update(chunk) | |
| return h.hexdigest() | |
| def main() -> int: | |
| ap = argparse.ArgumentParser() | |
| ap.add_argument("-r", "--repo", required=True, help="repo id, e.g. OWNER/SPACE") | |
| ap.add_argument("-p", "--path-in-repo", required=True) | |
| ap.add_argument("-f", "--file", required=True, help="local file to upload") | |
| args = ap.parse_args() | |
| if not get_token(): | |
| print("ERROR: no HF token cached. Run 'huggingface-cli login' (token needs write access) and retry.") | |
| return 2 | |
| api = HfApi() | |
| repo_type = "space" # this script targets Spaces ("OWNER/SPACE" ids) | |
| remote = None | |
| try: | |
| remote = hf_hub_download( | |
| repo_id=args.repo, repo_type=repo_type, filename=args.path_in_repo | |
| ) | |
| except Exception: | |
| remote = None | |
| local_hash = sha256_of(args.file) | |
| if remote is not None: | |
| try: | |
| if sha256_of(remote) == local_hash: | |
| print(f"[XET] {args.path_in_repo} already identical on {args.repo} - skipping upload") | |
| return 0 | |
| print(f"[XET] {args.path_in_repo} differs on the remote {args.repo} - uploading new revision") | |
| except OSError: | |
| pass | |
| print(f"[XET] uploading {args.path_in_repo} ({args.file}) to {args.repo} ...") | |
| api.upload_file( | |
| repo_id=args.repo, | |
| repo_type=repo_type, | |
| path_in_repo=args.path_in_repo, | |
| path_or_fileobj=args.file, | |
| commit_message=f"Add binary demo database via Xet: {args.path_in_repo}", | |
| ) | |
| print(f"[XET] uploaded OK (sha256 {local_hash[:12]}...)") | |
| return 0 | |
| if __name__ == "__main__": | |
| sys.exit(main()) | |