File size: 2,299 Bytes
3e04895
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9bd7482
 
 
 
 
 
 
 
 
3e04895
 
 
 
 
 
9bd7482
2bc1c6b
3e04895
 
 
 
 
 
 
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
"""Push this repository to a public HuggingFace model repo.

Usage:
    HF_TOKEN=hf_xxx python scripts/push_hf.py [--repo tchbcb/qwenjev]

Notes:
  * the token is read from the environment or ~/.secrets - never committed;
  * the repo is created public (repo_type='model');
  * README.md is intentionally left EMPTY per the project owner's request.
"""

from __future__ import annotations

import argparse
import os
import sys
from pathlib import Path

REPO_ROOT = Path(__file__).resolve().parents[1]
DEFAULT_REPO = "tchbcb/qwenjev"


def resolve_token() -> str:
    token = os.environ.get("HF_TOKEN", "").strip()
    if token:
        return token
    for p in (Path.home() / ".secrets" / "hf_token",
              Path("/home/z/my-project/.secrets/hf_token")):
        if p.exists():
            return p.read_text().strip()
    raise SystemExit("no HF_TOKEN found (env var or ~/.secrets/hf_token)")


def main() -> None:
    ap = argparse.ArgumentParser()
    ap.add_argument("--repo", default=DEFAULT_REPO)
    args = ap.parse_args()

    from huggingface_hub import HfApi

    api = HfApi(token=resolve_token())
    me = api.whoami()
    print(f"authenticated as: {me.get('name')} (role={me.get('auth', {}).get('accessToken', {}).get('role')})")

    # never upload regenerable artifacts or secrets to the hub
    ignore_patterns = [
        ".git*", ".secrets/*", ".env", "*.token",
        "checkpoints/*", "data/traces/*", "data/dataset/*",
        "environment_files/*", "build/*", "kaggle_kernel/*",
        "__pycache__/*", "*.pyc", ".venv/*", ".pytest_cache/*",
        "*.pt", "*.parquet", "eval_report.json", ".ruff_cache/*",
    ]

    api.create_repo(repo_id=args.repo, repo_type="model", private=True,
                    exist_ok=True)  # create private first, flip to public after upload
    api.upload_folder(
        repo_id=args.repo,
        repo_type="model",
        folder_path=str(REPO_ROOT),
        ignore_patterns=ignore_patterns,
        commit_message="QwenJev v0.4.3: 25-public-games eval in-repo (run_eval incremental report, fetch_games, CPU feasibility verified)",
    )
    api.update_repo_settings(repo_id=args.repo, repo_type="model", private=False)
    print(f"public repo ready -> https://huggingface.co/{args.repo}")


if __name__ == "__main__":
    main()