@@ -68,6 +68,9 @@ def can_add(self, path: str) -> bool:
6868 # -------------------- store operations -----------------------
6969 @rule (name = node_names , data = st .data ())
7070 def add_group (self , name : str , data : DataObject ) -> None :
71+ # Handle possible case-insensitive file systems (e.g. MacOS)
72+ if isinstance (self .store , LocalStore ):
73+ name = name .lower ()
7174 if self .all_groups :
7275 parent = data .draw (st .sampled_from (sorted (self .all_groups )), label = "Group parent" )
7376 else :
@@ -90,6 +93,9 @@ def add_array(
9093 name : str ,
9194 array_and_chunks : tuple [np .ndarray [Any , Any ], tuple [int , ...]],
9295 ) -> None :
96+ # Handle possible case-insensitive file systems (e.g. MacOS)
97+ if isinstance (self .store , LocalStore ):
98+ name = name .lower ()
9399 array , chunks = array_and_chunks
94100 fill_value = data .draw (npst .from_dtype (array .dtype ))
95101 if self .all_groups :
@@ -135,6 +141,7 @@ def add_array(
135141 # self.model.rename(from_group, new_path)
136142 # self.repo.store.rename(from_group, new_path)
137143
144+ @precondition (lambda self : self .store .supports_deletes )
138145 @precondition (lambda self : len (self .all_arrays ) >= 1 )
139146 @rule (data = st .data ())
140147 def delete_array_using_del (self , data : DataObject ) -> None :
@@ -149,6 +156,7 @@ def delete_array_using_del(self, data: DataObject) -> None:
149156 del group [array_name ]
150157 self .all_arrays .remove (array_path )
151158
159+ @precondition (lambda self : self .store .supports_deletes )
152160 @precondition (lambda self : len (self .all_groups ) >= 2 ) # fixme don't delete root
153161 @rule (data = st .data ())
154162 def delete_group_using_del (self , data : DataObject ) -> None :
@@ -284,6 +292,10 @@ def supports_partial_writes(self) -> bool:
284292 def supports_writes (self ) -> bool :
285293 return self .store .supports_writes
286294
295+ @property
296+ def supports_deletes (self ) -> bool :
297+ return self .store .supports_deletes
298+
287299
288300class ZarrStoreStateMachine (RuleBasedStateMachine ):
289301 """ "
@@ -366,6 +378,7 @@ def get_partial_values(self, data: DataObject) -> None:
366378 model_vals_ls ,
367379 )
368380
381+ @precondition (lambda self : self .store .supports_deletes )
369382 @precondition (lambda self : len (self .model .keys ()) > 0 )
370383 @rule (data = st .data ())
371384 def delete (self , data : DataObject ) -> None :
0 commit comments