diff --git a/changes/3464.doc.md b/changes/3464.doc.md deleted file mode 100644 index 155a4575f4..0000000000 --- a/changes/3464.doc.md +++ /dev/null @@ -1 +0,0 @@ -Add documentation example for creating uncompressed arrays in the Compression section of the user guide. diff --git a/changes/3562.misc.md b/changes/3562.misc.md deleted file mode 100644 index e164ab39f8..0000000000 --- a/changes/3562.misc.md +++ /dev/null @@ -1 +0,0 @@ -Add continuous performance benchmarking infrastructure. \ No newline at end of file diff --git a/changes/3603.bugfix.md b/changes/3603.bugfix.md deleted file mode 100644 index 37e1da5cb1..0000000000 --- a/changes/3603.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Correct the target bytes number for auto-chunking when auto-sharding. \ No newline at end of file diff --git a/changes/3605.misc.md b/changes/3605.misc.md deleted file mode 100644 index b8c0757b69..0000000000 --- a/changes/3605.misc.md +++ /dev/null @@ -1 +0,0 @@ -Fix a bug in the test suite that prevented stand-alone example scripts from being tested. \ No newline at end of file diff --git a/changes/3619.misc.md b/changes/3619.misc.md deleted file mode 100644 index 8c36e473b5..0000000000 --- a/changes/3619.misc.md +++ /dev/null @@ -1 +0,0 @@ -Remove upper bounds on `pytest` and `pytest-asyncio` test dependencies. \ No newline at end of file diff --git a/changes/3623.misc.md b/changes/3623.misc.md deleted file mode 100644 index 4060e55e5f..0000000000 --- a/changes/3623.misc.md +++ /dev/null @@ -1,5 +0,0 @@ -This PR contains minor, non-function-altering, changes to use `ZarrFormat` across the repo as opposed to duplicating is with `Literal[2,3]`. - -Additionally, it fixes broken linting by using a `Literal[True, False]` type hint for Numpy hypothesis testing, as opposed to `bool`. - -Basically improves the typehints and reduces fat-finger error surface area slightly. diff --git a/changes/3636.misc.md b/changes/3636.misc.md deleted file mode 100644 index a814160c8b..0000000000 --- a/changes/3636.misc.md +++ /dev/null @@ -1 +0,0 @@ -The minimum required version of NumPy is now 2.0. diff --git a/changes/3648.misc.md b/changes/3648.misc.md deleted file mode 100644 index 156f8671de..0000000000 --- a/changes/3648.misc.md +++ /dev/null @@ -1 +0,0 @@ -Fix deprecation of setting a shape on an array directly in ``numpy`` 2.5+. diff --git a/changes/3655.bugfix.md b/changes/3655.bugfix.md deleted file mode 100644 index 67d384f00d..0000000000 --- a/changes/3655.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fixed a bug in the sharding codec that prevented nested shard reads in certain cases. \ No newline at end of file diff --git a/changes/3656.misc.md b/changes/3656.misc.md deleted file mode 100644 index 159f24d072..0000000000 --- a/changes/3656.misc.md +++ /dev/null @@ -1 +0,0 @@ -Removed *rich* and *mypy* from the `[test]` dependencies, and added a new `[dev]` dependency group that can be used to install all the development dependencies. diff --git a/changes/3657.bugfix.md b/changes/3657.bugfix.md deleted file mode 100644 index 1411704674..0000000000 --- a/changes/3657.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fix obstore _transform_list_dir implementation to correctly relativize paths (removing lstrip usage). \ No newline at end of file diff --git a/changes/3658.misc.md b/changes/3658.misc.md deleted file mode 100644 index f400d97473..0000000000 --- a/changes/3658.misc.md +++ /dev/null @@ -1 +0,0 @@ -Switch from `pre-commit` to [`prek`](https://github.com/j178/prek) for pre-commit checks. \ No newline at end of file diff --git a/changes/3668.feature.md b/changes/3668.feature.md deleted file mode 100644 index def196ec8a..0000000000 --- a/changes/3668.feature.md +++ /dev/null @@ -1,4 +0,0 @@ -Exposes the array runtime configuration as an attribute called `config` on the `Array` and -`AsyncArray` classes. The previous `AsyncArray._config` attribute is now a deprecated alias for `AsyncArray.config`. - -Adds a method for creating a new `Array` / `AsyncArray` instance with a new runtime configuration, and fixes inaccurate documentation about the `write_empty_chunks` configuration parameter. \ No newline at end of file diff --git a/changes/3673.misc.md b/changes/3673.misc.md deleted file mode 100644 index 83643f5d3c..0000000000 --- a/changes/3673.misc.md +++ /dev/null @@ -1 +0,0 @@ -Benchmark CI now only runs for PRs with the `benchmark` label, reducing CodSpeed credit usage. diff --git a/changes/3695.bugfix.md b/changes/3695.bugfix.md deleted file mode 100644 index a7d847e4f1..0000000000 --- a/changes/3695.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Raise error when trying to encode :class:`numpy.dtypes.StringDType` with `na_object` set. \ No newline at end of file diff --git a/changes/3700.bugfix.md b/changes/3700.bugfix.md deleted file mode 100644 index 86acb71d0e..0000000000 --- a/changes/3700.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -CacheStore, LoggingStore and LatencyStore now support with_read_only. \ No newline at end of file diff --git a/changes/3702.bugfix.md b/changes/3702.bugfix.md deleted file mode 100644 index 94a2902567..0000000000 --- a/changes/3702.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Skip chunk coordinate enumeration in resize when the array is only growing, avoiding unbounded memory usage for large arrays. \ No newline at end of file diff --git a/changes/3704.misc.md b/changes/3704.misc.md deleted file mode 100644 index d15d4924e0..0000000000 --- a/changes/3704.misc.md +++ /dev/null @@ -1 +0,0 @@ -Remove an expensive `isinstance` check from the bytes codec decoding routine. \ No newline at end of file diff --git a/changes/3705.bugfix.md b/changes/3705.bugfix.md deleted file mode 100644 index 2abcb4ee7c..0000000000 --- a/changes/3705.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Fix a performance bug in morton curve generation. \ No newline at end of file diff --git a/changes/3706.misc.md b/changes/3706.misc.md deleted file mode 100644 index 70a0e44c58..0000000000 --- a/changes/3706.misc.md +++ /dev/null @@ -1 +0,0 @@ -Allow NumPy ints as input when declaring a shape. \ No newline at end of file diff --git a/changes/3708.misc.md b/changes/3708.misc.md deleted file mode 100644 index dce7546c97..0000000000 --- a/changes/3708.misc.md +++ /dev/null @@ -1 +0,0 @@ -Optimize Morton order computation with hypercube optimization, vectorized decoding, and singleton dimension removal, providing 10-45x speedup for typical chunk shapes. diff --git a/changes/3710.bugfix.md b/changes/3710.bugfix.md deleted file mode 100644 index a40ddcee23..0000000000 --- a/changes/3710.bugfix.md +++ /dev/null @@ -1 +0,0 @@ -Add a dedicated in-memory cache for byte-range requests to the experimental `CacheStore`. \ No newline at end of file diff --git a/changes/3712.misc.md b/changes/3712.misc.md deleted file mode 100644 index 8fa2f2d2f7..0000000000 --- a/changes/3712.misc.md +++ /dev/null @@ -1 +0,0 @@ -Added benchmarks for Morton order computation in sharded arrays. diff --git a/changes/3713.misc.md b/changes/3713.misc.md deleted file mode 100644 index 9b0680dfc0..0000000000 --- a/changes/3713.misc.md +++ /dev/null @@ -1 +0,0 @@ -Vectorize get_chunk_slice for faster sharded array writes. diff --git a/changes/3717.misc.md b/changes/3717.misc.md deleted file mode 100644 index 5fed76b2b7..0000000000 --- a/changes/3717.misc.md +++ /dev/null @@ -1 +0,0 @@ -Add benchmarks for Morton order computation with non-power-of-2 and near-miss shard shapes, covering both pure computation and end-to-end read/write performance. diff --git a/changes/3721.misc.md b/changes/3721.misc.md deleted file mode 100644 index c170712882..0000000000 --- a/changes/3721.misc.md +++ /dev/null @@ -1 +0,0 @@ -Adds synchronous (non-async) encoding and decoding methods to CPU-bound codecs. This is necessary for performance optimizations based on avoiding `asyncio` overhead. These new methods are described by a new protocol: `SupportsSyncCodec`. \ No newline at end of file diff --git a/changes/3728.misc.md b/changes/3728.misc.md deleted file mode 100644 index a3cbb8d3f0..0000000000 --- a/changes/3728.misc.md +++ /dev/null @@ -1 +0,0 @@ -Move development dependencies (`test`, `remote_tests`, `docs`, `dev`) from optional dependencies to [dependency groups](https://packaging.python.org/en/latest/specifications/dependency-groups/). This may cause breakage for anyone who used e.g. `pip install zarr[test]` to get access to test dependencies. To install these dependency groups from a local checkout, use `pip install --group ` (pip 25.1+) or `uv run --group `. \ No newline at end of file diff --git a/changes/3769.doc.md b/changes/3769.doc.md deleted file mode 100644 index f622ac525f..0000000000 --- a/changes/3769.doc.md +++ /dev/null @@ -1 +0,0 @@ -Add AI-assisted code policy to the contributing guide. diff --git a/changes/3778.misc.md b/changes/3778.misc.md deleted file mode 100644 index 17f26666ed..0000000000 --- a/changes/3778.misc.md +++ /dev/null @@ -1 +0,0 @@ -`Group.tree()` no longer requires the `rich` dependency. Tree rendering now uses built-in ANSI bold for terminals and HTML bold for Jupyter. New parameters: `plain=True` for unstyled output, and `max_nodes` (default 500) to truncate large hierarchies with early bailout. diff --git a/docs/release-notes.md b/docs/release-notes.md index 25ebdb8edf..b974ae10c7 100644 --- a/docs/release-notes.md +++ b/docs/release-notes.md @@ -2,6 +2,42 @@ +## 3.1.6 (2026-03-19) + +### Features + +- Exposes the array runtime configuration as an attribute called `config` on the `Array` and + `AsyncArray` classes. The previous `AsyncArray._config` attribute is now a deprecated alias for `AsyncArray.config`. ([#3668](https://github.com/zarr-developers/zarr-python/issues/3668)) +- Adds a method for creating a new `Array` / `AsyncArray` instance with a new runtime configuration, and fixes inaccurate documentation about the `write_empty_chunks` configuration parameter. ([#3668](https://github.com/zarr-developers/zarr-python/issues/3668)) +- Adds synchronous methods to stores that do not benefit from an async event loop. The shape of these methods is defined by protocol classes to support structural subtyping. ([#3725](https://github.com/zarr-developers/zarr-python/pull/3725)) +- Fix near-miss penalty in `_morton_order` with hybrid ceiling+argsort strategy. ([#3718](https://github.com/zarr-developers/zarr-python/pull/3718)) + +### Bugfixes + +- Correct the target bytes number for auto-chunking when auto-sharding. ([#3603](https://github.com/zarr-developers/zarr-python/issues/3603)) +- Fixed a bug in the sharding codec that prevented nested shard reads in certain cases. ([#3655](https://github.com/zarr-developers/zarr-python/issues/3655)) +- Fix obstore `_transform_list_dir` implementation to correctly relativize paths (removing `lstrip` usage). ([#3657](https://github.com/zarr-developers/zarr-python/issues/3657)) +- Raise error when trying to encode :class:`numpy.dtypes.StringDType` with `na_object` set. ([#3695](https://github.com/zarr-developers/zarr-python/issues/3695)) +- `CacheStore`, `LoggingStore` and `LatencyStore` now support with_read_only. ([#3700](https://github.com/zarr-developers/zarr-python/issues/3700)) +- Skip chunk coordinate enumeration in resize when the array is only growing, avoiding unbounded memory usage for large arrays. ([#3702](https://github.com/zarr-developers/zarr-python/issues/3702)) +- Fix a performance bug in morton curve generation. ([#3705](https://github.com/zarr-developers/zarr-python/issues/3705)) +- Add a dedicated in-memory cache for byte-range requests to the experimental `CacheStore`. ([#3710](https://github.com/zarr-developers/zarr-python/issues/3710)) +- `BaseFloat._check_scalar` rejects invalid string values. ([#3586](https://github.com/zarr-developers/zarr-python/issues/3586)) +- Apply drop_axes squeeze in partial decode path for sharding. ([#3763](https://github.com/zarr-developers/zarr-python/issues/3763)) +- Set `copy=False` in reshape operation. ([#3649](https://github.com/zarr-developers/zarr-python/issues/3649)) +- Validate that dask-style chunks have regular shapes. ([#3779](https://github.com/zarr-developers/zarr-python/issues/3779)) + +### Improved Documentation + +- Add documentation example for creating uncompressed arrays in the Compression section of the user guide. ([#3464](https://github.com/zarr-developers/zarr-python/issues/3464)) +- Add AI-assisted code policy to the contributing guide. ([#3769](https://github.com/zarr-developers/zarr-python/issues/3769)) +- Added a glossary. ([#3767](https://github.com/zarr-developers/zarr-python/issues/3767)) + +### Misc + +- [#3562](https://github.com/zarr-developers/zarr-python/issues/3562), [#3605](https://github.com/zarr-developers/zarr-python/issues/3605), [#3619](https://github.com/zarr-developers/zarr-python/issues/3619), [#3623](https://github.com/zarr-developers/zarr-python/issues/3623), [#3636](https://github.com/zarr-developers/zarr-python/issues/3636), [#3648](https://github.com/zarr-developers/zarr-python/issues/3648), [#3656](https://github.com/zarr-developers/zarr-python/issues/3656), [#3658](https://github.com/zarr-developers/zarr-python/issues/3658), [#3673](https://github.com/zarr-developers/zarr-python/issues/3673), [#3704](https://github.com/zarr-developers/zarr-python/issues/3704), [#3706](https://github.com/zarr-developers/zarr-python/issues/3706), [#3708](https://github.com/zarr-developers/zarr-python/issues/3708), [#3712](https://github.com/zarr-developers/zarr-python/issues/3712), [#3713](https://github.com/zarr-developers/zarr-python/issues/3713), [#3717](https://github.com/zarr-developers/zarr-python/issues/3717), [#3721](https://github.com/zarr-developers/zarr-python/issues/3721), [#3728](https://github.com/zarr-developers/zarr-python/issues/3728), [#3778](https://github.com/zarr-developers/zarr-python/issues/3778) + + ## zarr 3.1.5 (2025-11-21) ## Bugfixes