File size: 1,417 Bytes
488255c 68fa4ef 4f0c957 06f147b 4f0c957 06f147b 68fa4ef 488255c 68fa4ef 488255c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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
]
|