import importlib import gradio as gr import os import sys import copy import pathlib demo_dir = pathlib.Path(__file__).parent / "demos" all_demos = [] for p in os.listdir("./demos"): full_dir = os.path.join(demo_dir, p) is_dir = os.path.isdir(full_dir) no_requirements = not os.path.exists(os.path.join(full_dir, "requirements.txt")) has_app = os.path.exists(os.path.join(full_dir, "run.py")) if is_dir and no_requirements and has_app: all_demos.append(p) to_exclude = ["blocks_demos", "rows_and_columns", "image_classifier_interface_load", "generate_english_german", "all_demos"] all_demos = [d for d in all_demos if d not in to_exclude] demo_module = None with gr.Blocks() as mega_demo: with gr.Tabs(): for demo_name in all_demos: with gr.TabItem(demo_name): old_path = copy.deepcopy(sys.path) sys.path = [os.path.join(demo_dir, demo_name)] + sys.path if demo_module is None: demo_module = importlib.import_module(f"run") else: demo_module = importlib.reload(demo_module) demo_module.demo sys.path = old_path mega_demo.launch()