Skip to content

Commit c97497d

Browse files
authored
Merge pull request #32 from sacredvoid/fix/eval-preset-list-aliasing
fix(eval): copy preset list to prevent aliasing mutation
2 parents ab8ee12 + e48af72 commit c97497d

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

src/alignrl/eval.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ def _resolve_preset(self) -> EvalConfig:
4848
raise ValueError(
4949
f"Unknown preset {self.preset!r}. Available: {', '.join(BENCHMARK_PRESETS)}"
5050
)
51-
self.tasks = BENCHMARK_PRESETS[self.preset]
51+
self.tasks = list(BENCHMARK_PRESETS[self.preset])
5252
else:
53-
self.tasks = BENCHMARK_PRESETS["core"]
53+
self.tasks = list(BENCHMARK_PRESETS["core"])
5454
return self
5555

5656

tests/test_eval.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ def test_unknown_preset_raises(self) -> None:
4747
with pytest.raises(ValueError, match="Unknown preset"):
4848
EvalConfig(preset="nonexistent")
4949

50+
def test_preset_tasks_not_aliased_to_shared_dict(self) -> None:
51+
cfg = EvalConfig(preset="reasoning")
52+
original = list(BENCHMARK_PRESETS["reasoning"])
53+
cfg.tasks.append("should_not_leak")
54+
assert BENCHMARK_PRESETS["reasoning"] == original
55+
5056

5157
class TestParseResults:
5258
def test_parses_lm_eval_output(self) -> None:

0 commit comments

Comments
 (0)