@@ -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