import gradio as gr from src.about import Tasks from src.display.i18n import t from src.display.utils import get_dataset_metric_cols from src.populate import get_dataset_info_markdown, get_dataset_leaderboard_df def _dataset_datatype(task_name: str) -> list[str]: task = Tasks[task_name] metric_cols = get_dataset_metric_cols(task) return ["markdown", "str"] + ["number"] * len(metric_cols) def build_datasets_tab() -> list[gr.components.Dataframe]: """Create the Datasets tab and return tables for live updates.""" dataset_tables: list[gr.components.Dataframe] = [] with gr.TabItem(t("tab_datasets"), elem_id="datasets-tab", id=1): with gr.Tabs(): for task in Tasks: task_name = task.name task_val = task.value with gr.TabItem(task_val.col_name): gr.Markdown( get_dataset_info_markdown(task_name), elem_classes="markdown-text", ) table = gr.Dataframe( value=get_dataset_leaderboard_df(task_name), datatype=_dataset_datatype(task_name), interactive=False, elem_id=f"dataset-leaderboard-{task_name}", ) dataset_tables.append(table) return dataset_tables