import gradio as gr from chain_data import sync_chain from leaderboard import create_leaderboard, create_dropdown, create_baseline from model_demo import create_demo from submissions import create_submissions, create_duplicate_submissions_plot, DROPDOWN_OPTIONS from validator_states import create_validator_states from validator_weights import create_weights from wandb_data import sync def main(): sync_chain() sync() with gr.Blocks(css=".typewriter {font-family: 'JMH Typewriter', sans-serif;}", fill_height=True, fill_width=True) as app: with gr.Tab("Leaderboard") as leaderboard_tab: dropdown = gr.Dropdown() dropdown.attach_load_event(lambda: create_dropdown(), None) baseline_dataframe = gr.Dataframe() baseline_dataframe.attach_load_event(lambda uid: create_baseline(uid), None, inputs=[dropdown]) leaderboard_tab.select(lambda uid: create_baseline(uid), inputs=[dropdown], outputs=[baseline_dataframe]) dropdown.change(lambda uid: create_baseline(uid), inputs=[dropdown], outputs=[baseline_dataframe]) leaderboard_dataframe = gr.Dataframe() leaderboard_dataframe.attach_load_event(lambda uid: create_leaderboard(uid), None, inputs=[dropdown]) leaderboard_tab.select(lambda uid: create_leaderboard(uid), inputs=[dropdown], outputs=[leaderboard_dataframe]) dropdown.change(lambda uid: create_leaderboard(uid), inputs=[dropdown], outputs=[leaderboard_dataframe]) with gr.Tab("Validator States") as validator_states_tab: validator_states_dataframe = gr.Dataframe() validator_states_dataframe.attach_load_event(lambda: create_validator_states(), None) validator_states_tab.select(lambda: create_validator_states(), [], [validator_states_dataframe]) with gr.Tab("Validator Weights") as validator_weights_tab: include_inactive_checkbox = gr.Checkbox(False, label="Include Inactive", container=False) validator_weights_dataframe = gr.Dataframe() validator_weights_dataframe.attach_load_event(lambda include_inactive: create_weights(include_inactive), None, [include_inactive_checkbox]) validator_weights_tab.select(lambda include_inactive: create_weights(include_inactive), [include_inactive_checkbox], [validator_weights_dataframe]) include_inactive_checkbox.change(lambda include_inactive: create_weights(include_inactive), [include_inactive_checkbox], [validator_weights_dataframe]) with gr.Tab("Submissions") as submissions_tab: filter_dropdown = gr.Dropdown(choices=DROPDOWN_OPTIONS, value=DROPDOWN_OPTIONS, label="Filter", container=False, multiselect=True) submissions_dataframe = gr.Dataframe() submissions_dataframe.attach_load_event(lambda include_blacklisted: create_submissions(include_blacklisted), None, [filter_dropdown]) submissions_tab.select(lambda submission_filter: create_submissions(submission_filter), [filter_dropdown], [submissions_dataframe]) filter_dropdown.change(lambda submission_filter: create_submissions(submission_filter), [filter_dropdown], [submissions_dataframe]) duplicate_submissions_plot = gr.Plot() duplicate_submissions_plot.attach_load_event(lambda: create_duplicate_submissions_plot(), None) with gr.Tab("Model Demo"): create_demo() app.launch() if __name__ == "__main__": main()