Spaces:
Sleeping
Sleeping
| import importlib | |
| import gradio as gr | |
| import os | |
| import sys | |
| import copy | |
| import pathlib | |
| from fastapi import FastAPI, Request | |
| from fastapi.templating import Jinja2Templates | |
| import uvicorn | |
| from gradio.utils import get_space | |
| os.environ["GRADIO_ANALYTICS_ENABLED"] = "False" | |
| demo_dir = pathlib.Path(__file__).parent / "demos" | |
| app = FastAPI() | |
| templates = Jinja2Templates(directory="templates") | |
| names = sorted(os.listdir("./demos")) | |
| def index(request: Request): | |
| names = [[p[0], p[2]] for p in all_demos] | |
| return templates.TemplateResponse("index.html", {"request": request, "names": names, | |
| "initial_demo": names[0][0], "is_space": get_space()}) | |
| all_demos = [] | |
| demo_module = None | |
| for p in sorted(os.listdir("./demos")): | |
| old_path = copy.deepcopy(sys.path) | |
| sys.path = [os.path.join(demo_dir, p)] + sys.path | |
| try: # Some demos may not be runnable because of 429 timeouts, etc. | |
| if demo_module is None: | |
| demo_module = importlib.import_module(f"run") | |
| else: | |
| demo_module = importlib.reload(demo_module) | |
| all_demos.append((p, demo_module.demo.queue(), False)) | |
| except Exception as e: | |
| with gr.Blocks() as demo: | |
| gr.Markdown(f"Error loading demo: {e}") | |
| all_demos.append((p, demo, True)) | |
| for demo_name, demo, _ in all_demos: | |
| app = gr.mount_gradio_app(app, demo, f"/demo/{demo_name}") | |
| if __name__ == "__main__": | |
| uvicorn.run(app, port=7860, host="0.0.0.0") | |