from __future__ import annotations import os import socket import sys from pathlib import Path import os # Disable Gradio auto-reload watchdog in HF Spaces to prevent port collisions os.environ.pop("GRADIO_WATCH_DIRS", None) ROOT_DIR = Path(__file__).resolve().parent SRC_DIR = ROOT_DIR / "src" if str(SRC_DIR) not in sys.path: sys.path.insert(0, str(SRC_DIR)) os.environ.setdefault("APP_ROOT_DIR", str(ROOT_DIR)) os.environ.setdefault("DATA_DIR", str(ROOT_DIR / "data")) os.environ.setdefault("MODEL_REGISTRY_PATH", str(ROOT_DIR / "configs" / "model_registry.yaml")) os.environ.setdefault("MODEL_CACHE_DIR", str(ROOT_DIR / "models")) os.environ.setdefault("ARTIFACT_DIR", str(ROOT_DIR / "data" / "artifacts")) import shutil sqlite_src = ROOT_DIR / "data" / "sqlite" / "p1.sqlite3" sqlite_tmp = Path("/tmp/p1.sqlite3") if sqlite_src.exists() and not sqlite_tmp.exists(): shutil.copy2(sqlite_src, sqlite_tmp) os.environ.setdefault("SQLITE_PATH", str(sqlite_tmp)) from apps.p1_elder_paperwork.app import main as p1_main # noqa: E402 def _pick_port() -> int: port_env = os.environ.get("PORT") if port_env: return int(port_env) with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.bind(("127.0.0.1", 0)) return sock.getsockname()[1] def main() -> int: os.environ.setdefault("PORT", str(_pick_port())) return p1_main() if __name__ == "__main__": raise SystemExit(main())