Skip to content

Commit 9b23137

Browse files
committed
remove dependency on AsyncGroup
1 parent f59aaf4 commit 9b23137

File tree

1 file changed

+17
-23
lines changed
  • src/zarr/core/metadata

1 file changed

+17
-23
lines changed

src/zarr/core/metadata/io.py

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,35 +10,25 @@
1010

1111
if TYPE_CHECKING:
1212
from zarr.core.common import ZarrFormat
13-
from zarr.core.group import AsyncGroup, GroupMetadata
13+
from zarr.core.group import GroupMetadata
1414
from zarr.core.metadata import ArrayMetadata
1515

1616

17-
def _build_parents(store_path: StorePath, zarr_format: ZarrFormat) -> list[AsyncGroup]:
18-
from zarr.core.group import AsyncGroup, GroupMetadata
17+
def _build_parents(store_path: StorePath, zarr_format: ZarrFormat) -> dict[str, GroupMetadata]:
18+
from zarr.core.group import GroupMetadata
1919

20-
store = store_path.store
2120
path = store_path.path
2221
if not path:
23-
return []
22+
return {}
2423

2524
required_parts = path.split("/")[:-1]
26-
parents = [
27-
# the root group
28-
AsyncGroup(
29-
metadata=GroupMetadata(zarr_format=zarr_format),
30-
store_path=StorePath(store=store, path=""),
31-
)
32-
]
25+
26+
# the root group
27+
parents = {"": GroupMetadata(zarr_format=zarr_format)}
3328

3429
for i, part in enumerate(required_parts):
35-
p = "/".join(required_parts[:i] + [part])
36-
parents.append(
37-
AsyncGroup(
38-
metadata=GroupMetadata(zarr_format=zarr_format),
39-
store_path=StorePath(store=store, path=p),
40-
)
41-
)
30+
parent_path = "/".join(required_parts[:i] + [part])
31+
parents[parent_path] = GroupMetadata(zarr_format=zarr_format)
4232

4333
return parents
4434

@@ -69,15 +59,19 @@ async def save_metadata(
6959
parents = _build_parents(store_path, metadata.zarr_format)
7060
ensure_array_awaitables = []
7161

72-
for parent in parents:
62+
for parent_path, parent_metadata in parents.items():
63+
parent_store_path = StorePath(store_path.store, parent_path)
64+
7365
# Error if an array already exists at any parent location. Only groups can have child nodes.
7466
ensure_array_awaitables.append(
75-
ensure_no_existing_node(parent.store_path, metadata.zarr_format, node_type="array")
67+
ensure_no_existing_node(
68+
parent_store_path, parent_metadata.zarr_format, node_type="array"
69+
)
7670
)
7771
set_awaitables.extend(
7872
[
79-
(parent.store_path / key).set_if_not_exists(value)
80-
for key, value in parent.metadata.to_buffer_dict(
73+
(parent_store_path / key).set_if_not_exists(value)
74+
for key, value in parent_metadata.to_buffer_dict(
8175
default_buffer_prototype()
8276
).items()
8377
]

0 commit comments

Comments
 (0)