Spaces:
AIR-Bench
/
Running on CPU Upgrade

hanhainebula commited on
Commit
f39aac5
·
1 Parent(s): 0bf55e2

fix: wrap mutable ColumnContent defaults in field(default_factory=...) for Python 3.13 dataclass compatibility

Browse files
Files changed (1) hide show
  1. src/columns.py +35 -26
src/columns.py CHANGED
@@ -1,8 +1,4 @@
1
- from dataclasses import dataclass, make_dataclass
2
-
3
-
4
- def _fields(raw_class):
5
- return [v for k, v in raw_class.__dict__.items() if k[:2] != "__" and k[-2:] != "__"]
6
 
7
 
8
  # These classes are for user facing column names,
@@ -19,37 +15,43 @@ class ColumnContent:
19
 
20
  def get_default_auto_eval_column_dict():
21
  auto_eval_column_dict = []
22
- auto_eval_column_dict.append(["rank", ColumnContent, ColumnContent(COL_NAME_RANK, "number", True)])
 
 
23
  auto_eval_column_dict.append(
24
  [
25
  "retrieval_model",
26
  ColumnContent,
27
- ColumnContent(COL_NAME_RETRIEVAL_MODEL, "markdown", True, never_hidden=True),
28
  ]
29
  )
30
  auto_eval_column_dict.append(
31
  [
32
  "reranking_model",
33
  ColumnContent,
34
- ColumnContent(COL_NAME_RERANKING_MODEL, "markdown", True, never_hidden=True),
35
  ]
36
  )
37
  auto_eval_column_dict.append(
38
- ["revision", ColumnContent, ColumnContent(COL_NAME_REVISION, "markdown", True, never_hidden=True)]
 
 
 
39
  )
40
  auto_eval_column_dict.append(
41
- ["timestamp", ColumnContent, ColumnContent(COL_NAME_TIMESTAMP, "date", True, never_hidden=True)]
42
  )
43
- auto_eval_column_dict.append(["average", ColumnContent, ColumnContent(COL_NAME_AVG, "number", True)])
44
  auto_eval_column_dict.append(
45
  [
46
  "retrieval_model_link",
47
  ColumnContent,
48
- ColumnContent(
49
- COL_NAME_RETRIEVAL_MODEL_LINK,
50
- "markdown",
51
- False,
52
- hidden=True,
 
 
53
  ),
54
  ]
55
  )
@@ -57,16 +59,18 @@ def get_default_auto_eval_column_dict():
57
  [
58
  "reranking_model_link",
59
  ColumnContent,
60
- ColumnContent(
61
- COL_NAME_RERANKING_MODEL_LINK,
62
- "markdown",
63
- False,
64
- hidden=True,
 
 
65
  ),
66
  ]
67
  )
68
  auto_eval_column_dict.append(
69
- ["is_anonymous", ColumnContent, ColumnContent(COL_NAME_IS_ANONYMOUS, "bool", False, hidden=True)]
70
  )
71
  return auto_eval_column_dict
72
 
@@ -76,7 +80,7 @@ def make_autoevalcolumn(cls_name, benchmarks):
76
  # Leaderboard columns
77
  for benchmark in list(benchmarks.value):
78
  auto_eval_column_dict.append(
79
- [benchmark.name, ColumnContent, ColumnContent(benchmark.value.col_name, "number", True)]
80
  )
81
 
82
  # We use make dataclass to dynamically fill the scores from Tasks
@@ -85,14 +89,19 @@ def make_autoevalcolumn(cls_name, benchmarks):
85
 
86
  def get_default_col_names_and_types(benchmarks):
87
  AutoEvalColumn = make_autoevalcolumn("AutoEvalColumn", benchmarks)
88
- col_names = [c.name for c in _fields(AutoEvalColumn) if not c.hidden]
89
- col_types = [c.type for c in _fields(AutoEvalColumn) if not c.hidden]
 
 
 
 
 
90
  return col_names, col_types
91
 
92
 
93
  def get_fixed_col_names_and_types():
94
  fixed_cols = get_default_auto_eval_column_dict()[:-3]
95
- return [c.name for _, _, c in fixed_cols], [c.type for _, _, c in fixed_cols]
96
 
97
 
98
  COL_NAME_AVG = "Average ⬆️"
 
1
+ from dataclasses import dataclass, field, make_dataclass
 
 
 
 
2
 
3
 
4
  # These classes are for user facing column names,
 
15
 
16
  def get_default_auto_eval_column_dict():
17
  auto_eval_column_dict = []
18
+ auto_eval_column_dict.append(
19
+ ["rank", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_RANK, "number", True))]
20
+ )
21
  auto_eval_column_dict.append(
22
  [
23
  "retrieval_model",
24
  ColumnContent,
25
+ field(default_factory=lambda: ColumnContent(COL_NAME_RETRIEVAL_MODEL, "markdown", True, never_hidden=True)),
26
  ]
27
  )
28
  auto_eval_column_dict.append(
29
  [
30
  "reranking_model",
31
  ColumnContent,
32
+ field(default_factory=lambda: ColumnContent(COL_NAME_RERANKING_MODEL, "markdown", True, never_hidden=True)),
33
  ]
34
  )
35
  auto_eval_column_dict.append(
36
+ ["revision", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_REVISION, "markdown", True, never_hidden=True))]
37
+ )
38
+ auto_eval_column_dict.append(
39
+ ["timestamp", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_TIMESTAMP, "date", True, never_hidden=True))]
40
  )
41
  auto_eval_column_dict.append(
42
+ ["average", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_AVG, "number", True))]
43
  )
 
44
  auto_eval_column_dict.append(
45
  [
46
  "retrieval_model_link",
47
  ColumnContent,
48
+ field(
49
+ default_factory=lambda: ColumnContent(
50
+ COL_NAME_RETRIEVAL_MODEL_LINK,
51
+ "markdown",
52
+ False,
53
+ hidden=True,
54
+ )
55
  ),
56
  ]
57
  )
 
59
  [
60
  "reranking_model_link",
61
  ColumnContent,
62
+ field(
63
+ default_factory=lambda: ColumnContent(
64
+ COL_NAME_RERANKING_MODEL_LINK,
65
+ "markdown",
66
+ False,
67
+ hidden=True,
68
+ )
69
  ),
70
  ]
71
  )
72
  auto_eval_column_dict.append(
73
+ ["is_anonymous", ColumnContent, field(default_factory=lambda: ColumnContent(COL_NAME_IS_ANONYMOUS, "bool", False, hidden=True))]
74
  )
75
  return auto_eval_column_dict
76
 
 
80
  # Leaderboard columns
81
  for benchmark in list(benchmarks.value):
82
  auto_eval_column_dict.append(
83
+ [benchmark.name, ColumnContent, field(default_factory=lambda b=benchmark: ColumnContent(b.value.col_name, "number", True))]
84
  )
85
 
86
  # We use make dataclass to dynamically fill the scores from Tasks
 
89
 
90
  def get_default_col_names_and_types(benchmarks):
91
  AutoEvalColumn = make_autoevalcolumn("AutoEvalColumn", benchmarks)
92
+ col_names = []
93
+ col_types = []
94
+ for f in AutoEvalColumn.__dataclass_fields__.values():
95
+ col = f.default_factory()
96
+ if not col.hidden:
97
+ col_names.append(col.name)
98
+ col_types.append(col.type)
99
  return col_names, col_types
100
 
101
 
102
  def get_fixed_col_names_and_types():
103
  fixed_cols = get_default_auto_eval_column_dict()[:-3]
104
+ return [c.default_factory().name for _, _, c in fixed_cols], [c.default_factory().type for _, _, c in fixed_cols]
105
 
106
 
107
  COL_NAME_AVG = "Average ⬆️"