Skip to content

Commit 35ba251

Browse files
committed
WIP
1 parent e51185f commit 35ba251

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

src/zarr/strategies.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
zarr_key_chars = st.sampled_from(
2727
".-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
2828
)
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 (".", ".."))
3030
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("/")
3234
np_arrays = npst.arrays(
3335
# FIXME: re-enable timedeltas once we figure out the fill_value issue.
3436
dtype=npst.scalar_dtypes().filter(lambda x: x.kind != "m"),
@@ -74,26 +76,27 @@ def arrays(
7476
# compressor = draw(compressors)
7577

7678
# 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
9496

9597
expected_attrs = {} if attributes is None else attributes
9698

99+
array_path = path + ("/" if not path.endswith("/") else "") + name
97100
root = Group.create(store)
98101
a = root.create_array(
99102
array_path,
@@ -109,8 +112,8 @@ def arrays(
109112
assert isinstance(a, Array)
110113
assert nparray.shape == a.shape
111114
# 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)
114117
# assert a.basename is None # TODO
115118
# assert a.store == normalize_store_arg(store)
116119
assert dict(a.attrs) == expected_attrs

0 commit comments

Comments
 (0)