Read the blog post about the 3.0 release: https://zarr.dev/blog/zarr-python-3-release/
What's Changed
- Disable pre-commit.ci's PR autofixes by @jakirkham in #1506
- Bump redis from 4.5.5 to 4.6.0 by @dependabot in #1446
- Bump ipywidgets from 8.0.7 to 8.1.0 by @dependabot in #1510
- Bump actions/checkout from 3 to 4 by @dependabot in #1520
- Tiny tweak: Extend copyright notice to 2023 by @JackKelly in #1528
- Bump pytest from 7.3.2 to 7.4.0 by @dependabot in #1445
- Allow black to be run on any Python version by @dstansby in #1549
- Unnecessary list literal → set literal by @DimitriPapadopoulos in #1534
- Minor edits in docs by @MSanKeys963 in #1509
- Preserve dimension separator metadata when resizing arrays by @ziw-liu in #1540
- io.open → open by @DimitriPapadopoulos in #1421
- Bump pymongo from 4.4.0 to 4.5.0 by @dependabot in #1507
- Fix typo newly found by codespell by @DimitriPapadopoulos in #1554
- Bump actions/setup-python from 4.6.0 to 4.7.1 by @dependabot in #1541
- Bump pytest-doctestplus from 0.13.0 to 1.0.0 by @dependabot in #1512
- Bump fasteners from 0.18 to 0.19 by @dependabot in #1553
- Add links to numcodecs docs in tutorial by @dstansby in #1535
- Fail doc build on warnings by @dstansby in #1548
- DOC: Enable offline formats by @MSanKeys963 in #1560
- Remove dependency by @MSanKeys963 in #1563
- Bump setuptools-scm from 7.1.0 to 8.0.4 by @dependabot in #1562
- Bump redis from 4.6.0 to 5.0.1 by @dependabot in #1561
- Update release.rst by @MSanKeys963 in #1574
- Automatically document Array members by @dstansby in #1547
- DOC: Minor tweak to advanced indexing example in tutorial by @rossbar in #1550
- Bump h5py from 3.9.0 to 3.10.0 by @dependabot in #1571
- Bump fsspec from 2023.6.0 to 2023.10.0 by @dependabot in #1570
- Bump pytest-timeout from 2.1.0 to 2.2.0 by @dependabot in #1577
- Bump pytest from 7.4.0 to 7.4.3 by @dependabot in #1576
- Bump conda-incubator/setup-miniconda from 2.2.0 to 2.3.0 by @dependabot in #1575
- Remove
CODE_OF_CONDCUT.md
file from the Zarr-Python repo by @MSanKeys963 in #1572 - Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 by @dependabot in #1586
- Bump conda-incubator/setup-miniconda from 2.3.0 to 3.0.1 by @dependabot in #1587
- Bootstrap v3 branch with zarrita by @jhamman in #1584
- Cache result of FSStore._fsspec_installed() by @ph03 in #1581
- Extensible codecs for V3 by @normanrz in #1588
- Bump version of black in pre-commit by @dstansby in #1559
- Use list comprehension where applicable by @DimitriPapadopoulos in #1555
- Bump numcodecs from 0.11.0 to 0.12.1 by @dependabot in #1580
- Use format specification mini-language to format string by @DimitriPapadopoulos in #1558
- Single startswith() call instead of multiple ones by @DimitriPapadopoulos in #1556
- Bump pymongo from 4.5.0 to 4.6.1 by @dependabot in #1585
- Move codespell options around by @DimitriPapadopoulos in #1196
- Bump fsspec from 2023.10.0 to 2023.12.1 by @dependabot in #1600
- Add type hints to zarr.create by @dstansby in #1536
- Remove unused mypy ignore comments by @dstansby in #1602
- Bump actions/setup-python from 4.7.1 to 5.0.0 by @dependabot in #1605
- Bump github/codeql-action from 2 to 3 by @dependabot in #1609
- chore: update pre-commit hooks by @pre-commit-ci in #1448
- chore: update pre-commit hooks by @pre-commit-ci in #1618
- Bump fsspec from 2023.12.1 to 2023.12.2 by @dependabot in #1606
- Bump pytest-doctestplus from 1.0.0 to 1.1.0 by @dependabot in #1619
- Bump pytest from 7.4.3 to 7.4.4 by @dependabot in #1622
- chore: update pre-commit hooks by @pre-commit-ci in #1626
- Create TEAM.md by @jhamman in #1628
- Drop python 3.8 and numpy 1.20 by @joshmoore in #1557
- Add Norman Rzepka to core-dev team by @jhamman in #1630
- chore: update pre-commit hooks by @pre-commit-ci in #1633
- Bump actions/download-artifact from 3 to 4 by @dependabot in #1611
- Update tutorial.rst to include section about accessing Zip Files on S3 by @jeffpeck10x in #1615
- doc(v3): add v3 roadmap and design document by @jhamman in #1583
- chore: update pre-commit hooks by @pre-commit-ci in #1636
- Don't import from tests by @d-v-b in #1601
- [V3] Update minimum supported Python and Numpy versions by @jhamman in #1638
- use src layout and use
hatch
for packaging by @d-v-b in #1592 - temporarily disable mypy in v3 directory by @jhamman in #1649
- create hatch test env by @rabernat in #1650
- removed unused environments and workflows by @rabernat in #1651
- Listable V3 Stores by @jhamman in #1634
- Codecs without array metadata by @normanrz in #1632
- Add env variables to sprint setup instructions by @maxrjones in #1654
- fix sync group class methods by @jhamman in #1652
- Specify docs hatch env for v3 branch by @maxrjones in #1655
- Add test matrix for V3 by @maxrjones in #1656
- Pyodide support: don't require fasteners on emscripten by @hoodmane in #1663
- Update release.rst by @MSanKeys963 in #1621
- Bump numpy from 1.24.3 to 1.26.1 by @dependabot in #1543
- chore: update pre-commit hooks by @pre-commit-ci in #1642
- Bump ipywidgets from 8.1.0 to 8.1.1 by @dependabot in #1538
- Proper argument for numpy.reshape by @DimitriPapadopoulos in #1425
- Bump ipywidgets from 8.1.1 to 8.1.2 by @dependabot in #1666
- docs: ZIP-related tweaks by @d-v-b in #1641
- Bump numpy from 1.26.1 to 1.26.4 by @dependabot in #1669
- Change occurrences of % and format() to f-strings by @DimitriPapadopoulos in #1423
- Remove attrs by @d-v-b in #1660
- chore: update pre-commit hooks by @pre-commit-ci in #1672
- Bump pymongo from 4.6.1 to 4.6.2 by @dependabot in #1674
- Bump conda-incubator/setup-miniconda from 3.0.1 to 3.0.2 by @dependabot in #1677
- Add typing to dimension separator arguments by @dstansby in #1620
- Replace Gitter with new Zulip Chat link by @MSanKeys963 in #1685
- Bump redis from 5.0.1 to 5.0.2 by @dependabot in #1688
- Bump pypa/gh-action-pypi-publish from 1.8.11 to 1.8.12 by @dependabot in #1691
- Bump pytest-doctestplus from 1.1.0 to 1.2.0 by @dependabot in #1693
- Fix RTD build by @MSanKeys963 in #1694
- Update release.rst for v2.17.1 by @MSanKeys963 in #1673
- Bump pytest-timeout from 2.2.0 to 2.3.1 by @dependabot in #1697
- Bump conda-incubator/setup-miniconda from 3.0.2 to 3.0.3 by @dependabot in #1690
- docs(tutorial.rst): fix link to GCSMap by @DahnJ in #1689
- Update installation.rst stating version support policy by @MSanKeys963 in #1665
- Bump pypa/gh-action-pypi-publish from 1.8.12 to 1.8.14 by @dependabot in #1700
- Bump pytest-doctestplus from 1.2.0 to 1.2.1 by @dependabot in #1699
- Bump redis from 5.0.2 to 5.0.3 by @dependabot in #1698
- Add Python 3.12 to CI by @jhamman in #1719
- Bump pytest-cov from 4.1.0 to 5.0.0 by @dependabot in #1722
- chore: update pre-commit hooks by @pre-commit-ci in #1708
- chore: update pre-commit hooks by @pre-commit-ci in #1723
- Fix release notes (following #1719) by @jhamman in #1725
- Override ipython repr methods. by @dcherian in #1724
- Bump pymongo from 4.6.2 to 4.6.3 by @dependabot in #1729
- Remove v1 and v2 specification by @MSanKeys963 in #1582
- chore: update pre-commit hooks by @pre-commit-ci in #1738
- Optimize Array.info and Group.info by @dcherian in #1733
- Bump actions/setup-python from 5.0.0 to 5.1.0 by @dependabot in #1736
- Couple fixes by @DimitriPapadopoulos in #1737
- Fix tests with Pytest 8 by @dstansby in #1714
- Avoid redundant contains by @dcherian in #1739
- Array & Group: Use already loaded attributes to populate cache. by @dcherian in #1734
- Optimize attribute setting by @dcherian in #1741
- Make sure fs exceptions are raised if not MissingFs exceptions (clone) by @itcarroll in #1604
- chore(release): update changelog for 2.17.2 by @jhamman in #1775
- Resolve Mypy erorrs in
v3
branch by @DahnJ in #1692 - chore(docs): reset release notes as unreleased by @jhamman in #1776
- Specify hatch envs using GitHub actions matrix for v3 tests by @maxrjones in #1728
- black -> ruff format + cleanup by @Saransh-cpp in #1639
- Development installation/contributing docs updates by @aldenks in #1643
- Allow dmypy to be run on v3 branch by @dstansby in #1780
- Remove unused typing ignore comments by @dstansby in #1781
- Check untyped defs on v3 by @dstansby in #1784
- [v3] Enable some more strict mypy options by @dstansby in #1793
- implement eq for LocalStore by @Charoula-Kyriakides in #1792
- Remove old v3 by @d-v-b in #1742
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #1647
- [v3] Disallow generic Any typing by @dstansby in #1794
- Update release.rst for v2.17.2 by @MSanKeys963 in #1778
- Deprecate the experimental v3 implementation by @jhamman in #1802
- chore: update pre-commit hooks by @pre-commit-ci in #1779
- Fix
is_total_slice
for size-1 dimensions by @dcherian in #1800 - V3 update pre commit by @jhamman in #1808
- V3 reorg by @jhamman in #1809
- [v3] Sync with futures by @d-v-b in #1804
- implement
group.members
by @d-v-b in #1726 - remove windows testing on v3 branch by @jhamman in #1817
- add note to the top of the release page noting the plan for 2.18.* and 3.0 by @jhamman in #1816
- Bump conda-incubator/setup-miniconda from 3.0.3 to 3.0.4 by @dependabot in #1824
- dep(docs): deprecate experimental v3 support in docs by @jhamman in #1807
- Disallow incomplete type definitions by @dstansby in #1814
- fix: add mypy to test dependencies by @d-v-b in #1789
- Bump h5py from 3.10.0 to 3.11.0 by @dependabot in #1786
- Bump redis from 5.0.3 to 5.0.4 by @dependabot in #1810
- Disallow untyped calls by @dstansby in #1811
- chore(ci): add numpy 2 release candidate to test matrix by @jhamman in #1828
- deprecate(stores): add deprecation warnings to stores that we plan to remove in v3 by @jhamman in #1801
- fix dependencies by @normanrz in #1840
- use np.inf instead of PINF/NINF by @jhamman in #1842
- chore: update pre-commit hooks by @pre-commit-ci in #1825
- Add pytest to mypy dependencies by @dstansby in #1846
- Enable ruff/bugbear rules (B) and fix issues by @DimitriPapadopoulos in #1702
- chore(pre-commit): update pre-commit versions and remove attrs dep mypy section by @jhamman in #1848
- Remove implicit groups by @jhamman in #1827
- feature(store): list_* -> AsyncGenerators by @jhamman in #1844
- Release notes for 2.18.0 by @jhamman in #1843
- Update release.rst by @jhamman in #1850
- Test codec entrypoints by @normanrz in #1835
- Remove extra v3 sync module by @maxrjones in #1856
- Use donfig for V3 configuration by @maxrjones in #1855
- Fix any generics in zarr.array by @dstansby in #1861
- Fix some untyped calls by @dstansby in #1865
- chore: update project settings per scientific python repo-review by @jhamman in #1863
- Group dependabot updates by @jhamman in #1854
- Disallow untyped defs by @dstansby in #1834
- chore: update pre-commit hooks by @pre-commit-ci in #1876
- Enable some ruff rules (RUF) and fix issues by @DimitriPapadopoulos in #1869
- groundwork for V3 group tests by @d-v-b in #1743
- Add more typing to
zarr.group
by @dstansby in #1870 - [v3] First step to generalizes ndarray and bytes by @madsbk in #1826
- Fix a regression with scalar indexing due to #1800 by @dcherian in #1875
- release notes for 2.18.1 by @jhamman in #1885
- Reworked codec pipelines by @normanrz in #1670
- Configure Ruff to apply flake8-bugbear/isort/pyupgrade by @normanrz in #1890
- reset release notes by @jhamman in #1886
- chore(ci): remove mypy from test action in favor of pre-commit action by @jhamman in #1887
- Enable ruff/flake8-raise rules (RSE) and fix issues by @DimitriPapadopoulos in #1872
- Apply assorted ruff/refurb rules (FURB) by @DimitriPapadopoulos in #1873
- Enable ruff/flake8-implicit-str-concat rules (ISC) and fix issues by @DimitriPapadopoulos in #1868
- Remove some unused mypy overrides by @dstansby in #1894
- Finish typing zarr.metadata by @dstansby in #1880
- Followup on codecs by @normanrz in #1889
- Add numpy to mypy pre-commit check env by @dstansby in #1893
- remove fixture files from src by @d-v-b in #1897
- Protocols for
Buffer
andNDBuffer
by @madsbk in #1899 - Add zstd to old V3 supported codecs by @rabernat in #1914
- doc: update release notes for 2.18.2 by @jhamman in #1915
- [V3] Expand store tests by @d-v-b in #1900
- [v3] Feature: Store open mode by @jhamman in #1911
- chore: update pre-commit hooks by @pre-commit-ci in #1920
- Disallow implicit re-exports by @dstansby in #1908
- Make typing strict by @dstansby in #1879
- Enable extra mypy error codes by @dstansby in #1909
- fix(types): Group.info -> NotImplementedError by @jhamman in #1936
- Enable warn_unreachable for mypy by @dstansby in #1937
- Run sphinx directly on readthedocs by @dstansby in #1919
- Fix list of packages in mypy pre-commit environment by @dstansby in #1907
- Bump the actions group with 6 updates by @dependabot in #1904
- Fix final typing errors by @dstansby in #1939
- feature(typing): add py.typed file to package root by @jhamman in #1935
- Apply preview ruff rules by @DimitriPapadopoulos in #1942
- Enable and apply ruff rule RUF009 by @DimitriPapadopoulos in #1941
- Support all indexing variants by @normanrz in #1917
- Feature: group and array name properties by @jhamman in #1940
- implement .chunks on v3 arrays by @rabernat in #1929
- chore: update pre-commit hooks by @pre-commit-ci in #1948
- Fixes bug in transpose by @normanrz in #1949
- Buffer Prototype Argument by @madsbk in #1910
- Feature: Top level V3 API by @jhamman in #1884
- Basic working FsspecStore by @martindurant in #1785
- doc: update release notes for 3.0.0.alpha by @jhamman in #1959
- Update release.rst by @MSanKeys963 in #1960
- chore: update pre-commit hooks by @pre-commit-ci in #1957
- Bump pypa/gh-action-pypi-publish from 1.8.14 to 1.9.0 in the actions group by @dependabot in #1969
- chore: update pre-commit hooks by @pre-commit-ci in #1973
- [v3] add json indentation to config by @d-v-b in #1952
- Clean up typing and docs for indexing by @brokkoli71 in #1961
parse_shapelike
allows 0 by @d-v-b in #1979- 0 dim arrays: indexing by @d-v-b in #1980
- [v3] Elevate codec pipeline by @d-v-b in #1932
- Update
RemoteStore.__str__
and add UPath tests by @d-v-b in #1964 - Automatically generate API reference docs by @dstansby in #1918
- Fix doc build warnings by @dstansby in #1985
- Fix doc build by @dstansby in #1987
- [v3]
Buffer
ensure correct subclass based on theBufferPrototype
argument by @madsbk in #1974 - Allow 'chunks' as an alias for 'chunk_shape' in array creation by @tomwhite in #1991
- Use f-strings instead of legacy interpolation by @DimitriPapadopoulos in #1995
- Unnecessary use of a comprehension by @DimitriPapadopoulos in #1994
- Handle Path in
make_store_path
by @tomwhite in #1992 - Unnecessary comprehension by @DimitriPapadopoulos in #1996
- Merge collapsible if statements by @DimitriPapadopoulos in #1999
- Stop ignoring these ruff rules by @DimitriPapadopoulos in #2001
- Unnecessary comprehension by @DimitriPapadopoulos in #1997
- Fix string interpolation by @DimitriPapadopoulos in #1998
- Fix indexing with bools by @brokkoli71 in #1968
- chore: update pre-commit hooks by @pre-commit-ci in #1989
- Bump NumPy to 2.0 by @jhamman in #1983
- build(ci): enable python 3.12 in github actions by @jhamman in #2005
- doc: copy 3.0.0.alpha changelog into release.rst by @jhamman in #2007
- make shardingcodec pickleable by @d-v-b in #2011
- chore: update pre-commit hooks by @pre-commit-ci in #2017
- Cast fill value to array's dtype by @d-v-b in #2020
- chore: update pre-commit hooks by @pre-commit-ci in #2039
- Redundant list comprehension by @DimitriPapadopoulos in #2048
- Multiple imports for an import name by @DimitriPapadopoulos in #2047
- Move fixtures to
tests
by @d-v-b in #1813 - Apply ruff/flake8-bandit rule B006 by @DimitriPapadopoulos in #2049
- chore: update pre-commit hooks by @pre-commit-ci in #2051
- [v2 / v3 compat] add
Group.array
anddata
kwarg to array creation by @d-v-b in #2042 - fix file modes by @brokkoli71 in #2000
- Use config to select implementation by @brokkoli71 in #1982
- Handle missing attributes key from metadata, and other fixes by @d-v-b in #2058
- chore: update pre-commit hooks by @pre-commit-ci in #2057
- Add hypothesis property tests by @dcherian in #1746
- Fix low contrast in dark theme h3 headings by @dstansby in #2003
- Updated test dependencies in pyproject.toml by @TomAugspurger in #2069
- Remove zstandard dependency in favor of numcodecs by @normanrz in #1838
- Update TEAM.md by @jhamman in #2071
- Enforce ruff/tryceratops rules (TRY) by @DimitriPapadopoulos in #2054
- chore: update pre-commit hooks by @pre-commit-ci in #2080
- [v2] Fix doctests with numpy 2.0 by @dstansby in #2073
- Fix version number in built docs by @dstansby in #2044
- [v3] reorganize package - move most modules to zarr.core by @jhamman in #2072
- Fix orthogonal indexing with a scalar by @dcherian in #1947
- Re-enable dependabot on main branch by @dstansby in #2082
- Stateful store tests by @e-marshall in #2070
- Bump the requirements group across 1 directory with 7 updates by @dependabot in #2092
- Bump the actions group with 2 updates by @dependabot in #2087
- [v2] Drop support for Python 3.9 by @dstansby in #2074
- Fix Array.array for numpy 2.1 by @dstansby in #2106
- Bump test version of numcodecs by @dstansby in #2114
- fix: numpy 1.24 compat for Array.array by @jhamman in #2123
- Fixed MemoryStore.list_dir by @TomAugspurger in #2117
- Deprecate N5Store by @jhamman in #2103
- Run tests on numpy 1.23 by @dstansby in #2124
- Bump the requirements group across 1 directory with 3 updates by @dependabot in #2129
- chore: bump minimum numpy version to 1.24 by @jhamman in #2127
- Feature/recursive members by @TomAugspurger in #2118
- Remove un-needed package installs in CI by @dstansby in #2095
- Fix dtype type error by @dstansby in #2136
- mypy fixes for NumPy 2.1.0 by @TomAugspurger in #2139
- Initial GPU support by @akshaysubr in #1967
- [v3] clean up
create_array
signatures in group/asyncgroup classes by @jhamman in #2132 - Bump the actions group with 2 updates by @dependabot in #2146
- Bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0 in the actions group by @dependabot in #2147
- Bump ruff version by @DimitriPapadopoulos in #2148
- Bump numpy from 2.1.0 to 2.1.1 in the requirements group by @dependabot in #2151
- [v3] h5py compat methods on Group by @jhamman in #2128
- chore(docs): update release notes ahead of 2.18.4 by @jhamman in #2152
- Enforce Repo-Review rules by @DimitriPapadopoulos in #2075
- Enforce ruff/flake8-type-checking rules (TCH) by @DimitriPapadopoulos in #2110
- Add UPath dependency/type checking by @dstansby in #1955
- Check tests folder with mypy by @TomAugspurger in #2150
- Fix new ruff/flake8-type-checking TCH003 error by @DimitriPapadopoulos in #2154
- Autogenerate all API docs by @dstansby in #2002
- Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1 in the actions group by @dependabot in #2161
- Bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1 in the actions group by @dependabot in #2160
- Ensure that store_dict used for empty dicts by @TomAugspurger in #2162
- [docs] remove primary sidebar from tutorial by @sneakers-the-rat in #2142
- chore: update pre-commit hooks by @pre-commit-ci in #2165
- Fixed test warnings by @TomAugspurger in #2168
- Fixed path segment duplication in open_array by @TomAugspurger in #2167
- Simplify mypy config for tests by @dstansby in #2156
- Bump pytest from 8.3.2 to 8.3.3 in the requirements group by @dependabot in #2172
- Accept dictionaries for
store
argument by @TomAugspurger in #2164 - refactor: split metadata into v2 and v3 modules by @d-v-b in #2163
- More typing fixes for tests by @dstansby in #2173
- feature(store): V3 ZipStore by @jhamman in #2078
- test: check that store, array, and group classes are serializable by @jhamman in #2006
- fix: opening a group with unspecified format finds either v2 or v3 by @jhamman in #2183
- chore: update pre-commit hooks by @pre-commit-ci in #2188
- fix: replace tests that went missing in #2006 by @jhamman in #2192
- Silence hypothesis complex warning by @dcherian in #2157
- Narrow JSON type, ensure that
to_dict
always returns a dict, and v2 filter / compressor parsing by @d-v-b in #2179 - Fixed codec for v2 data with no fill value by @TomAugspurger in #2207
- implement
store.list_prefix
andstore._set_many
by @d-v-b in #2064 - [v3] Implement Group methods for empty, full, ones, and zeros by @lindseynield in #2210
- Make MemoryStore serializable by @TomAugspurger in #2204
- Default to RemoteStore for fsspec URIs by @TomAugspurger in #2198
- Typing fixes for test_indexing by @dstansby in #2193
- Make Group.arrays, groups compatible with v2 by @TomAugspurger in #2213
- Basic Zarr-python 2.x compatibility changes by @TomAugspurger in #2098
- fix typo in store integration test by @dcherian in #2223
- fix: validate v3 dtypes when loading/creating v3 metadata by @jhamman in #2209
- chore: update pre-commit hooks by @pre-commit-ci in #2222
- Added Attributes.asdict by @TomAugspurger in #2221
- Bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2 in the actions group by @dependabot in #2219
- Bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2 in the actions group by @dependabot in #2220
- Fix/empty listdir by @jhamman in #2225
- remove outdated v2 source code and tests from v3 branch by @jhamman in #2182
- fix: selection with zarr arrays by @jhamman in #2137
- Adding Deepak and Tom to the core team by @jhamman in #2227
- Apply and enforce more ruff rules by @DimitriPapadopoulos in #2053
- Update V2 codec pipeline to use concrete classes by @TomAugspurger in #2244
- Fix fill_value handling for complex dtypes by @dcherian in #2200
- Enforce ruff/flynt rules (FLY) by @DimitriPapadopoulos in #2240
- Enforce ruff/flake8-return rules (RET) by @DimitriPapadopoulos in #2237
- Fix multiple identical imports by @DimitriPapadopoulos in #2241
- Enforce ruff/flake8-pytest-style rules (PT) by @DimitriPapadopoulos in #2236
- Replace Gitter link with Zulip by @MSanKeys963 in #2254
- Use
map(str, *)
intest_accessed_chunks
by @jakirkham in #2229 - Enforce ruff/flake8-comprehensions rules (C4) by @DimitriPapadopoulos in #2239
- Remove unnecessary lambda expression by @DimitriPapadopoulos in #2260
- No need to run DeepSource any more - we use ruff by @DimitriPapadopoulos in #2261
- Apply ruff/flake8-annotations rule ANN204 by @DimitriPapadopoulos in #2258
- Add array storage helpers by @d-v-b in #2065
- Apply assorted ruff/flake8-simplify rules (SIM) by @DimitriPapadopoulos in #2259
- feature(store): add LoggingStore wrapper by @jhamman in #2231
- chore(deps): drop support for python 3.10 and numpy 1.24 by @jhamman in #2217
- fix(async): set default concurrency to 10 tasks by @jhamman in #2256
- feat: metadata-only support for storage transformers metadata by @d-v-b in #2180
- Default zarr.open to open_group if shape is not provided by @agoodm in #2158
- Generalize stateful store test by @dcherian in #2202
- Enforce ruff/flake8-annotations rules (ANN) by @DimitriPapadopoulos in #2264
- Added a new issue template for documentation issues by @MSanKeys963 in #2255
- Apply new ruff rules (preview mode) by @DimitriPapadopoulos in #2235
- Ensure parents are created when creating a node by @TomAugspurger in #2262
- Allow mode casting for
Store
s by @TomAugspurger in #2249 - Bump verison of autoapi used to build docs by @dstansby in #2177
- Bump the actions group across 1 directory with 2 updates by @dependabot in #2257
- chore: update pre-commit hooks by @pre-commit-ci in #2277
- [v3] fix: zarr v2 compatibility fixes for Dask by @jhamman in #2186
- Bump the requirements group across 1 directory with 3 updates by @dependabot in #2284
- Fix low contrast box titles by @dstansby in #2287
- Bump pymongo from 4.10.0 to 4.10.1 in the requirements group by @dependabot in #2288
- Backport #2287 to main by @dstansby in #2292
- Ignore extra keys in v2 metadata by @TomAugspurger in #2297
- Remove acknowledgements page from docs by @dstansby in #2293
- Add maximum character length for signatures in docs by @dstansby in #2299
- Change ArrayV3Metadata.data_type to DataType by @rabernat in #2278
- Add BaseCodec to the docs by @dstansby in #2290
- Bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3 in the actions group by @dependabot in #2305
- Bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3 in the actions group by @dependabot in #2304
- fix: array creation prototype by @jhamman in #2306
- base64 encode fill value for some dtypes with
zarr_format=2
by @TomAugspurger in #2286 - Bump the requirements group with 2 updates by @dependabot in #2303
- chore: update pre-commit hooks by @pre-commit-ci in #2307
- Add
string
andbytes
dtypes plusvlen-utf8
andvlen-bytes
codecs by @rabernat in #2036 - fix: add get(key, default) method to Group APIs by @jhamman in #2311
- fix(storage): change StoreTests get/set methods to async by @jhamman in #2313
- fix(store): speed up Store.open by avoiding empty/clear calls unless needed by @jhamman in #2314
- Keyword argument defined before variable positional arguments by @DimitriPapadopoulos in #2321
- Assigning the same variable to itself by @DimitriPapadopoulos in #2320
- Apply ruff rules (RUF) by @DimitriPapadopoulos in #2319
- Unnecessary lambda expression by @DimitriPapadopoulos in #2318
- Add some numpydoc validation checks by @dstansby in #2316
- Use implicit fill values for zarr v2 by @TomAugspurger in #2274
- zarr.open should fall back to opening a group by @TomAugspurger in #2310
- Bump numcodecs from 0.13.0 to 0.13.1 in the requirements group by @dependabot in #2326
- Refactor/rename v2 metadata fields by @d-v-b in #2301
- Zarr-v3 Consolidated Metadata by @TomAugspurger in #2113
- feature(threading): use explicit/configurable thread pool executor by @jhamman in #2327
- fix(RemoteStore): avoid listing all objects in remote store in empty() method by @jhamman in #2312
- fix(attrs): update array attrs in place by @jhamman in #2329
- Use horizontal logo for docs by @dstansby in #2333
- Special case
str
dtype in array creation by @TomAugspurger in #2323 - Add guide section to top level of docs by @dstansby in #2332
- Ensure path created for LocalStore when not in readonly mode. by @TomAugspurger in #2337
- V3 main sync w/ merge by @jhamman in #2335
- Revert "V3 main sync w/ merge (#2335)" by @jhamman in #2339
- V3 main sync merge by @jhamman in #2340
- document storage classes and some developer apis by @jhamman in #2279
- Fix/logging store improvements by @jhamman in #2355
- fix RemoteStore.empty by @rabernat in #2343
- fix(consolidated metadata): skip .zmetadata key in members search by @jhamman in #2356
- Update deprecated stage names by @DimitriPapadopoulos in #2362
- Multiple imports for an import name by @DimitriPapadopoulos in #2361
- Fix logo height in doc navbar by @dstansby in #2352
- Bump sphinx from 8.0.2 to 8.1.3 in the actions group across 1 directory by @dependabot in #2360
- Move V3 development to main by @jhamman in #2341
- test(ci): change branch name in v3 workflows by @jhamman in #2368
- Use lazy % formatting in logging functions by @DimitriPapadopoulos in #2366
- Move roadmap and v3-design documument to docs by @jhamman in #2354
- Multiple imports for an import name by @DimitriPapadopoulos in #2367
- Enforce ruff/pycodestyle warnings (W) by @DimitriPapadopoulos in #2369
- Enforce ruff/pycodestyle preview rules (E) by @DimitriPapadopoulos in #2370
- Fix typo by @DimitriPapadopoulos in #2382
- Imported name is not used anywhere in the module by @DimitriPapadopoulos in #2379
- Missing mandatory keyword argument
shape
by @DimitriPapadopoulos in #2376 - Update ruff rules to ignore by @DimitriPapadopoulos in #2374
- Docstrings for arraymodule by @e-marshall in #2276
- fix/normalize storage paths by @d-v-b in #2384
- Enforce ruff/flake8-pyi rule PYI013 by @DimitriPapadopoulos in #2389
- deps: remove fasteners from list of dependencies by @jhamman in #2386
- Enforce ruff/flake8-annotations rule ANN003 by @DimitriPapadopoulos in #2388
- Enforce ruff/Perflint rules (PERF) by @DimitriPapadopoulos in #2372
- chore: update package maintainers by @jhamman in #2387
- Fixed consolidated Group getitem with multi-part key by @TomAugspurger in #2363
- chore: add python 3.13 to ci / pyproject.toml by @jhamman in #2385
- move v3/tests to tests by @d-v-b in #2396
- Fix reading partial shards by @normanrz in #2397
- sharding with empty inner chunk and index location start by @brokkoli71 in #2336
- Add some more numpydoc rules/associated fixes by @dstansby in #2399
- Enforce ruff/refurb rules (FURB) by @DimitriPapadopoulos in #2373
- chore(ci): removed unused codeql action by @jhamman in #2414
- fix(group): deprecate positional args in Group.{zeros,ones,etc.} by @jhamman in #2416
- Get rid of pep8speaks - replaced by ruff by @DimitriPapadopoulos in #2421
- test(ci): add test environment for upstream dependencies by @jhamman in #2418
- fix(array): thread order parameter through to Array.init by @jhamman in #2417
- test(ci): Add CI for minimum supported dependency versions by @jhamman in #2423
- fix(remotestore): raise error if path includes scheme by @jhamman in #2348
- chore: update pre-commit hooks by @pre-commit-ci in #2427
- [v3] Array.append by @jhamman in #2413
- Fix JSON encoding of complex fill values by @dcherian in #2432
- support zero-sized chunks by @brokkoli71 in #2434
- Refactors v2 codec handling by @normanrz in #2425
- feature(group): add group setitem api by @jhamman in #2393
- test(ci): test on windows and osx by @jhamman in #2431
- Bump sphinx-autoapi from 3.3.2 to 3.3.3 in the requirements group by @dependabot in #2441
- chore: update pre-commit hooks by @pre-commit-ci in #2443
- Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0 in the actions group by @dependabot in #2457
- Make AsyncArray.nchunks_initialized async by @TomAugspurger in #2449
- chore: update pre-commit hooks by @pre-commit-ci in #2462
- Feature: store learns to delete prefixes when overwriting/creating hierarchy nodes by @jhamman in #2430
- Move BatchedCodecPipeline to zarr.core by @normanrz in #2086
- Apply assorted ruff/Pylint rules (PLR) by @DimitriPapadopoulos in #2371
- Zarr.save argument check by @brokkoli71 in #2446
- Add more ruff rules by @DimitriPapadopoulos in #2460
AsyncGenerator
should not yieldNone
by @DimitriPapadopoulos in #2464- use as_posix correctly for str and for listdir by @d-v-b in #2467
- Missing mandatory keyword argument by @DimitriPapadopoulos in #2465
- Remove useless
{...!s}
by @DimitriPapadopoulos in #2471 - Add docstrings for array module by @MSanKeys963 in #2281
- AsyncGenerator → AsyncIterator by @DimitriPapadopoulos in #2381
- Bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2 in the actions group by @dependabot in #2479
- Stateful tests for array/group manipulation by @dcherian in #2189
- Added info for Group and Array by @TomAugspurger in #2400
- chore: update pre-commit hooks by @pre-commit-ci in #2482
- Explicitly clear store in hypothesis strategy by @dcherian in #2481
- Assorted small fixes for f-strings by @DimitriPapadopoulos in #2477
- Unreachable code by @DimitriPapadopoulos in #2483
- Refactor: store mode and initialization by @jhamman in #2442
- Added Group.tree method by @TomAugspurger in #2433
- Bump numcodecs by @normanrz in #2488
- Added Store.getsize by @TomAugspurger in #2426
- fix open_array for mode r+ by @d-v-b in #2494
- don't normalize paths in StorePath.delete_dir by @d-v-b in #2493
- handle empty string prefix in zipstore delete dir by @d-v-b in #2492
- Add documentation for
zarr.core.group
by @brokkoli71 in #2452 - Add CZI Badge to README by @MSanKeys963 in #2489
- chore: update pre-commit hooks by @pre-commit-ci in #2502
- [v3] Import crc32c through numcodecs by @normanrz in #2510
- Remove asciitree dependency by @normanrz in #2511
- Refactor/narrow array name type by @d-v-b in #2499
- chore: update pre-commit hooks by @pre-commit-ci in #2517
- Multiple imports for an import name by @DimitriPapadopoulos in #2504
- Added Array.info_complete by @TomAugspurger in #2514
- Fix iterating over sharding index by @brokkoli71 in #2392
- Imported name is not used anywhere in the module by @DimitriPapadopoulos in #2520
- Update ruff and associated changes by @DimitriPapadopoulos in #2522
- [v3] Makes data contiguous in v2 codec by @normanrz in #2515
- Error when attempting to set with an array of incompatible shape. by @dcherian in #2512
- Bump sphinx-autoapi from 3.3.3 to 3.4.0 in the actions group by @dependabot in #2525
zarr.store
→zarr.storage
by @DimitriPapadopoulos in #2523- Move stateful tests to public testing API by @dcherian in #2531
- add a complete step to the test CI by @normanrz in #2521
- DOC: Proposed updates to contributor guide. by @rossbar in #2513
- Parse chunk shape to check for float values by @faymanns in #2535
- chore(deps): make fsspec and upath optional dependencies by @jhamman in #2534
- [v3] implement / deprecate zarr.tree by @jhamman in #2537
- Improve installation page by @dstansby in #2538
- chore: update pre-commit hooks by @pre-commit-ci in #2547
- Improve pre-commit configuration by @DimitriPapadopoulos in #2551
- Apply ruff preview rule RUF036 by @DimitriPapadopoulos in #2524
- rename exists_ok to overwrite by @d-v-b in #2548
- Feat/latency store by @d-v-b in #2474
- rename RemoteStore -> FsspecStore by @jhamman in #2557
- Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 in the actions group by @dependabot in #2562
- Clean up optional dependency groups by @dstansby in #2541
- add warnings when using non-spec features with v3 by @normanrz in #2556
- Shorten contributing page title by @dstansby in #2565
- Remove specs pages from docs by @dstansby in #2555
- Trim trailing whitespace using pre-commit by @dstansby in #2563
- Remove config warning if only one implementation exists by @brokkoli71 in #2571
- Remove license page from docs by @dstansby in #2570
- docs/add docstrings to synchronous API by @d-v-b in #2549
- deps: add packaging to required deps by @jhamman in #2573
- correct array.nbytes, and add tests by @d-v-b in #2576
- Add default compressors to config by @brokkoli71 in #2470
- Remove temporary doc specific to branch V3 by @DimitriPapadopoulos in #2578
- Feat/write empty chunks by @d-v-b in #2429
- Multiple imports for an import name by @DimitriPapadopoulos in #2580
- test and fix indexing for scalar arrays by @brokkoli71 in #2583
- Un-mark memory store as "for testing" by @dstansby in #2601
- remove test.py by @d-v-b in #2612
- Note that whole directories can be deleted in LocalStore by @dstansby in #2606
- fix: run-coverage command now tracks src directory by @jhamman in #2615
- Don't document zarr.codec submodules by @dstansby in #2605
- Improve deprecation of zarr.creation and zarr.convenience by @dstansby in #2609
- top-level functions for reading, creating data by @d-v-b in #2463
- Improve docstrings of zarr.api.synchronous by @dstansby in #2610
- Improve exception docs by @dstansby in #2624
- docs: split tutorial into multiple user guide sections by @jhamman in #2589
- show pprint import by @normanrz in #2632
- Fix open(..., mode='w') to create a group by @jni in #2629
- Clean up public store API by @dstansby in #2603
- docs: add migration page to user guide by @jhamman in #2596
- Move 'about' to end of table of contents by @dstansby in #2636
- docs: replace getting_started page with quickstart by @jhamman in #2590
- docs: consolidate developer docs + update contributing page for v3 by @jhamman in #2593
- docs: update doc homepage by @jhamman in #2594
- Fix create_dataset with data kwarg by @jni in #2638
- Align lines for improved rendering by @rtobar in #2648
- Adds documentation for sharding and sharding in Array.info by @normanrz in #2644
- Move deprecation notices to the top of docstrings by @dstansby in #2637
- Improve API reference doc structure by @dstansby in #2635
- Consistent use of 'Zarr format 2 or 3' by @normanrz in #2645
- Adds filters, compressors and serializer props to Array by @normanrz in #2652
- Don't draw invalid shapes in
test_vindex
by @dstansby in #2651 - Separate defaults for filters, serializers and compressors in v3 by @normanrz in #2653
- Add moto[server] to test deps for FsspecStore by @maxrjones in #2657
- chore: update pre-commit hooks by @pre-commit-ci in #2660
- Zarr v2 + Zstd: Don't persist the checksum param if false by @normanrz in #2655
- Feat/concurrent members by @d-v-b in #2519
- Fix
Group.array()
withdata
argument by @tomwhite in #2668 - Make make_store_path private by @jhamman in #2628
- add known bugs to work in progress section of the v3 migration guide by @jhamman in #2670
- Fix json indent by @will-moore in #2546
- fix: threadpool configuration by @jhamman in #2671
- api: hide zarr.core from api docs by @jhamman in #2669
- Clean up release notes in preparation for v3 by @dstansby in #2634
- Use dataclasses for ByteRangeRequests by @maxrjones in #2585
New Contributors
- @JackKelly made their first contribution in #1528
- @ziw-liu made their first contribution in #1540
- @rossbar made their first contribution in #1550
- @ph03 made their first contribution in #1581
- @jeffpeck10x made their first contribution in #1615
- @maxrjones made their first contribution in #1654
- @hoodmane made their first contribution in #1663
- @DahnJ made their first contribution in #1689
- @dcherian made their first contribution in #1724
- @itcarroll made their first contribution in #1604
- @aldenks made their first contribution in #1643
- @Charoula-Kyriakides made their first contribution in #1792
- @brokkoli71 made their first contribution in #1961
- @e-marshall made their first contribution in #2070
- @akshaysubr made their first contribution in #1967
- @sneakers-the-rat made their first contribution in #2142
- @lindseynield made their first contribution in #2210
- @agoodm made their first contribution in #2158
- @rtobar made their first contribution in #2648
- @will-moore made their first contribution in #2546
Full Changelog: v2.16.1...v3.0.0