Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Commit ·
f39aac5
1
Parent(s): 0bf55e2
fix: wrap mutable ColumnContent defaults in field(default_factory=...) for Python 3.13 dataclass compatibility
Browse files- 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(
|
|
|
|
|
|
|
| 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 |
-
["
|
| 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 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
|
|
|
|
|
|
| 53 |
),
|
| 54 |
]
|
| 55 |
)
|
|
@@ -57,16 +59,18 @@ def get_default_auto_eval_column_dict():
|
|
| 57 |
[
|
| 58 |
"reranking_model_link",
|
| 59 |
ColumnContent,
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
|
|
|
|
|
|
| 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,
|
| 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 = [
|
| 89 |
-
col_types = [
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 ⬆️"
|