""" Entrypoint for Hugging Face Spaces. Gradio looks for app.py by default. Set GROQ_API_KEY and NEON_DATABASE_URL in Space Settings → Repository secrets. """ import gradio as gr from app_gradio import build_ui, THEME, CSS demo = build_ui() # For local runs you can still do: python app.py if __name__ == "__main__": # Gradio 3.x has no theme/css in launch(); Gradio 6 does. Try ports 7860-7870 if one is in use. use_theme = hasattr(gr, "__version__") and not str(getattr(gr, "__version__", "")).startswith("3.") last_err = None for port in range(7860, 7871): try: if use_theme: demo.launch(server_name="0.0.0.0", server_port=port, theme=THEME, css=CSS) else: demo.launch(server_name="0.0.0.0", server_port=port) except TypeError: # Older Gradio: retry without theme/css use_theme = False try: demo.launch(server_name="0.0.0.0", server_port=port) except OSError as e: last_err = e if "address already in use" in str(e).lower() or "48" in str(e) or "empty port" in str(e).lower(): continue raise except OSError as e: last_err = e if "address already in use" in str(e).lower() or "48" in str(e) or "empty port" in str(e).lower(): continue raise # If launch() returns without exception, break the loop break if last_err is not None: raise OSError( "Ports 7860-7870 are in use. Stop the other Gradio process or use a different port." ) from last_err