import pandas as pd import gradio as gr from src.about import Tasks from src.display.columns import localize_dataset_leaderboard_df, localize_main_leaderboard_df from src.display.formatting import has_no_nan_values, make_clickable_model from src.display.dataset_readmes import get_dataset_readme_markdown from src.display.i18n import t from src.display.utils import AutoEvalColumn, get_dataset_metric_cols from src.leaderboard.read_evals import get_dataset_metrics_for_row, get_stored_eval_rows from src.leaderboard.sync import sync_results_from_hub def get_leaderboard_df(cols: list, benchmark_cols: list) -> pd.DataFrame: rows = get_stored_eval_rows() if not rows: return localize_main_leaderboard_df(pd.DataFrame(columns=cols)) display_rows = [{k: v for k, v in row.items() if not k.startswith("_")} for row in rows] df = pd.DataFrame.from_records(display_rows) df = df.sort_values(by=[AutoEvalColumn.average.name], ascending=False) df = df[cols].round(decimals=2) df = df[has_no_nan_values(df, benchmark_cols)] return localize_main_leaderboard_df(df) def get_dataset_leaderboard_df(task_name: str) -> pd.DataFrame: task = Tasks[task_name] task_val = task.value metric_cols = get_dataset_metric_cols(task) columns = ["model", "team"] + metric_cols sort_col = metric_cols[0] if metric_cols else None rows = get_stored_eval_rows() if not rows: return localize_dataset_leaderboard_df(pd.DataFrame(columns=columns)) dataset_rows = [] for row in rows: dataset_score = row.get("_results", {}).get(task_val.benchmark) if dataset_score is None: continue metrics = get_dataset_metrics_for_row(row, task) if not any(v is not None for v in metrics.values()): continue dataset_row = { "model": make_clickable_model(row["_model"]), "team": row[AutoEvalColumn.team.name], } for col_name, value in metrics.items(): dataset_row[col_name] = round(value, 2) if value is not None else None dataset_rows.append(dataset_row) if not dataset_rows: return localize_dataset_leaderboard_df(pd.DataFrame(columns=columns)) df = pd.DataFrame.from_records(dataset_rows, columns=columns) if sort_col: df = df.sort_values(by=sort_col, ascending=False) return localize_dataset_leaderboard_df(df.reset_index(drop=True)) def get_dataset_info_markdown(task_name: str) -> str: return get_dataset_readme_markdown(task_name) def get_empty_leaderboard_notice() -> str: return t("empty_leaderboard") def get_empty_leaderboard_notice_update(main_df: pd.DataFrame): if main_df.empty: return gr.update(value=get_empty_leaderboard_notice(), visible=True) return gr.update(value="", visible=False) def get_all_leaderboard_outputs(): """Reload main and per-dataset tables from results/.""" from src.display.utils import BENCHMARK_COLS, COLS main_df = get_leaderboard_df(COLS, BENCHMARK_COLS) dataset_dfs = [get_dataset_leaderboard_df(task.name) for task in Tasks] return (main_df, *dataset_dfs) def reload_leaderboard_tables(): """Reload all tables, syncing persisted results on HF Spaces first.""" sync_results_from_hub() outputs = get_all_leaderboard_outputs() return (*outputs, get_empty_leaderboard_notice_update(outputs[0]))