What's Changed
- Allow s3 testing in face of ambient AWS credentials by @chuckwondo in #3947
- ci: run all of xarray's tests in downstream workflow by @maxrjones in #3940
- chore(deps): bump the actions group across 1 directory with 12 updates by @dependabot[bot] in #3930
- chore: update pre-commit hooks by @pre-commit-ci[bot] in #3943
- chore(zarr-metadata): bump version to 0.1.1 by @d-v-b in #3949
- refactor: simplify internal chunk representation by @d-v-b in #3899
- Fix V3 time types by @chuckwondo in #3955
- chore: fix ability to run mypy via hatch by @chuckwondo in #3952
- Fix minor typos by @kabilar in #3957
- chore(deps): bump the actions group with 5 updates by @dependabot[bot] in #3951
- deprecate blosc enums by @d-v-b in #3963
- BUG: Fix empty Group nodes lacking a "consolidated_metadata" field by @TomAugspurger in #3967
- fix(zarr-metadata): model stored metadata more closely by @d-v-b in #3962
- fix: allow writing to 0-dimensional arrays with sharding by @NIK-TIGER-BILL in #3966
- chore(deps): bump the actions group with 2 updates by @dependabot[bot] in #3970
- chore: run mypy from developer environment by @d-v-b in #3972
- feat:get_ranges by @d-v-b in #3925
- chore: remove warning on fixed length utf32 by @d-v-b in #3979
- misc(zarr-metadata): typed constants and fixes by @d-v-b in #3978
- chore: cd workflow by @d-v-b in #3935
- perf: cache default ArraySpec for regular chunk grids by @d-v-b in #3908
- refactor(sharding): store chunks_per_shard explicitly in _ShardIndex by @d-v-b in #3975
- docs: update link to developer chat by @d-v-b in #3980
- feat(zarr-metadata): partial metadata types by @d-v-b in #3982
- chore(zarr-metadata): set up a changelog by @d-v-b in #3981
- Optimize partial shard reads by @aldenks in #3004
- Do not install CuPy on darwin by @chuckwondo in #3988
- chore(zarr-metadata): prepare for 0.2.0 release by @d-v-b in #3986
- Widen ChunksLike type alias by @chuckwondo in #3990
- fix: match v* when extracting a zarr version from git tags by @d-v-b in #3994
- feat: subchunk write order by @ilan-gold in #3826
- prune old string dtype class by @d-v-b in #3973
- fix: compare metadata objects by JSON form by @d-v-b in #3999
- Run doctests via pytest and fix broken doctests. by @chuckwondo in #4000
- fix(FsspecStore): close owned async filesystem on store.close() by @josh-ag2 in #4003
- chore(deps): bump the actions group across 1 directory with 8 updates by @dependabot[bot] in #4014
- fix: use hatch's
defaultenv so the uv installer is inherited by @lhoupert in #4023 - chore: update pre-commit hooks by @pre-commit-ci[bot] in #4024
- docs: test more code snippets in docs by @d-v-b in #4018
- chore(deps-dev): bump uv from 0.11.14 to 0.11.15 in the uv group across 1 directory by @dependabot[bot] in #4019
- refactor: remove random subchunk ordering by @d-v-b in #4011
- fix: make xarray downstream tests work by @d-v-b in #4043
- test: add property tests for block and mask indexing by @maxrjones in #4054
- refactor: use backported sentinel type by @d-v-b in #4046
- chore(deps): bump aiohttp from 3.13.5 to 3.14.0 in the uv group across 1 directory by @dependabot[bot] in #4031
- Revert "fix: make xarray downstream tests work" by @d-v-b in #4047
- chore: indexing test cleanup by @d-v-b in #4001
- refactor/consolidated JSON IO routines by @d-v-b in #3998
- chore(deps): bump the actions group with 3 updates by @dependabot[bot] in #4058
- Modify custom dtype example to use only public API by @chuckwondo in #4052
- fix: copy attributes passed from the user to avoid mutation by @stibrew in #4060
- docs: add core-developer self-merge policy by @maxrjones in #4053
- fix![zarr-metadata]: define JSONValue type, and narrow object annotations to use JSONValue by @d-v-b in #4037
- perf: cache lexicographic chunk coords in sharding codec by @d-v-b in #4012
- deprecate more enums by @d-v-b in #3968
- fix: update OSPO action references to canonical org path by @zkoppert in #3856
- chore(deps): bump tornado from 6.5.5 to 6.5.6 in the uv group across 1 directory by @dependabot[bot] in #4062
- harden developer environment by @d-v-b in #4066
- chore(deps): bump codecov/codecov-action from 6.0.1 to 7.0.0 in the actions group by @dependabot[bot] in #4071
- chore(deps): bump the python-dependencies group with 14 updates by @dependabot[bot] in #4072
- chore(deps): bump tornado from 6.5.6 to 6.5.7 by @dependabot[bot] in #4067
- chore(deps): bump cryptography from 48.0.0 to 48.0.1 by @dependabot[bot] in #4070
- chore(deps): bump aiohttp from 3.14.0 to 3.14.1 by @dependabot[bot] in #4069
- Claude/storage codec bugfixes by @d-v-b in #4074
- chore(deps): bump bleach from 6.3.0 to 6.4.0 by @dependabot[bot] in #4081
- Control sharding codec read coalescing with ArrayConfig and runtime config options by @aldenks in #3987
- chore(deps-dev): bump the python-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #4080
- allow roundtripping the
BytesCodecby @keewis in #3417 - feat![zarr-metadata]: extensive top-level exports by @d-v-b in #4083
- zarr metadata 0.3.0 by @d-v-b in #4084
- Claude/py312 modernizations by @d-v-b in #4087
- chore(deps): bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the actions group by @dependabot[bot] in #4079
- chore: add rectilinear hypothesis block indexing tests by @maxrjones in #4075
- chore(deps): bump pydantic-settings from 2.14.1 to 2.14.2 by @dependabot[bot] in #4089
- chore: dependabot only updates direct dependencies by @d-v-b in #4090
- chore(deps): bump msgpack from 1.1.2 to 1.2.1 by @dependabot[bot] in #4088
- test: pytest cleanups / modernization by @d-v-b in #4093
- fix(testing): correct delete_dir prefix matching in stateful tests by @NIK-TIGER-BILL in #4002
- chore(deps): bump the actions group with 3 updates by @dependabot[bot] in #4097
- Remove struct unstable warning by @d-v-b in #4100
- chore: test correctness fixes by @d-v-b in #4094
- Fix save/load for scalar arrays by @gaoflow in #4103
- docs: add reviewer guidance and author attestation to PR template by @maxrjones in #4106
- docs: document zarr.errors changes in the v3 migration guide by @NIK-TIGER-BILL in #4110
- refactor(testing): call super().init in LatencyStore by @maxrjones in #4102
- Claude/internal simplifications by @d-v-b in #4105
- Fix minor documentation issues by @DimitriPapadopoulos in #4120
- fix: keep element order when writing F-contiguous chunks with vlen codecs by @oldrobotdev in #4116
- test: consolidate vlen F-contiguous regression tests by @d-v-b in #4122
- chore(deps): bump the actions group with 5 updates by @dependabot[bot] in #4114
- chore(deps): bump joserfc from 1.6.5 to 1.6.8 by @dependabot[bot] in #4123
- chore: update pre-commit hooks by @pre-commit-ci[bot] in #4125
- Remove broken badge by @DimitriPapadopoulos in #4121
- docs: fix CacheStore max_age_seconds docstring default by @d-v-b in #4133
- chore(deps): bump the actions group with 3 updates by @dependabot[bot] in #4135
- ci: stop dependabot updates targeting support/v2 by @d-v-b in #4136
- docs: fix errors and improve consistency across the documentation by @d-v-b in #4132
- test: pass a list, not a generator, to parametrize in test_docs by @d-v-b in #4138
- docs: clarify difference between load and open in docstrings by @SAY-5 in #3984
- chore(deps): bump the python-dependencies group across 1 directory with 13 updates by @dependabot[bot] in #4137
- test: bind moto server to an ephemeral port to fix xdist deadlock by @d-v-b in #4139
- test: enable pytest strict mode, fix duplicate parametrization ids, and add 10m timeout to individual tests by @d-v-b in #4140
- perf: use sync methods for chunk encoding / decoding by @d-v-b in #3885
- test: ignore Python 3.15 fork-with-threads DeprecationWarning in test_multiprocessing by @d-v-b in #4143
- fix: skip object store prefix markers in list_dir by @AMBRA7592 in #4117
- fix: byte-order handling for structured dtypes in the bytes codec by @d-v-b in #4142
- chore: add Ilan Gold to the team list by @ilan-gold in #4145
- docs: 3.3.0 release notes by @d-v-b in #4148
- chore: CI worfklows for linting docs by @maxrjones in #4076
- chore: cleanup indentation and guidance for release by @maxrjones in #4153
- chore(deps): bump the actions group across 1 directory with 6 updates by @dependabot[bot] in #4152
- Fix/memorystore buffer aliasing by @d-v-b in #4157
- chore: refine link checker configuration by @maxrjones in #4158
- fix(store): don't close a shared filesystem in FsspecStore.close() by @d-v-b in #4165
- chore(deps): bump setuptools from 82.0.1 to 83.0.0 by @dependabot[bot] in #4176
- chore(deps): bump pillow from 12.2.0 to 12.3.0 by @dependabot[bot] in #4169
- chore(deps): bump the actions group with 3 updates by @dependabot[bot] in #4181
- feat: ZipStore accepts open binary file-like objects by @jhamman in #4187
- feat: add type-safe
get_arrayandget_groupmethods toAsyncGroupandGroupby @d-v-b in #4128 - feat(zarr-metadata): Zarr metadata model layer by @d-v-b in #4119
- fix: let open_like create arrays by default by @goutamadwant in #4146
- fix: keep FusedCodecPipeline compute off the event-loop thread by @d-v-b in #4194
- fix(ArraySpec): proper and robust equality semantics for ArraySpec by checking fill_value for byte-identicality, fixes #3054. by @sehoffmann in #4183
- fix: make benchmark page-cache clearing opt-in, never prompt for sudo by @d-v-b in #4200
- perf(indexing): speed up sorted 1-D coordinate selections by @selmanozleyen in #4172
- fix: FusedCodecPipeline falls back to async path for sharded arrays with async-only inner codecs by @d-v-b in #4179
- fix: fused pipeline falls back for partial-mixin codecs without sync partial methods by @d-v-b in #4201
- fix: FusedCodecPipeline must apply outer AA/BB codecs on partial paths by @d-v-b in #4202
- fix(fused codec pipeline): bulk shard decode must only engage for identity full reads by @d-v-b in #4203
- docs(zarr-metadata): standalone documentation site; add package justfile by @d-v-b in #4208
- docs(zarr-metadata): docs-site polish: repo link, titles, RTD build skips, branding by @d-v-b in #4210
- chore(zarr-metadata): build 0.4.0 changelog by @d-v-b in #4211
- docs: fix link checker errors and warnings; run weekly by @maxrjones in #4214
- fix: ManagedMemoryStore sync methods must respect the path prefix by @d-v-b in #4204
- fix: minor correctness and hygiene fixes from the sync-pipeline audit by @d-v-b in #4205
- chore(deps): bump the python-dependencies group across 1 directory with 11 updates by @dependabot[bot] in #4216
- fix: reject malformed chunk keys in DefaultChunkKeyEncoding by @d-v-b in #4219
- fix: explicit store sync-IO capability; wrappers forward it; LatencyStore fixes by @d-v-b in #4206
- docs: add dev blog, update 3.3.0 release notes by @d-v-b in #4191
New Contributors
- @chuckwondo made their first contribution in #3947
- @kabilar made their first contribution in #3957
- @NIK-TIGER-BILL made their first contribution in #3966
- @josh-ag2 made their first contribution in #4003
- @lhoupert made their first contribution in #4023
- @stibrew made their first contribution in #4060
- @zkoppert made their first contribution in #3856
- @gaoflow made their first contribution in #4103
- @oldrobotdev made their first contribution in #4116
- @SAY-5 made their first contribution in #3984
- @AMBRA7592 made their first contribution in #4117
- @goutamadwant made their first contribution in #4146
- @sehoffmann made their first contribution in #4183
- @selmanozleyen made their first contribution in #4172
Full Changelog: v3.2.1...v3.3.0