File size: 1,801 Bytes
6cfc017
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from __future__ import annotations

import importlib.util
import os
import sys
from pathlib import Path


ROOT = Path(__file__).parent
BUILD_ROOT = ROOT / "build" / "pyc"
ASSET_ROOT = ROOT / "assets"
COMPILED_ASSET_ROOT = BUILD_ROOT / "assets"

for entry in [str(BUILD_ROOT), str(ROOT)]:
    if entry not in sys.path:
        sys.path.insert(0, entry)

if ASSET_ROOT.exists() and not COMPILED_ASSET_ROOT.exists():
    try:
        COMPILED_ASSET_ROOT.parent.mkdir(parents=True, exist_ok=True)
        COMPILED_ASSET_ROOT.symlink_to(ASSET_ROOT, target_is_directory=True)
    except OSError:
        import shutil

        shutil.copytree(ASSET_ROOT, COMPILED_ASSET_ROOT, dirs_exist_ok=True)

compiled = BUILD_ROOT / "space_app_impl.pyc"
if not compiled.exists():
    raise RuntimeError("Missing compiled HF Space runtime: build/pyc/space_app_impl.pyc")

spec = importlib.util.spec_from_file_location("space_app_impl_compiled", compiled)
if spec is None or spec.loader is None:
    raise RuntimeError("Failed to load compiled HF Space runtime.")

module = importlib.util.module_from_spec(spec)
try:
    spec.loader.exec_module(module)
except ImportError as exc:
    raise RuntimeError(
        "Failed to load compiled HF Space runtime. "
        "The published .pyc files were likely built with a different Python version or "
        "the runtime dependencies are missing. Rebuild .public-dist with Python 3.13 "
        "and ensure requirements are installed."
    ) from exc

app = getattr(module, "app", None)
demo = getattr(module, "demo", None)
if app is None:
    raise RuntimeError("Compiled HF Space runtime did not expose 'app'.")

if __name__ == "__main__":
    import uvicorn

    port = int(os.environ.get("PORT", "7860"))
    uvicorn.run(app, host="0.0.0.0", port=port, log_level="info")