Antoine1091's picture
Update src/display/utils.py
488255c verified
from dataclasses import dataclass, make_dataclass, field, MISSING
def fields(raw_class):
return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"]
@dataclass
class ColumnContent:
name: str
type: str
displayed_by_default: bool
hidden: bool = False
never_hidden: bool = False
def cc(name: str, typ: str, displayed: bool, hidden: bool = False, never_hidden: bool = False):
# helper that returns a dataclasses Field with a default_factory
return field(default_factory=lambda: ColumnContent(name, typ, displayed, hidden, never_hidden))
auto_eval_column_dict = [
("eval_name", ColumnContent, cc("Eval Name", "str", True)),
("result_name", ColumnContent, cc("Result Name", "str", False)),
("date", ColumnContent, cc("Submission Date", "str", True)),
("miou", ColumnContent, cc("mIoU ⬆️", "number", True)),
("accuracy", ColumnContent, cc("Accuracy ⬆️", "number", False)),
]
AutoEvalColumn = make_dataclass("AutoEvalColumn", auto_eval_column_dict, frozen=True)
def col(field_name: str) -> ColumnContent:
f = AutoEvalColumn.__dataclass_fields__[field_name]
if f.default is not MISSING:
return f.default
return f.default_factory()
COLS = [
col(fname).name
for fname in AutoEvalColumn.__dataclass_fields__.keys()
if not col(fname).hidden
]