fix: handle zero-length dimensions in HDFParser for zarr-python 3.2.0#977
Merged
TomNicholas merged 1 commit intozarr-developers:mainfrom Apr 22, 2026
Merged
Conversation
Zarr v3 allows `shape=(0,)` but forbids zero-length chunk dimensions, now enforced by zarr-python 3.2.0+. When falling back to `dataset.shape` for chunking, clamp each dim to a minimum of 1 so the HDFParser handles empty HDF5 datasets across all supported zarr versions.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #977 +/- ##
=======================================
Coverage 89.31% 89.31%
=======================================
Files 33 33
Lines 2031 2031
=======================================
Hits 1814 1814
Misses 217 217
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
shape=(0,)but forbids zero-length chunk dimensions, now enforced by zarr-python 3.2.0+ (see zarr-developers/zarr-python#3711).HDFParserpreviously fell back todataset.shapefor the chunk shape whendataset.chunkswasNone, producing an invalidchunk_shape=(0,)for empty HDF5 datasets.>= 1, so empty HDF5 datasets round-trip cleanly on both zarr 3.1.x and 3.2.0+.Unblocks the
test_empty_datasetfailure noted in #957.Test plan
test_empty_datasetpasses on zarr 3.1.6test_empty_datasetpasses on zarr>=3.2.0(verified that zarr acceptsshape=(0,), chunks=(1,)on both dev and released builds; full upstream-zarr test run blocked until Add compatibility with Zarr-Python 3.2.0 #957 lands and provides theRegularChunkGridMetadataimport shim)virtualizarr/tests/test_parsers/test_hdf/