Spaces:
DLPO
/
Running on CPU Upgrade

mbok / bootstrap.py
Renecto's picture
feat: add /reset-password page
52279ac verified
#!/usr/bin/env python3
"""
Bootstrap module - Downloads ver20 from private Space.
mbok_dev / mbok-dev → DLPO/habadashi_dev
mbok (その他) → DLPO/habadashi
"""
import os
from pathlib import Path
from huggingface_hub import snapshot_download
def _resolve_repo_id() -> str:
"""SPACE_ID 環境変数から参照先 private Space の repo_id を決定する。"""
space_id = os.environ.get("SPACE_ID", "").lower()
if "mbok_dev" in space_id or "mbok-dev" in space_id:
return "DLPO/habadashi_dev"
return "DLPO/habadashi"
def get_hf_token():
"""Get HF_TOKEN from environment variable"""
token = os.environ.get("HF_TOKEN")
if not token:
print("[BOOTSTRAP_ERROR] HF_TOKEN not found in environment")
raise ValueError(
"HF_TOKEN not found. Please set HF_TOKEN environment variable "
"in HF Space Secrets to access private repository."
)
print(f"[BOOTSTRAP] HF_TOKEN found (length: {len(token)}, 末尾3文字: ...{token[-3:]})")
return token
def download_private_app(force_download: bool = False):
"""
Download ver20 application from private Space.
参照先は SPACE_ID 環境変数で決定:
mbok_dev / mbok-dev → DLPO/habadashi_dev
mbok (その他) → DLPO/habadashi
Args:
force_download: If True, re-download even if already cached
Returns:
Path: Local directory containing downloaded ver20 files
"""
repo_id = _resolve_repo_id()
repo_type = "space"
local_dir = Path("./private_app")
print(f"[BOOTSTRAP] Starting download")
print(f"[BOOTSTRAP] repo_id={repo_id} repo_type={repo_type}")
print(f"[BOOTSTRAP] local_dir={local_dir} force_download={force_download}")
print(f"[BOOTSTRAP] local_dir.exists()={local_dir.exists()}")
# Check if already downloaded (skip if exists and not forced)
if local_dir.exists() and not force_download:
# Verify essential files exist
app_py = local_dir / "app.py"
print(f"[BOOTSTRAP] Checking cache: app.py exists={app_py.exists()}")
if app_py.exists():
print(f"[BOOTSTRAP] Using cached download: {local_dir}")
# Verify structure
_verify_downloaded_structure(local_dir)
return local_dir
else:
print(f"[BOOTSTRAP] Cache invalid (app.py missing), will re-download")
print(f"[BOOTSTRAP] Starting fresh download from {repo_id}...")
try:
token = get_hf_token()
# Download entire Space repository (removed local_dir_use_symlinks - deprecated)
print(f"[BOOTSTRAP] Calling snapshot_download...")
snapshot_download(
repo_id=repo_id,
repo_type=repo_type,
local_dir=str(local_dir),
token=token,
)
print(f"[BOOTSTRAP] Download complete: {local_dir}")
# Verify essential structure
_verify_downloaded_structure(local_dir)
return local_dir
except Exception as e:
print(f"[BOOTSTRAP_ERROR] Download failed: {e}")
import traceback
print(f"[TRACEBACK]\n{traceback.format_exc()}")
raise
def _verify_downloaded_structure(local_dir: Path):
"""Verify downloaded structure has essential components"""
print(f"[BOOTSTRAP_VERIFY] Checking downloaded structure...")
essential_files = [
"app.py",
"requirements.txt",
]
essential_dirs = [
"lib",
"exec",
"core",
"presentation",
]
for file_name in essential_files:
file_path = local_dir / file_name
exists = file_path.exists()
print(f"[BOOTSTRAP_VERIFY] {file_name}: {'EXISTS' if exists else 'MISSING'}")
if not exists and file_name == "app.py":
raise FileNotFoundError(
f"Critical file missing: {file_name}. "
f"Expected at: {file_path}"
)
for dir_name in essential_dirs:
dir_path = local_dir / dir_name
exists = dir_path.exists() and dir_path.is_dir()
print(f"[BOOTSTRAP_VERIFY] {dir_name}/: {'EXISTS' if exists else 'MISSING'}")
print(f"[BOOTSTRAP_VERIFY] Verification complete")
if __name__ == "__main__":
# Test download
download_private_app()
print("🎉 Bootstrap test successful!")