|
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"]) |
|
), |
|
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( |
|
[ |
|
'<p style="color:red;">I am red</p>', |
|
'<p style="color:blue;">I am blue</p>', |
|
] |
|
) |
|
), |
|
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()) |
|
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() |
|
|