from dataclasses import dataclass # These classes are for user facing column names, to avoid having to change them # all around the code when a modif is needed @dataclass class ColumnContent: name: str type: str def fields(raw_class): return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"] @dataclass(frozen=True) class AutoEvalColumn: # Auto evals column model = ColumnContent("Model", "markdown") avg_wer = ColumnContent("Average WER ⬇️ ", "markdown") rtf = ColumnContent("RTFx ⬆️ ", "markdown") ami_wer = ColumnContent("AMI", "markdown") e22_wer = ColumnContent("Earnings22", "markdown") gs_wer = ColumnContent("Gigaspeech", "markdown") lsc_wer = ColumnContent("LS Clean", "markdown") lso_wer = ColumnContent("LS Other", "markdown") ss_wer = ColumnContent("SPGISpeech", "markdown") tl_wer = ColumnContent("Tedlium", "markdown") # vp_wer = ColumnContent("Voxpopuli", "markdown") def make_clickable_model(model_name): link = f"https://huggingface.co/{model_name}" return f'{model_name}' def styled_error(error): return f"

{error}

" def styled_warning(warn): return f"

{warn}

" def styled_message(message): return f"

{message}

" def make_best_bold(column, column_name): if column_name == "RTFx ⬆️ ": best_value = column.max() else: best_value = column.min() return column.apply(lambda x: f'#### {float(x):.2f}' if x == best_value else f"{x:.2f}")