list-of-demos / app.py
hysts's picture
hysts HF staff
Update
682a2a2
raw
history blame
4.75 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)
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()