17
17
from zarr .abc .store import AccessMode , Store
18
18
from zarr .core .buffer import BufferPrototype , cpu , default_buffer_prototype
19
19
from zarr .store import LocalStore , ZipStore
20
- from zarr .testing .strategies import key_ranges , keys
20
+ from zarr .testing .strategies import key_ranges
21
+ from zarr .testing .strategies import keys as zarr_keys
21
22
22
23
23
24
class SyncStoreWrapper (zarr .core .sync .SyncMixin ):
@@ -105,7 +106,7 @@ class ZarrStoreStateMachine(RuleBasedStateMachine):
105
106
https://hypothesis.readthedocs.io/en/latest/stateful.html
106
107
"""
107
108
108
- def __init__ (self , store ) -> None :
109
+ def __init__ (self , store : Store ) -> None :
109
110
super ().__init__ ()
110
111
self .model : dict [str , bytes ] = {}
111
112
self .store = SyncStoreWrapper (store )
@@ -115,7 +116,7 @@ def __init__(self, store) -> None:
115
116
def init_store (self ):
116
117
self .store .clear ()
117
118
118
- @rule (key = keys , data = st .binary (min_size = 0 , max_size = 100 ))
119
+ @rule (key = zarr_keys , data = st .binary (min_size = 0 , max_size = 100 ))
119
120
def set (self , key : str , data : DataObject ) -> None :
120
121
note (f"(set) Setting { key !r} with { data } " )
121
122
assert not self .store .mode .readonly
@@ -124,7 +125,7 @@ def set(self, key: str, data: DataObject) -> None:
124
125
self .model [key ] = data_buf
125
126
126
127
@precondition (lambda self : len (self .model .keys ()) > 0 )
127
- @rule (key = keys , data = st .data ())
128
+ @rule (key = zarr_keys , data = st .data ())
128
129
def get (self , key : str , data : DataObject ) -> None :
129
130
key = data .draw (
130
131
st .sampled_from (sorted (self .model .keys ()))
@@ -134,8 +135,8 @@ def get(self, key: str, data: DataObject) -> None:
134
135
# to bytes here necessary because data_buf set to model in set()
135
136
assert self .model [key ].to_bytes () == (store_value .to_bytes ())
136
137
137
- @rule (key = keys , data = st .data ())
138
- def get_invalid_keys (self , key : str , data : DataObject ) -> None :
138
+ @rule (key = zarr_keys , data = st .data ())
139
+ def get_invalid_zarr_keys (self , key : str , data : DataObject ) -> None :
139
140
note ("(get_invalid)" )
140
141
assume (key not in self .model .keys ())
141
142
assert self .store .get (key , self .prototype ) is None
@@ -196,7 +197,7 @@ def empty(self) -> None:
196
197
# make sure they either both are or both aren't empty (same state)
197
198
assert self .store .empty () == (not self .model )
198
199
199
- @rule (key = keys )
200
+ @rule (key = zarr_keys )
200
201
def exists (self , key : str ) -> None :
201
202
note ("(exists)" )
202
203
@@ -217,13 +218,13 @@ def check_vals_equal(self) -> None:
217
218
assert self .model [key ].to_bytes () == store_item
218
219
219
220
@invariant ()
220
- def check_num_keys_equal (self ) -> None :
221
- note ("check num keys equal" )
221
+ def check_num_zarr_keys_equal (self ) -> None :
222
+ note ("check num zarr_keys equal" )
222
223
223
224
assert len (self .model ) == len (list (self .store .list ()))
224
225
225
226
@invariant ()
226
- def check_keys (self ) -> None :
227
+ def check_zarr_keys (self ) -> None :
227
228
keys = list (self .store .list ())
228
229
229
230
# NOTE: A local store can be non-empty if there are no files,
@@ -239,7 +240,7 @@ def check_keys(self) -> None:
239
240
note ("checking keys / exists / empty" )
240
241
241
242
242
- def test_zarr_hierarchy (sync_store : Store ):
243
+ def test_zarr_hierarchy (sync_store : Store ) -> None :
243
244
def mk_test_instance_sync ():
244
245
return ZarrStoreStateMachine (sync_store )
245
246
0 commit comments