| """Hugging Face Spaces launcher for the GCMD classifier MVP.""" |
|
|
| import os |
| import sys |
| from pathlib import Path |
|
|
| SRC_PATH = Path(__file__).resolve().parent / "src" |
| if SRC_PATH.exists() and str(SRC_PATH) not in sys.path: |
| sys.path.insert(0, str(SRC_PATH)) |
|
|
| try: |
| import spaces |
| except ImportError: |
|
|
| class _SpacesFallback: |
| @staticmethod |
| def GPU(function=None): |
| if function is None: |
| return lambda inner_function: inner_function |
| return function |
|
|
| spaces = _SpacesFallback() |
|
|
| from gcmd_classifier.ui.gradio_app import GRADIO_CSS, create_demo |
|
|
|
|
| @spaces.GPU |
| def _zerogpu_startup_probe() -> str: |
| """No-op ZeroGPU startup probe for Hugging Face Spaces detection.""" |
| return "ok" |
|
|
|
|
| demo = create_demo() |
|
|
|
|
| def gradio_server_name() -> str: |
| """Return the configured Gradio bind host for local and Spaces runtime.""" |
| return os.environ.get("GRADIO_SERVER_NAME", "0.0.0.0") |
|
|
|
|
| def gradio_server_port() -> int: |
| """Return the configured Gradio bind port for local and Spaces runtime.""" |
| return int(os.environ.get("GRADIO_SERVER_PORT", "7860")) |
|
|
|
|
| def launch() -> None: |
| """Launch the Gradio demo with Hugging Face compatible server settings.""" |
| demo.queue().launch( |
| css=GRADIO_CSS, |
| server_name=gradio_server_name(), |
| server_port=gradio_server_port(), |
| share=False, |
| prevent_thread_lock=False, |
| ) |
|
|
|
|
| if __name__ == "__main__": |
| launch() |
|
|