26
26
zarr_key_chars = st .sampled_from (
27
27
".-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
28
28
)
29
- array_names = st .text (zarr_key_chars , min_size = 1 )
29
+ array_names = st .text (zarr_key_chars , min_size = 1 ). filter ( lambda t : t not in ( "." , ".." ))
30
30
attrs = st .none () | st .dictionaries (_attr_keys , _attr_values )
31
- paths = st .none () | st .text (zarr_key_chars , min_size = 1 ) | st .just ("/" )
31
+ paths = st .lists (st .text (zarr_key_chars , min_size = 1 ), min_size = 1 ).map (
32
+ lambda x : "/" .join (x )
33
+ ) | st .just ("/" )
32
34
np_arrays = npst .arrays (
33
35
# FIXME: re-enable timedeltas once we figure out the fill_value issue.
34
36
dtype = npst .scalar_dtypes ().filter (lambda x : x .kind != "m" ),
@@ -74,26 +76,27 @@ def arrays(
74
76
# compressor = draw(compressors)
75
77
76
78
# TODO: clean this up
77
- if path is None and name is None :
78
- array_path = None
79
- array_name = None
80
- elif path is None and name is not None :
81
- array_path = f"{ name } "
82
- array_name = f"/{ name } "
83
- elif path is not None and name is None :
84
- array_path = path
85
- array_name = None
86
- elif path == "/" :
87
- assert name is not None
88
- array_path = name
89
- array_name = "/" + name
90
- else :
91
- assert name is not None
92
- array_path = f"{ path } /{ name } "
93
- array_name = "/" + array_path
79
+ # if path is None and name is None:
80
+ # array_path = None
81
+ # array_name = None
82
+ # elif path is None and name is not None:
83
+ # array_path = f"{name}"
84
+ # array_name = f"/{name}"
85
+ # elif path is not None and name is None:
86
+ # array_path = path
87
+ # array_name = None
88
+ # elif path == "/":
89
+ # assert name is not None
90
+ # array_path = name
91
+ # array_name = "/" + name
92
+ # else:
93
+ # assert name is not None
94
+ # array_path = f"{path}/{name}"
95
+ # array_name = "/" + array_path
94
96
95
97
expected_attrs = {} if attributes is None else attributes
96
98
99
+ array_path = path + ("/" if not path .endswith ("/" ) else "" ) + name
97
100
root = Group .create (store )
98
101
a = root .create_array (
99
102
array_path ,
@@ -109,8 +112,8 @@ def arrays(
109
112
assert isinstance (a , Array )
110
113
assert nparray .shape == a .shape
111
114
# assert chunks == a.chunks # TODO: adapt for v2, v3
112
- assert array_path == a .path
113
- assert array_name == a .name
115
+ assert array_path == a .path , ( path , name , array_path , a . name , a . path )
116
+ assert array_path == a .name , ( path , name , array_path , a . name , a . path )
114
117
# assert a.basename is None # TODO
115
118
# assert a.store == normalize_store_arg(store)
116
119
assert dict (a .attrs ) == expected_attrs
0 commit comments