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
]