import gradio as gr from datetime import datetime import os import random import string import pandas as pd import numpy as np import matplotlib.pyplot as plt def random_plot(): start_year = 2020 x = np.arange(start_year, start_year + 5) year_count = x.shape[0] plt_format = "-" fig = plt.figure() ax = fig.add_subplot(111) series = np.arange(0, year_count, dtype=float) series = series**2 series += np.random.rand(year_count) ax.plot(x, series, plt_format) return fig images = [ "https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=387&q=80", "https://images.unsplash.com/photo-1554151228-14d9def656e4?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=386&q=80", "https://images.unsplash.com/photo-1542909168-82c3e7fdca5c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MXx8aHVtYW4lMjBmYWNlfGVufDB8fDB8fA%3D%3D&w=1000&q=80", ] file_dir = os.path.join(os.path.dirname(__file__), "..", "kitchen_sink", "files") model3d_dir = os.path.join(os.path.dirname(__file__), "..", "model3D", "files") highlighted_text_output_1 = [ { "entity": "I-LOC", "score": 0.9988978, "index": 2, "word": "Chicago", "start": 5, "end": 12, }, { "entity": "I-MISC", "score": 0.9958592, "index": 5, "word": "Pakistani", "start": 22, "end": 31, }, ] highlighted_text_output_2 = [ { "entity": "I-LOC", "score": 0.9988978, "index": 2, "word": "Chicago", "start": 5, "end": 12, }, { "entity": "I-LOC", "score": 0.9958592, "index": 5, "word": "Pakistan", "start": 22, "end": 30, }, ] highlighted_text = "Does Chicago have any Pakistani restaurants" def random_model3d(): model_3d = random.choice( [os.path.join(model3d_dir, model) for model in os.listdir(model3d_dir) if model != "source.txt"] ) return model_3d components = [ gr.Textbox(value=lambda: datetime.now(), label="Current Time"), gr.Number(value=lambda: random.random(), label="Random Percentage"), gr.Slider(minimum=0, maximum=100, randomize=True, label="Slider with randomize"), gr.Slider( minimum=0, maximum=1, value=lambda: random.random(), label="Slider with value func", ), gr.Checkbox(value=lambda: random.random() > 0.5, label="Random Checkbox"), gr.CheckboxGroup( choices=["a", "b", "c", "d"], value=lambda: random.choice(["a", "b", "c", "d"]), label="Random CheckboxGroup", ), gr.Radio( choices=list(string.ascii_lowercase), value=lambda: random.choice(string.ascii_lowercase), ), gr.Dropdown( choices=["a", "b", "c", "d", "e"], value=lambda: random.choice(["a", "b", "c"]), ), gr.Image( value=lambda: random.choice(images) ), gr.Video(value=lambda: os.path.join(file_dir, "world.mp4")), gr.Audio(value=lambda: os.path.join(file_dir, "cantina.wav")), gr.File( value=lambda: random.choice( [os.path.join(file_dir, img) for img in os.listdir(file_dir)] ) ), gr.Dataframe( value=lambda: pd.DataFrame({"random_number_rows": range(5)}, columns=["one", "two", "three"]) # type: ignore ), gr.ColorPicker(value=lambda: random.choice(["#000000", "#ff0000", "#0000FF"])), gr.Label(value=lambda: random.choice(["Pedestrian", "Car", "Cyclist"])), gr.HighlightedText( value=lambda: random.choice( [ {"text": highlighted_text, "entities": highlighted_text_output_1}, {"text": highlighted_text, "entities": highlighted_text_output_2}, ] ), ), gr.JSON(value=lambda: random.choice([{"a": 1}, {"b": 2}])), gr.HTML( value=lambda: random.choice( [ '
I am red
', 'I am blue
', ] ) ), gr.Gallery( value=lambda: images ), gr.Model3D(value=random_model3d), gr.Plot(value=random_plot), gr.Markdown(value=lambda: f"### {random.choice(['Hello', 'Hi', 'Goodbye!'])}"), ] def evaluate_values(*args): are_false = [] for a in args: if isinstance(a, (pd.DataFrame, np.ndarray)): are_false.append(not a.any().any()) # type: ignore elif isinstance(a, str) and a.startswith("#"): are_false.append(a == "#000000") else: are_false.append(not a) return all(are_false) with gr.Blocks() as demo: for i, component in enumerate(components): component.label = f"component_{str(i).zfill(2)}" component.render() clear = gr.ClearButton(value="Clear", components=components) result = gr.Textbox(label="Are all cleared?") hide = gr.Button(value="Hide") reveal = gr.Button(value="Reveal") clear_button_and_components = components + [clear] hide.click( lambda: [c.__class__(visible=False) for c in clear_button_and_components], inputs=[], outputs=clear_button_and_components ) reveal.click( lambda: [c.__class__(visible=True) for c in clear_button_and_components], inputs=[], outputs=clear_button_and_components ) get_value = gr.Button(value="Get Values") get_value.click(evaluate_values, components, result) if __name__ == "__main__": demo.launch()