na399's picture
Sync latest runtime changes for CPU space
68846d9 verified
"""Hugging Face Space entrypoint."""
from __future__ import annotations
import os
from pathlib import Path
import socket
import sys
ROOT = Path(__file__).resolve().parent
SRC = ROOT / "src"
if str(SRC) not in sys.path:
sys.path.insert(0, str(SRC))
from thirawat_demo.space_ui import build_demo
def _is_port_free(port: int) -> bool:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
return sock.connect_ex(("127.0.0.1", port)) != 0
def _resolve_server_port() -> int:
"""Use fixed PORT in managed environments; choose first free local port."""
port_env = os.getenv("PORT")
if port_env:
return int(port_env)
gradio_port_env = os.getenv("GRADIO_SERVER_PORT")
if gradio_port_env:
return int(gradio_port_env)
for candidate in range(7860, 7871):
if _is_port_free(candidate):
return candidate
return 7860
demo = build_demo()
if __name__ == "__main__":
port = _resolve_server_port()
print(f"Starting THIRAWAT Mapper Demo on http://127.0.0.1:{port}", flush=True)
demo.launch(server_name="0.0.0.0", server_port=port, share=False, ssr_mode=False)