Skip to content

Commit 15c62d4

Browse files
alvinttangalvinttangisaacbmillergreptile-apps[bot]
authored
fix: honor zero values in Dataset.reset_seeds (#9906)
* Fix Dataset.reset_seeds ignoring zero seed/size values reset_seeds used `x or self.x` to decide whether to apply each argument, so passing 0 (a valid seed or size) was treated as falsy and silently dropped, keeping the previous value instead. Use an explicit None check so 0 is honored. * Apply suggestion from @greptile-apps[bot] Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Signed-off-by: Isaac Miller <17116851+isaacbmiller@users.noreply.github.com> --------- Signed-off-by: Isaac Miller <17116851+isaacbmiller@users.noreply.github.com> Co-authored-by: alvinttang <alvin@pm.me> Co-authored-by: Isaac Miller <17116851+isaacbmiller@users.noreply.github.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
1 parent 80b118e commit 15c62d4

2 files changed

Lines changed: 31 additions & 6 deletions

File tree

‎dspy/datasets/dataset.py‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ def reset_seeds(
3939
dev_size: int | None = None,
4040
test_size: int | None = None,
4141
) -> None:
42-
self.train_size = train_size or self.train_size
43-
self.train_seed = train_seed or self.train_seed
44-
self.dev_size = dev_size or self.dev_size
45-
self.dev_seed = eval_seed or self.dev_seed
46-
self.test_size = test_size or self.test_size
47-
self.test_seed = eval_seed or self.test_seed
42+
self.train_size = train_size if train_size is not None else self.train_size
43+
self.train_seed = train_seed if train_seed is not None else self.train_seed
44+
self.dev_size = dev_size if dev_size is not None else self.dev_size
45+
self.dev_seed = eval_seed if eval_seed is not None else self.dev_seed
46+
self.test_size = test_size if test_size is not None else self.test_size
47+
self.test_seed = eval_seed if eval_seed is not None else self.test_seed
4848

4949
if hasattr(self, "_train_"):
5050
del self._train_

‎tests/datasets/test_dataset.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,31 @@ def csv_file():
3636
yield tmp_file.name
3737

3838

39+
def test_reset_seeds_accepts_zero():
40+
dataset = Dataset(train_seed=5, train_size=10, eval_seed=5, dev_size=10, test_size=10)
41+
dataset.reset_seeds(train_seed=0, train_size=0, eval_seed=0, dev_size=0, test_size=0)
42+
43+
assert dataset.train_seed == 0
44+
assert dataset.train_size == 0
45+
assert dataset.dev_seed == 0
46+
assert dataset.dev_size == 0
47+
assert dataset.test_seed == 0
48+
assert dataset.test_size == 0
49+
50+
51+
def test_reset_seeds_keeps_existing_values_when_omitted():
52+
dataset = Dataset(train_seed=5, train_size=10, eval_seed=7, dev_size=20, test_size=30)
53+
dataset.reset_seeds(train_seed=1)
54+
55+
assert dataset.train_seed == 1
56+
# Unspecified values should be left untouched.
57+
assert dataset.train_size == 10
58+
assert dataset.dev_seed == 7
59+
assert dataset.dev_size == 20
60+
assert dataset.test_seed == 7
61+
assert dataset.test_size == 30
62+
63+
3964
@pytest.mark.extra
4065
def test_input_keys(csv_file):
4166
dataset = CSVDataset(csv_file, input_keys=["content", "question"])

0 commit comments

Comments
 (0)