Skip to content

Commit 82bc59c

Browse files
committed
add milestone definition to task.yml
1 parent 3a55db3 commit 82bc59c

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

examples/matmul_py/task.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ files:
77
- {"name": "reference.py", "source": "reference.py"}
88
- {"name": "eval.py", "source": "../eval.py"}
99

10+
milestones:
11+
- {
12+
"name": "pytorch reference",
13+
"source": "submission.py",
14+
"description": "PyTorch reference implementation as a performance baseline for matmul"
15+
}
16+
1017
lang: "py"
1118

1219
description: |

src/libkernelbot/task.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ class PythonTaskData:
2424
main: str
2525

2626

27+
@dataclasses.dataclass
28+
class MilestoneData:
29+
name: str
30+
code: str
31+
description: str = ""
32+
33+
2734
TestCaseType = Dict[str, Union[int, str]]
2835

2936

@@ -104,6 +111,7 @@ class LeaderboardDefinition:
104111
task: LeaderboardTask
105112
description: str = ""
106113
templates: dict[str, str] = dataclasses.field(default_factory=dict)
114+
milestones: list[MilestoneData] = dataclasses.field(default_factory=list)
107115

108116

109117
def make_task_definition(yaml_file: str | Path) -> LeaderboardDefinition:
@@ -131,6 +139,12 @@ def make_task_definition(yaml_file: str | Path) -> LeaderboardDefinition:
131139
else:
132140
file_dict[name] = (root / source).read_text()
133141

142+
milestones = []
143+
for milestone in raw.get("milestones", []):
144+
milestone["code"] = (root / milestone["source"]).read_text()
145+
del milestone["source"]
146+
milestones.append(MilestoneData(**milestone))
147+
134148
raw["files"] = file_dict
135149

136150
# load template files
@@ -140,10 +154,14 @@ def make_task_definition(yaml_file: str | Path) -> LeaderboardDefinition:
140154
templates[lang] = (root / source).read_text()
141155

142156
del raw["templates"]
157+
del raw["milestones"]
143158
description = raw["description"]
144159
del raw["description"]
145160
task = LeaderboardTask.from_dict(raw)
146-
return LeaderboardDefinition(task=task, templates=templates, description=description)
161+
162+
return LeaderboardDefinition(
163+
task=task, templates=templates, milestones=milestones, description=description
164+
)
147165

148166

149167
def build_task_config(

0 commit comments

Comments
 (0)