File size: 2,380 Bytes
0d1866c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
81
82
83
84
85
86
87
88
89
#!/usr/bin/env python3
from __future__ import annotations

import argparse
import os
from pathlib import Path

from huggingface_hub import HfApi


TOKEN_KEYS = [
    "HF_TOKEN",
    "HUGGINGFACE_TOKEN",
    "HUGGING_FACE_TOKEN",
    "HUGGING_FACE_HUB_TOKEN",
    "HF_API_TOKEN",
]


def resolve_token(cli_token: str | None) -> str:
    if cli_token:
        return cli_token
    for key in TOKEN_KEYS:
        value = os.environ.get(key)
        if value:
            return value
    raise SystemExit("No Hugging Face token found in environment.")


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(description="Upload the local-intelligence eval harness to a Hugging Face repo.")
    parser.add_argument("--repo-id", required=True)
    parser.add_argument("--repo-type", default="model")
    parser.add_argument("--token")
    parser.add_argument("--path-in-repo", default="eval/local_intelligence")
    parser.add_argument("--include-readme", action="store_true")
    parser.add_argument("--commit-message", default="Sync local-intelligence eval harness")
    return parser.parse_args()


def main() -> int:
    args = parse_args()
    root = Path(__file__).resolve().parents[2]
    eval_dir = Path(__file__).resolve().parent
    api = HfApi(token=resolve_token(args.token))

    api.upload_folder(
        repo_id=args.repo_id,
        repo_type=args.repo_type,
        folder_path=str(eval_dir),
        path_in_repo=args.path_in_repo,
        allow_patterns=[
            "*.py",
            "*.json",
            "*.jsonl",
            "*.md",
            "*.ipynb",
        ],
        ignore_patterns=[
            "__pycache__/*",
            "results/*",
        ],
        commit_message=args.commit_message,
    )

    api.upload_file(
        repo_id=args.repo_id,
        repo_type=args.repo_type,
        path_or_fileobj=str(root / "repo_paths.py"),
        path_in_repo="repo_paths.py",
        commit_message=args.commit_message,
    )

    if args.include_readme:
        api.upload_file(
            repo_id=args.repo_id,
            repo_type=args.repo_type,
            path_or_fileobj=str(root / "README.md"),
            path_in_repo="README.md",
            commit_message=args.commit_message,
        )

    print(f"Synced eval harness to {args.repo_id}")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())