codecourt / scripts /deploy_space.py
ayussssssiiii's picture
Initial HF Space snapshot
fcb838d
"""
Deploy CodeCourt to a Hugging Face Space.
Usage:
python scripts/deploy_space.py --space-id your-username/codecourt
Auth:
Set HF_TOKEN in the environment or run `huggingface-cli login` first.
"""
import argparse
import os
import shutil
import sys
import tempfile
from pathlib import Path
from huggingface_hub import HfApi
from dotenv import load_dotenv
PROJECT_ROOT = Path(__file__).resolve().parent.parent
SPACE_APP_FILES = [
"Dockerfile",
"app.py",
"README.md",
"openenv.yaml",
"requirements.txt",
"outputs",
"dashboard",
"env",
"oracle",
"rewards",
"agents",
]
def parse_args():
parser = argparse.ArgumentParser(description="Deploy CodeCourt to Hugging Face Spaces")
parser.add_argument("--space-id", default=os.getenv("HF_SPACE_ID"))
parser.add_argument("--token", default=os.getenv("HF_TOKEN"))
parser.add_argument("--space-sdk", default="docker", choices=["static", "gradio", "streamlit", "docker"])
parser.add_argument("--private", action="store_true")
return parser.parse_args()
def copy_artifacts(staging_dir: Path) -> None:
for rel_path in SPACE_APP_FILES:
src = PROJECT_ROOT / rel_path
dst = staging_dir / rel_path
if src.is_dir():
shutil.copytree(src, dst, dirs_exist_ok=True)
elif src.is_file():
dst.parent.mkdir(parents=True, exist_ok=True)
shutil.copy2(src, dst)
def main():
load_dotenv()
args = parse_args()
if not args.space_id:
raise SystemExit("Missing --space-id or HF_SPACE_ID")
api = HfApi(token=args.token)
api.create_repo(
repo_id=args.space_id,
repo_type="space",
space_sdk=args.space_sdk,
private=args.private,
exist_ok=True,
)
with tempfile.TemporaryDirectory() as tmpdir:
staging_dir = Path(tmpdir) / "space"
staging_dir.mkdir(parents=True, exist_ok=True)
copy_artifacts(staging_dir)
api.upload_folder(
folder_path=str(staging_dir),
repo_id=args.space_id,
repo_type="space",
commit_message="Deploy CodeCourt Space",
)
print(f"Deployed to https://huggingface.co/spaces/{args.space_id}")
if __name__ == "__main__":
try:
main()
except Exception as exc:
print(f"Space deploy failed: {exc}", file=sys.stderr)
raise