@@ -1477,16 +1477,6 @@ Let "+" be the string concatenation operator.
14771477 perform ``erase_prefix("meta/root" + P + "/") `` and
14781478 ``erase_prefix("data/root" + P + "/") ``.
14791479
1480- Note that store implementation may decide to reify implicit groups
1481- and thus protocol implementation should attempt to erase the
1482- group metadata file if they really wish to erase an empty
1483- implicit group. @@TODO clarify this
1484-
1485- Store implementation are also allowed to erase any implicit parent of an
1486- erased implicit group, so a protocol implementation should make sure to
1487- reify a parent group if they need to keep it. @@TODO clarify this
1488-
1489-
14901480**Determine if a node exists **
14911481
14921482 To determine if a node exists at path ``P ``, try in the following
@@ -1514,6 +1504,26 @@ There are no group extensions in Zarr v3.0.
15141504
15151505See https://github.com/zarr-developers/zarr-specs/issues/49 for a list of potential extensions
15161506
1507+ Implementation Notes
1508+ ====================
1509+
1510+ This section is non-normative and is present notes from implementers about case
1511+ that need to be carefully thought about, but do not strictly fall into the spec.
1512+
1513+ Explicit vs implicit group
1514+ --------------------------
1515+
1516+ While the zarr spec v3 defined implicit and explicit group, implementation may
1517+ decide to create an explicit group for all implicit group they encounter; in
1518+ particular when using a hierarchical storage.
1519+
1520+ Erasure of an implicit group may automatically erase any empty parent. For
1521+ example on a S3 store where the namespace is flat, erasure of the last key with
1522+ a prefix will erase all the implicit group in the prefix.
1523+
1524+ Care must thus be taken when erasing a array or a group if the parent needs to
1525+ be converted into an explicit group.
1526+
15171527
15181528Comparison with Zarr v2
15191529=======================
0 commit comments