list-of-demos / app.py
hysts's picture
hysts HF staff
Migrate from yapf to black
85576c8
raw
history blame
4.04 kB
#!/usr/bin/env python
from __future__ import annotations
import gradio as gr
from constants import (
HARDWARE_CHOICES,
OWNER_CHOICES,
SDK_CHOICES,
SLEEP_TIME_CHOICES,
STATUS_CHOICES,
VISIBILITY_CHOICES,
)
from demo_list import DemoList, get_df_from_yaml
from restart_scheduler import RestartScheduler
from settings import HF_TOKEN, INTERVAL_MINUTES, SPACE_ID
demo_list = DemoList(get_df_from_yaml("list.yaml"))
if SPACE_ID is not None and INTERVAL_MINUTES > 0:
scheduler = RestartScheduler(space_id=SPACE_ID, interval_minutes=INTERVAL_MINUTES, hf_token=HF_TOKEN)
scheduler.start()
def update_status_checkboxes(choices: list[str]) -> list[str]:
if "(ALL)" in choices:
return STATUS_CHOICES
elif "(NONE)" in choices:
return []
else:
return choices
def update_hardware_checkboxes(choices: list[str]) -> list[str]:
if "(ALL)" in choices:
return HARDWARE_CHOICES
elif "(NONE)" in choices:
return []
else:
return choices
def update_sdk_checkboxes(choices: list[str]) -> list[str]:
if "(ALL)" in choices:
return SDK_CHOICES
elif "(NONE)" in choices:
return []
else:
return choices
def update_sleep_time_checkboxes(choices: list[str]) -> list[str]:
if "(ALL)" in choices:
return SLEEP_TIME_CHOICES
elif "(NONE)" in choices:
return []
else:
return choices
with gr.Blocks(css="style.css") as demo:
with gr.Accordion(label="Filter", open=False):
status = gr.CheckboxGroup(
label="Status",
choices=["(ALL)", "(NONE)"] + STATUS_CHOICES,
value=STATUS_CHOICES,
type="value",
)
hardware = gr.CheckboxGroup(
label="Hardware",
choices=["(ALL)", "(NONE)"] + HARDWARE_CHOICES,
value=HARDWARE_CHOICES,
type="value",
)
sleep_time = gr.CheckboxGroup(
label="Sleep time",
choices=["(ALL)", "(NONE)"] + SLEEP_TIME_CHOICES,
value=SLEEP_TIME_CHOICES,
type="value",
)
multiple_replicas = gr.Checkbox(label="Multiple replicas", value=False)
sdk = gr.CheckboxGroup(
label="SDK",
choices=["(ALL)", "(NONE)"] + SDK_CHOICES,
value=SDK_CHOICES,
type="value",
)
visibility = gr.CheckboxGroup(
label="Visibility",
choices=VISIBILITY_CHOICES,
value=VISIBILITY_CHOICES,
type="value",
)
owner = gr.CheckboxGroup(
label="Owner",
choices=OWNER_CHOICES,
value=OWNER_CHOICES,
type="value",
)
apply_button = gr.Button("Apply")
df = gr.Dataframe(
value=demo_list.df_prettified,
datatype=demo_list.column_datatype,
type="pandas",
interactive=False,
row_count=(0, "dynamic"),
)
status.change(
fn=update_status_checkboxes,
inputs=status,
outputs=status,
queue=False,
show_progress=False,
api_name=False,
)
hardware.change(
fn=update_hardware_checkboxes,
inputs=hardware,
outputs=hardware,
queue=False,
show_progress=False,
api_name=False,
)
sdk.change(
fn=update_sdk_checkboxes,
inputs=sdk,
outputs=sdk,
queue=False,
show_progress=False,
api_name=False,
)
sleep_time.change(
fn=update_sleep_time_checkboxes,
inputs=sleep_time,
outputs=sleep_time,
queue=False,
show_progress=False,
api_name=False,
)
apply_button.click(
fn=demo_list.filter,
inputs=[
status,
hardware,
sleep_time,
multiple_replicas,
sdk,
visibility,
owner,
],
outputs=df,
api_name=False,
)
demo.queue(api_open=False).launch()