| |
| 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() |
|
|