from dataclasses import dataclass, make_dataclass from enum import Enum import pandas as pd from src.about import Tasks def fields(raw_class): return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"] # 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 displayed_by_default: bool hidden: bool = False never_hidden: bool = False @dataclass(frozen=True) class AutoEvalColumn: model = ColumnContent("model", "markdown", True, never_hidden=True) average = ColumnContent("average", "number", True) general = ColumnContent("general", "number", True) speaker = ColumnContent("speaker", "number", True) prosody = ColumnContent("prosody", "number", True) intelligibility = ColumnContent("intelligibility", "number", True) environment = ColumnContent("environment", "number", True) tags = ColumnContent("tags", "str", False) ## For the queue columns in the submission tab @dataclass(frozen=True) class EvalQueueColumn: # Queue column model = ColumnContent("model", "markdown", True) status = ColumnContent("status", "str", True) ## All the model information that we might need @dataclass class ModelDetails: name: str display_name: str = "" symbol: str = "" # emoji # Column selection COLS = [c.name for c in fields(AutoEvalColumn) if not c.hidden] EVAL_COLS = [c.name for c in fields(EvalQueueColumn)] EVAL_TYPES = [c.type for c in fields(EvalQueueColumn)] BENCHMARK_COLS = ["general", "speaker", "prosody", "intelligibility", "environment"]