import argparse import os import pathlib import shutil import textwrap def copy_all_demos(source_dir: str, dest_dir: str): demos_to_copy = [ "audio_debugger", "blocks_essay", "blocks_group", "blocks_js_methods", "blocks_layout", "blocks_multiple_event_triggers", "blocks_update", "calculator", "cancel_events", "chatbot_multimodal", "chatinterface_streaming_echo", "clear_components", "code", "fake_gan", "fake_diffusion_with_gif", "file_explorer_component_events", "gradio_pdf_demo", "image_mod_default_image", "image_editor_events", "image_segmentation", "interface_random_slider", "kitchen_sink", "kitchen_sink_random", "login_with_huggingface", "matrix_transpose", "mini_leaderboard", "model3D", "native_plots", "reverse_audio", "stt_or_tts", "stream_audio", "stream_audio_out", "stream_frames", "video_component", "zip_files", ] for demo in demos_to_copy: shutil.copytree( os.path.join(source_dir, demo), os.path.join(dest_dir, demo), dirs_exist_ok=True, ) if __name__ == "__main__": parser = argparse.ArgumentParser( description="Copy all demos to all_demos and update requirements" ) parser.add_argument("gradio_version", type=str, help="Gradio") parser.add_argument("gradio_client_version", type=str, help="Gradio Client Version") args = parser.parse_args() source_dir = pathlib.Path(pathlib.Path(__file__).parent, "..", "demo") dest_dir = pathlib.Path( pathlib.Path(__file__).parent, "..", "demo", "all_demos", "demos" ) copy_all_demos(source_dir, dest_dir) reqs_file_path = pathlib.Path( pathlib.Path(__file__).parent, "..", "demo", "all_demos", "requirements.txt" ) requirements = f""" gradio_client=={args.gradio_client_version} gradio=={args.gradio_version} matplotlib pypistats==1.1.0 plotly altair vega_datasets """ pathlib.Path(reqs_file_path).write_text(textwrap.dedent(requirements))