Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/zarr/core/group.py
Original file line number Diff line number Diff line change
Expand Up @@ -573,8 +573,8 @@ def _from_bytes_v2(
v2_consolidated_metadata = json.loads(consolidated_metadata_bytes.to_bytes())
v2_consolidated_metadata = v2_consolidated_metadata["metadata"]
# We already read zattrs and zgroup. Should we ignore these?
v2_consolidated_metadata.pop(".zattrs")
v2_consolidated_metadata.pop(".zgroup")
v2_consolidated_metadata.pop(".zattrs", None)
v2_consolidated_metadata.pop(".zgroup", None)

consolidated_metadata: defaultdict[str, dict[str, Any]] = defaultdict(dict)

Expand Down
23 changes: 22 additions & 1 deletion tests/test_metadata/test_consolidated.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
open,
open_consolidated,
)
from zarr.core.buffer import default_buffer_prototype
from zarr.core.buffer import cpu, default_buffer_prototype
from zarr.core.group import ConsolidatedMetadata, GroupMetadata
from zarr.core.metadata import ArrayV3Metadata
from zarr.core.metadata.v2 import ArrayV2Metadata
Expand Down Expand Up @@ -476,6 +476,27 @@ async def test_open_consolidated_raises_async(self, zarr_format: ZarrFormat):
with pytest.raises(ValueError):
await zarr.api.asynchronous.open_consolidated(store, zarr_format=None)

@pytest.fixture
async def v2_consolidated_metadata_empty_dataset(
self, memory_store: zarr.storage.MemoryStore
) -> AsyncGroup:
zgroup_bytes = cpu.Buffer.from_bytes(json.dumps({"zarr_format": 2}).encode())
zmetadata_bytes = cpu.Buffer.from_bytes(
b'{"metadata":{".zgroup":{"zarr_format":2}},"zarr_consolidated_format":1}'
)
return AsyncGroup._from_bytes_v2(
None, zgroup_bytes, zattrs_bytes=None, consolidated_metadata_bytes=zmetadata_bytes
)

async def test_consolidated_metadata_backwards_compatibility(
self, v2_consolidated_metadata_empty_dataset
):
store = zarr.storage.MemoryStore()
await zarr.api.asynchronous.open(store=store, zarr_format=2)
await zarr.api.asynchronous.consolidate_metadata(store)
result = await zarr.api.asynchronous.open_consolidated(store, zarr_format=2)
assert result.metadata == v2_consolidated_metadata_empty_dataset.metadata

async def test_consolidated_metadata_v2(self):
store = zarr.storage.MemoryStore()
g = await AsyncGroup.from_store(store, attributes={"key": "root"}, zarr_format=2)
Expand Down
Loading