all_demos / app.py
freddyaboulton's picture
Update app.py
5c6624f
import importlib
import gradio as gr
import os
import sys
import copy
import pathlib
os.environ["SYSTEM"] = "pretend-not-spaces"
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()