|
|
|
|
|
from __future__ import annotations |
|
|
|
|
|
import argparse |
|
|
import os |
|
|
from pathlib import Path |
|
|
|
|
|
from huggingface_hub import HfApi, upload_file, upload_folder |
|
|
|
|
|
|
|
|
def main() -> None: |
|
|
p = argparse.ArgumentParser(description="Publish EdgeEDA agent to Hugging Face Hub") |
|
|
p.add_argument("--repo-id", required=True, help="Repo id, e.g. org/name or user/name") |
|
|
p.add_argument("--repo-type", default="model", choices=["model", "dataset", "space"]) |
|
|
p.add_argument("--private", action="store_true", help="Create a private repo") |
|
|
p.add_argument("--token", default=None, help="HF token (or set HF_TOKEN)") |
|
|
p.add_argument("--commit-message", default="Add EdgeEDA agent", help="Commit message") |
|
|
args = p.parse_args() |
|
|
|
|
|
token = args.token or os.environ.get("HF_TOKEN") |
|
|
if not token: |
|
|
raise SystemExit("Missing HF token. Provide --token or set HF_TOKEN.") |
|
|
|
|
|
api = HfApi(token=token) |
|
|
api.create_repo( |
|
|
repo_id=args.repo_id, |
|
|
repo_type=args.repo_type, |
|
|
private=args.private, |
|
|
exist_ok=True, |
|
|
) |
|
|
|
|
|
root = Path(__file__).resolve().parents[1] |
|
|
readme_hf = root / "README_HF.md" |
|
|
if not readme_hf.exists(): |
|
|
raise SystemExit(f"Missing {readme_hf}") |
|
|
|
|
|
upload_file( |
|
|
path_or_fileobj=str(readme_hf), |
|
|
path_in_repo="README.md", |
|
|
repo_id=args.repo_id, |
|
|
repo_type=args.repo_type, |
|
|
token=token, |
|
|
commit_message=args.commit_message, |
|
|
) |
|
|
|
|
|
allow_patterns = [ |
|
|
"src/**", |
|
|
"configs/**", |
|
|
"scripts/**", |
|
|
"docker/**", |
|
|
"LICENSE", |
|
|
"pyproject.toml", |
|
|
"setup.py", |
|
|
"requirements.txt", |
|
|
"README_RUN.md", |
|
|
"QUICK_START.md", |
|
|
"EXECUTE_IN_DOCKER.md", |
|
|
"CHANGELOG_FIXES.md", |
|
|
] |
|
|
ignore_patterns = [ |
|
|
"OpenROAD-flow-scripts/**", |
|
|
"runs/**", |
|
|
"IEEE_EdgeEDA_Agent_ISVLSI/**", |
|
|
"build/**", |
|
|
"**/__pycache__/**", |
|
|
"**/*.pyc", |
|
|
"**/*.sqlite", |
|
|
"**/*.png", |
|
|
"**/*.pdf", |
|
|
"**/*.log", |
|
|
"README.md", |
|
|
"README_HF.md", |
|
|
"UNKNOWN.egg-info/**", |
|
|
"src/edgeeda.egg-info/**", |
|
|
"*.egg-info/**", |
|
|
] |
|
|
|
|
|
upload_folder( |
|
|
folder_path=str(root), |
|
|
repo_id=args.repo_id, |
|
|
repo_type=args.repo_type, |
|
|
token=token, |
|
|
commit_message=args.commit_message, |
|
|
allow_patterns=allow_patterns, |
|
|
ignore_patterns=ignore_patterns, |
|
|
) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
main() |
|
|
|