""" Upload WorldDisasterLM-8B as a public HuggingFace Space (Gradio demo). Usage ----- # Set your HF token first: $env:HF_TOKEN = "hf_xxxxxxxxxxxxxxxxxxxx" # Then run: python scripts/upload_space.py --username YOUR_HF_USERNAME # Optionally specify a custom space name: python scripts/upload_space.py --username YOUR_HF_USERNAME --space-name WorldDisasterLM-8B Requirements ------------ pip install huggingface_hub """ from __future__ import annotations import argparse import os import sys from pathlib import Path ROOT = Path(__file__).parent.parent SPACE_DIR = ROOT / "hf_space" def parse_args() -> argparse.Namespace: p = argparse.ArgumentParser(description="Upload WorldDisasterLM-8B to HuggingFace Spaces") p.add_argument("--username", required=True, help="Your HuggingFace username") p.add_argument("--space-name", default="WorldDisasterLM-8B", help="Space repository name") p.add_argument("--private", action="store_true", help="Create as private space (default: public)") return p.parse_args() def main() -> None: args = parse_args() # Check token token = os.environ.get("HF_TOKEN") if not token: print("ERROR: HF_TOKEN environment variable is not set.") print(" Set it with: $env:HF_TOKEN = 'hf_xxxxxxxxxxxx'") sys.exit(1) try: from huggingface_hub import HfApi, create_repo except ImportError: print("ERROR: huggingface_hub not installed. Run: pip install huggingface_hub") sys.exit(1) repo_id = f"{args.username}/{args.space_name}" api = HfApi(token=token) print(f"\n{'='*60}") print(f" WorldDisasterLM-8B → HuggingFace Space") print(f" Repo : {repo_id}") print(f" Private: {args.private}") print(f"{'='*60}\n") # 1. Create the Space repo print("Step 1/3 — Creating Space repository...") create_repo( repo_id=repo_id, repo_type="space", space_sdk="gradio", private=args.private, exist_ok=True, token=token, ) print(f" ✓ Space created: https://huggingface.co/spaces/{repo_id}") # 2. Patch README.md with actual username readme_src = SPACE_DIR / "README.md" readme_text = readme_src.read_text(encoding="utf-8") readme_text = readme_text.replace("YOUR_HF_USERNAME", args.username) import tempfile, shutil tmp_dir = Path(tempfile.mkdtemp()) try: # Copy space files to temp dir with patched README shutil.copytree(str(SPACE_DIR), str(tmp_dir / "space")) (tmp_dir / "space" / "README.md").write_text(readme_text, encoding="utf-8") # 3. Upload the folder print("Step 2/3 — Uploading files...") api.upload_folder( folder_path=str(tmp_dir / "space"), repo_id=repo_id, repo_type="space", commit_message="Upload WorldDisasterLM-8B Space demo", token=token, ) print(" ✓ Files uploaded") finally: shutil.rmtree(tmp_dir, ignore_errors=True) print("\nStep 3/3 — Verifying Space...") space_info = api.space_info(repo_id=repo_id, token=token) print(f" ✓ Space status: {getattr(space_info, 'runtime', {})}") print(f"\n{'='*60}") print(f" DONE! Your Space is live at:") print(f" https://huggingface.co/spaces/{repo_id}") print(f"{'='*60}\n") if __name__ == "__main__": main()