@@ -863,12 +863,27 @@ def mock_walker_no_slash(_path):
863
863
@pytest .mark .skipif (have_fsspec is False , reason = "needs fsspec" )
864
864
class TestFSStore (StoreTests , unittest .TestCase ):
865
865
866
- def create_store (self , normalize_keys = False ):
866
+ def create_store (self , normalize_keys = False , key_separator = "." ):
867
867
path = tempfile .mkdtemp ()
868
868
atexit .register (atexit_rmtree , path )
869
- store = FSStore (path , normalize_keys = normalize_keys )
869
+ store = FSStore (
870
+ path ,
871
+ normalize_keys = normalize_keys ,
872
+ key_separator = key_separator )
870
873
return store
871
874
875
+ def test_key_separator (self ):
876
+ for x in ("." , "/" ):
877
+ store = self .create_store (key_separator = x )
878
+ norm = store ._normalize_key
879
+ assert ".zarray" == norm (".zarray" )
880
+ assert ".zarray" == norm ("/.zarray" )
881
+ assert ".zgroup" == norm ("/.zgroup" )
882
+ assert "group/.zarray" == norm ("group/.zarray" )
883
+ assert "group/.zgroup" == norm ("group/.zgroup" )
884
+ assert "group/.zarray" == norm ("/group/.zarray" )
885
+ assert "group/.zgroup" == norm ("/group/.zgroup" )
886
+
872
887
def test_complex (self ):
873
888
path1 = tempfile .mkdtemp ()
874
889
path2 = tempfile .mkdtemp ()
@@ -1183,13 +1198,27 @@ def test_filters(self):
1183
1198
@pytest .mark .skipif (have_fsspec is False , reason = "needs fsspec" )
1184
1199
class TestNestedFSStore (TestNestedDirectoryStore ):
1185
1200
1186
- def create_store (self , normalize_keys = False ):
1187
- path = tempfile .mkdtemp ()
1201
+ def create_store (self , normalize_keys = False , path = None ):
1202
+ if path is None :
1203
+ path = tempfile .mkdtemp ()
1188
1204
atexit .register (atexit_rmtree , path )
1189
1205
store = FSStore (path , normalize_keys = normalize_keys ,
1190
1206
key_separator = '/' , auto_mkdir = True )
1191
1207
return store
1192
1208
1209
+ def test_numbered_groups (self ):
1210
+ import zarr
1211
+
1212
+ # Create an array
1213
+ store = self .create_store ()
1214
+ group = zarr .group (store = store )
1215
+ arr = group .create_dataset ('0' , shape = (10 , 10 ))
1216
+ arr [1 ] = 1
1217
+
1218
+ # Read it back
1219
+ store = self .create_store (path = store .path )
1220
+ zarr .open_group (store .path )["0" ]
1221
+
1193
1222
1194
1223
class TestTempStore (StoreTests , unittest .TestCase ):
1195
1224
0 commit comments