Skip to content

Commit 4ed1386

Browse files
committed
Add the ability to list tags in the list of weekly runners.
1 parent d1b03f2 commit 4ed1386

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

bench_runner/runners.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,22 @@ def get_tags(cfgpath: PathLike | None = None) -> dict[str, list[Runner]]:
130130
for tag in runner.tags:
131131
d[tag].append(runner)
132132
return dict(d)
133+
134+
135+
def get_runners_from_nicknames_and_tags(
136+
nicknames: list[str], cfgpath: PathLike | None = None
137+
) -> list[Runner]:
138+
result = []
139+
tags = get_tags(cfgpath)
140+
runners = get_runners_by_nickname(cfgpath)
141+
for nickname in nicknames:
142+
if nickname.startswith("tag "):
143+
tag = nickname.removeprefix("tag ")
144+
if tag not in tags:
145+
raise ValueError(f"Tag {tag} not found in bench_runner.toml")
146+
result.extend(tags[nickname.removeprefix("tag ")])
147+
else:
148+
if nickname not in runners:
149+
raise ValueError(f"Runner {nickname} not found in bench_runner.toml")
150+
result.append(runners[nickname])
151+
return result

bench_runner/scripts/get_merge_base.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,9 @@ def _main(
5252
if machine in ("__really_all", "all"):
5353
need_to_run = True
5454
else:
55-
if machine.startswith("tag "):
56-
tag = machine.removeprefix("tag ")
57-
tags = mrunners.get_tags()
58-
machines = [r.nickname for r in tags[tag]]
59-
else:
60-
machines = [machine]
55+
machines = [
56+
r.nickname for r in mrunners.get_runners_from_nicknames_and_tags([machine])
57+
]
6158
for m in machines:
6259
if (
6360
has_result(

bench_runner/scripts/install.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,7 @@ def generate_benchmark(dst: Any) -> Any:
215215
presented to the user.
216216
"""
217217
available_runners = [r for r in runners.get_runners() if r.available]
218-
tags = sorted(
219-
set(f"tag {g}" for r in available_runners if r.tags for g in r.tags)
220-
)
218+
tags = sorted(set(f"tag {g}" for r in available_runners if r.tags for g in r.tags))
221219
runner_choices = [
222220
*tags,
223221
*[x.name for x in available_runners],
@@ -278,12 +276,10 @@ def generate__weekly(dst: Any) -> Any:
278276
all_jobs = []
279277

280278
for name, weekly_cfg in weekly.items():
281-
for runner_nickname in weekly_cfg.get("runners", []):
282-
runner = runners.get_runner_by_nickname(runner_nickname)
283-
if runner.nickname == "unknown":
284-
raise ValueError(
285-
f"Runner {runner_nickname} not found in bench_runner.toml"
286-
)
279+
cfg_runners = runners.get_runners_from_nicknames_and_tags(
280+
weekly_cfg.get("runners", [])
281+
)
282+
for runner_nickname in cfg_runners:
287283
weekly_flags = weekly_cfg.get("flags", [])
288284
job = {
289285
"uses": "./.github/workflows/_benchmark.yml",

0 commit comments

Comments
 (0)