DocPipe / app.py
jieluo1024
chore: update Gradio to 6.12.0 and fix HF Spaces compatibility
4345562
"""Hugging Face Spaces entry point.
HF Spaces looks for ``app.py`` at the repo root. We just import the
actual app from ``demo/`` so the demo code stays tucked away and the
root stays uncluttered.
"""
from __future__ import annotations
import importlib.util
import sys
from pathlib import Path
_REPO_ROOT = Path(__file__).resolve().parent
# Add packages to path (needed before importing demo modules)
for pkg in ("pdfsys-core", "pdfsys-router", "pdfsys-parser-mupdf", "pdfsys-bench"):
src = _REPO_ROOT / "packages" / pkg / "src"
if src.is_dir() and str(src) not in sys.path:
sys.path.insert(0, str(src))
# Add demo dir to path (needed for pipeline import)
_DEMO_DIR = _REPO_ROOT / "demo"
if str(_DEMO_DIR) not in sys.path:
sys.path.insert(0, str(_DEMO_DIR))
# Load demo app from demo/app.py using importlib to avoid name collision
_demo_module_path = _DEMO_DIR / "app.py"
spec = importlib.util.spec_from_file_location("demo_app", _demo_module_path)
_demo_module = importlib.util.module_from_spec(spec)
sys.modules["demo_app"] = _demo_module
spec.loader.exec_module(_demo_module)
demo = _demo_module.demo # noqa: F401 — re-exported for HF Spaces
if __name__ == "__main__":
import os
import gradio as gr
CSS = """
.small-num input { font-weight: 600; font-size: 1.1rem; }
footer { display: none !important; }
"""
demo.queue(max_size=8).launch(
server_name=os.environ.get("GRADIO_SERVER_NAME", "0.0.0.0"),
server_port=int(os.environ.get("GRADIO_SERVER_PORT", "7860")),
theme=gr.themes.Soft(primary_hue="emerald"),
css=CSS,
)