import argparse import os from huggingface_hub import HfApi def main() -> None: parser = argparse.ArgumentParser(description="Upload a folder to Hugging Face Hub") parser.add_argument("--local_dir", type=str, required=True, help="Local adapter directory, e.g. ./lora_area_1p5b") parser.add_argument("--repo_id", type=str, required=True, help="Target repo id, e.g. yourname/Qwen2.5-1.5B-MetRex-Area-LoRA") parser.add_argument("--private", action="store_true", help="Create private repo") parser.add_argument("--commit_message", type=str, default="Upload LoRA adapter") args = parser.parse_args() if not os.path.isdir(args.local_dir): raise FileNotFoundError(f"local_dir does not exist: {args.local_dir}") token = os.environ.get("HF_TOKEN") if not token: raise EnvironmentError("HF_TOKEN is not set. Export your Hugging Face token first.") api = HfApi(token=token) api.create_repo(repo_id=args.repo_id, private=args.private, exist_ok=True) api.upload_folder( repo_id=args.repo_id, folder_path=args.local_dir, commit_message=args.commit_message, ignore_patterns=["checkpoint-*", "*.log", "logs/*"], ) print(f"Upload completed: https://huggingface.co/{args.repo_id}") if __name__ == "__main__": main()