Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import os | |
| import shutil | |
| import sys | |
| from pathlib import Path | |
| DEFAULT_ENV = { | |
| "REMOTE_BRAIN_ONLY": "1", | |
| "KAGGLE_AUTO_BOOTSTRAP": "0", | |
| "BRAIN_AUTO_NGROK": "0", | |
| "BRAIN_AUTO_PUBLISH_URL_ON_STARTUP": "0", | |
| "BRAIN_REUSE_PUBLIC_URL_ON_RESTART": "0", | |
| "HF_SPACE_DOCKER": "1", | |
| "KAPO_COMPUTE_PROFILE": "cpu", | |
| "HF_ACCELERATOR": "cpu", | |
| "KAPO_HF_TRANSFORMERS_RUNTIME": "1", | |
| "KAPO_LAZY_MODEL_STARTUP": "1", | |
| "KAPO_LAZY_EMBED_STARTUP": "1", | |
| "MODEL_PROFILE_ID": "hf-debugger-qwen25-7b-instruct", | |
| "MODEL_REPO": "Qwen/Qwen2.5-1.5B-Instruct", | |
| "BRAIN_ROLES": "fallback", | |
| "BRAIN_LANGUAGES": "ar,en", | |
| "BRAIN_PLATFORM_NAME": "hf_debugger_main", | |
| "BRAIN_TEMPLATE": "hf-space-cpu", | |
| "BRAIN_PROVIDER": "huggingface", | |
| "FIREBASE_ENABLED": "1", | |
| "FIREBASE_PROJECT_ID": "citadel4travels", | |
| "FIREBASE_NAMESPACE": "kapo", | |
| "BRAIN_REUSE_PUBLIC_URL_ON_RESTART": "0", | |
| } | |
| def _copy_tree(source: Path, target: Path) -> None: | |
| if target.exists(): | |
| shutil.rmtree(target, ignore_errors=True) | |
| shutil.copytree( | |
| source, | |
| target, | |
| ignore=shutil.ignore_patterns('__pycache__', '*.pyc', '.git', '.venv'), | |
| ) | |
| def _merge_overlay(overlay_root: Path, runtime_root: Path) -> None: | |
| if not overlay_root.exists(): | |
| return | |
| for path in sorted(overlay_root.rglob('*')): | |
| rel = path.relative_to(overlay_root) | |
| dst = runtime_root / rel | |
| if path.is_dir(): | |
| dst.mkdir(parents=True, exist_ok=True) | |
| continue | |
| dst.parent.mkdir(parents=True, exist_ok=True) | |
| shutil.copy2(path, dst) | |
| def main() -> None: | |
| source_root = Path(os.getenv('KAPO_SPACE_SOURCE_ROOT', '/app')).resolve() | |
| default_root = Path('/data/kapo_runtime/current') if Path('/data').exists() else Path('/tmp/kapo_runtime/current') | |
| runtime_root = Path(os.getenv('KAPO_RUNTIME_ROOT', str(default_root))).resolve() | |
| overlay_root = Path(os.getenv('KAPO_OVERLAY_ROOT', str(runtime_root.parent / 'overlay'))).resolve() | |
| runtime_pkg = runtime_root / 'brain_server' | |
| source_pkg = source_root / 'brain_server' | |
| for key, value in DEFAULT_ENV.items(): | |
| os.environ.setdefault(str(key), str(value)) | |
| space_host = str(os.getenv('SPACE_HOST', '')).strip().rstrip('/') | |
| if space_host: | |
| public_url = space_host if space_host.startswith('http://') or space_host.startswith('https://') else f'https://{space_host}' | |
| os.environ['BRAIN_PUBLIC_URL'] = public_url.rstrip('/') | |
| runtime_root.mkdir(parents=True, exist_ok=True) | |
| overlay_root.mkdir(parents=True, exist_ok=True) | |
| if not runtime_pkg.exists(): | |
| _copy_tree(source_pkg, runtime_pkg) | |
| _merge_overlay(overlay_root, runtime_root) | |
| os.environ['KAPO_RUNTIME_ROOT'] = str(runtime_root) | |
| os.environ['KAPO_SYNC_ROOT'] = str(runtime_root) | |
| os.environ['KAPO_OVERLAY_ROOT'] = str(overlay_root) | |
| port = str(os.getenv('PORT', '7860') or '7860') | |
| os.execvp( | |
| sys.executable, | |
| [ | |
| sys.executable, | |
| '-m', | |
| 'uvicorn', | |
| 'api.main:app', | |
| '--host', | |
| '0.0.0.0', | |
| '--port', | |
| port, | |
| '--app-dir', | |
| str(runtime_pkg), | |
| ], | |
| ) | |
| if __name__ == '__main__': | |
| main() | |