Skip to content

Commit 01edfca

Browse files
committed
Strategy updates
1 parent 83a91c9 commit 01edfca

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

src/zarr/testing/stateful.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ def add_array(
141141
# self.model.rename(from_group, new_path)
142142
# self.repo.store.rename(from_group, new_path)
143143

144+
@precondition(lambda self: self.store.supports_deletes)
144145
@precondition(lambda self: len(self.all_arrays) >= 1)
145146
@rule(data=st.data())
146147
def delete_array_using_del(self, data: DataObject) -> None:
@@ -155,6 +156,7 @@ def delete_array_using_del(self, data: DataObject) -> None:
155156
del group[array_name]
156157
self.all_arrays.remove(array_path)
157158

159+
@precondition(lambda self: self.store.supports_deletes)
158160
@precondition(lambda self: len(self.all_groups) >= 2) # fixme don't delete root
159161
@rule(data=st.data())
160162
def delete_group_using_del(self, data: DataObject) -> None:
@@ -290,6 +292,10 @@ def supports_partial_writes(self) -> bool:
290292
def supports_writes(self) -> bool:
291293
return self.store.supports_writes
292294

295+
@property
296+
def supports_deletes(self) -> bool:
297+
return self.store.supports_deletes
298+
293299

294300
class ZarrStoreStateMachine(RuleBasedStateMachine):
295301
""" "
@@ -372,6 +378,7 @@ def get_partial_values(self, data: DataObject) -> None:
372378
model_vals_ls,
373379
)
374380

381+
@precondition(lambda self: self.store.supports_deletes)
375382
@precondition(lambda self: len(self.model.keys()) > 0)
376383
@rule(data=st.data())
377384
def delete(self, data: DataObject) -> None:

src/zarr/testing/strategies.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import sys
12
from typing import Any
23

34
import hypothesis.extra.numpy as npst
@@ -209,7 +210,7 @@ def basic_indices(draw: st.DrawFn, *, shape: tuple[int], **kwargs: Any) -> Any:
209210

210211

211212
def key_ranges(
212-
keys: SearchStrategy = node_names, max_size: int | None = None
213+
keys: SearchStrategy = node_names, max_size: int = sys.maxsize
213214
) -> SearchStrategy[list[int]]:
214215
"""
215216
Function to generate key_ranges strategy for get_partial_values()
@@ -218,10 +219,14 @@ def key_ranges(
218219
[(key, (range_start, range_end)),
219220
(key, (range_start, range_end)),...]
220221
"""
222+
223+
def make_request(start: int, length: int) -> RangeByteRequest:
224+
return RangeByteRequest(start, end=min(start + length, max_size))
225+
221226
byte_ranges = st.builds(
222-
RangeByteRequest,
227+
make_request,
223228
start=st.integers(min_value=0, max_value=max_size),
224-
end=st.integers(min_value=0, max_value=max_size),
229+
length=st.integers(min_value=0, max_value=max_size),
225230
)
226231
key_tuple = st.tuples(keys, byte_ranges)
227232
return st.lists(key_tuple, min_size=1, max_size=10)

0 commit comments

Comments
 (0)