File size: 1,471 Bytes
7bacdbf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
#!/usr/bin/env python3
"""Push the app and a built data directory to the Space, replacing old data.

    python hf_space_demo/tools/publish.py --data-dir hf_space_demo/data [--public]
"""

from __future__ import annotations

import argparse
from pathlib import Path

from huggingface_hub import HfApi

HERE = Path(__file__).resolve().parents[1]


def main() -> None:
    ap = argparse.ArgumentParser()
    ap.add_argument("--data-dir", required=True)
    ap.add_argument("--space", default="code2lora/code2lora-gru-demo")
    ap.add_argument("--public", action="store_true")
    args = ap.parse_args()

    data = Path(args.data_dir)
    if not (data / "index.json").exists():
        raise SystemExit(f"{data}/index.json not found; run build_space_data.py first")

    api = HfApi()
    api.upload_folder(repo_id=args.space, repo_type="space", folder_path=str(HERE),
                      ignore_patterns=["data/*", "**/__pycache__/*", "*.pyc"],
                      commit_message="Update app")
    api.upload_folder(repo_id=args.space, repo_type="space", folder_path=str(data),
                      path_in_repo="data", delete_patterns=["*"],
                      commit_message="Precomputed GRU states and cached predictions")
    if args.public:
        api.update_repo_settings(args.space, repo_type="space", private=False)
    print(f"https://huggingface.co/spaces/{args.space}", api.get_space_runtime(args.space).stage)


if __name__ == "__main__":
    main()