Skip to content

Commit 2351e57

Browse files
authored
Merge branch 'main' into shards-multiprocessing
2 parents 6d96ad7 + b5e0793 commit 2351e57

File tree

147 files changed

+7891
-2419
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+7891
-2419
lines changed

.github/ISSUE_TEMPLATE/release-checklist.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ assignees: ''
77

88
---
99

10-
**Release**: [v0.x.x](https://github.com/zarr-developers/zarr-python/milestones/?)
10+
**Release**: [v3.x.x](https://github.com/zarr-developers/zarr-python/milestones/?)
1111
**Scheduled Date**: 20YY/MM/DD
1212

1313
**Priority PRs/issues to complete prior to release**
@@ -16,15 +16,17 @@ assignees: ''
1616

1717
**Before release**:
1818

19+
- [ ] Make sure the release branch (e.g., `3.1.x`) is up to date with any backports.
1920
- [ ] Make sure that all pull requests which will be included in the release have been properly documented as changelog files in the [`changes/` directory](https://github.com/zarr-developers/zarr-python/tree/main/changes).
20-
- [ ] Run ``towncrier build --version x.y.z`` to create the changelog, and commit the result to the main branch.
21+
- [ ] Run ``towncrier build --version x.y.z`` to create the changelog, and commit the result to the release branch.
2122
- [ ] Check [SPEC 0](https://scientific-python.org/specs/spec-0000/#support-window) to see if the minimum supported version of Python or NumPy needs bumping.
2223
- [ ] Check to ensure that:
2324
- [ ] Deprecated workarounds/codes/tests are removed. Run `grep "# TODO" **/*.py` to find all potential TODOs.
2425
- [ ] All tests pass in the ["Tests" workflow](https://github.com/zarr-developers/zarr-python/actions/workflows/test.yml).
2526
- [ ] All tests pass in the ["GPU Tests" workflow](https://github.com/zarr-developers/zarr-python/actions/workflows/gpu_test.yml).
2627
- [ ] All tests pass in the ["Hypothesis" workflow](https://github.com/zarr-developers/zarr-python/actions/workflows/hypothesis.yaml).
2728
- [ ] Check that downstream libraries work well (maintainers can make executive decisions about whether all checks are required for this release).
29+
- [ ] numcodecs
2830
- [ ] Xarray (@jhamman @dcherian @TomNicholas)
2931
- Zarr's upstream compatibility is tested via the [Upstream Dev CI worklow](https://github.com/pydata/xarray/actions/workflows/upstream-dev-ci.yaml).
3032
- Click on the most recent workflow and check that the `upstream-dev` job has run and passed. `upstream-dev` is not run on all all workflow runs.
@@ -40,6 +42,7 @@ assignees: ''
4042
- [ ] Go to https://github.com/zarr-developers/zarr-python/releases.
4143
- [ ] Click "Draft a new release".
4244
- [ ] Choose a version number prefixed with a `v` (e.g. `v0.0.0`). For pre-releases, include the appropriate suffix (e.g. `v0.0.0a1` or `v0.0.0rc2`).
45+
- [ ] Set the target branch to the release branch (e.g., `3.1.x`)
4346
- [ ] Set the description of the release to: `See release notes https://zarr.readthedocs.io/en/stable/release-notes.html#release-0-0-0`, replacing the correct version numbers. For pre-release versions, the URL should omit the pre-release suffix, e.g. "a1" or "rc1".
4447
- [ ] Click on "Generate release notes" to auto-fill the description.
4548
- [ ] Make a release by clicking the 'Publish Release' button, this will automatically create a tag too.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Check changelog entries
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
check-changelogs:
8+
name: Check changelog entries
9+
runs-on: ubuntu-latest
10+
11+
steps:
12+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
13+
14+
- name: Install uv
15+
uses: astral-sh/setup-uv@b75a909f75acd358c2196fb9a5f1299a9a8868a4 # v6.7.0
16+
17+
- name: Check changelog entries
18+
run: uv run --no-sync python ci/check_changelog_entries.py

.github/workflows/gpu_test.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ name: GPU Test
55

66
on:
77
push:
8-
branches: [ main ]
8+
branches: [ main, 3.1.x ]
99
pull_request:
10-
branches: [ main ]
10+
branches: [ main, 3.1.x ]
1111
workflow_dispatch:
1212

1313
env:
@@ -29,7 +29,9 @@ jobs:
2929
dependency-set: ["minimal"]
3030

3131
steps:
32-
- uses: actions/checkout@v4
32+
- uses: actions/checkout@v5
33+
with:
34+
fetch-depth: 0 # grab all branches and tags
3335
# - name: cuda-toolkit
3436
# uses: Jimver/[email protected]
3537
# id: cuda-toolkit
@@ -49,7 +51,7 @@ jobs:
4951
echo $LD_LIBRARY_PATH
5052
nvcc -V
5153
- name: Set up Python
52-
uses: actions/setup-python@v5
54+
uses: actions/setup-python@v6
5355
with:
5456
python-version: ${{ matrix.python-version }}
5557
cache: 'pip'
@@ -63,7 +65,7 @@ jobs:
6365
hatch env run -e gputest.py${{ matrix.python-version }}-${{ matrix.numpy-version }}-${{ matrix.dependency-set }} list-env
6466
- name: Run Tests
6567
run: |
66-
hatch env run --env gputest.py${{ matrix.python-version }}-${{ matrix.numpy-version }}-${{ matrix.dependency-set }} run-coverage
68+
hatch env run --env gputest.py${{ matrix.python-version }}-${{ matrix.numpy-version }}-${{ matrix.dependency-set }} run-coverage-gpu
6769
6870
- name: Upload coverage
6971
uses: codecov/codecov-action@13ce06bfc6bbe3ecf90edbbf1bc32fe5978ca1d3 # v5.3.1

.github/workflows/hypothesis.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
name: Slow Hypothesis CI
22
on:
33
push:
4-
branches: [main, 3.0.x]
4+
branches: [main, 3.1.x]
55
pull_request:
6-
branches: [main, 3.0.x]
6+
branches: [main, 3.1.x]
77
types: [opened, reopened, synchronize, labeled]
88
schedule:
99
- cron: "0 0 * * *" # Daily “At 00:00” UTC
@@ -28,7 +28,7 @@ jobs:
2828
dependency-set: ["optional"]
2929

3030
steps:
31-
- uses: actions/checkout@v4
31+
- uses: actions/checkout@v5
3232
- name: Set HYPOTHESIS_PROFILE based on trigger
3333
run: |
3434
if [[ "${{ github.event_name }}" == "schedule" || "${{ github.event_name }}" == "workflow_dispatch" ]]; then
@@ -37,7 +37,7 @@ jobs:
3737
echo "HYPOTHESIS_PROFILE=ci" >> $GITHUB_ENV
3838
fi
3939
- name: Set up Python
40-
uses: actions/setup-python@v5
40+
uses: actions/setup-python@v6
4141
with:
4242
python-version: ${{ matrix.python-version }}
4343
cache: 'pip'
@@ -87,7 +87,7 @@ jobs:
8787
&& steps.status.outcome == 'failure'
8888
&& github.event_name == 'schedule'
8989
&& github.repository_owner == 'zarr-developers'
90-
uses: xarray-contrib/issue-from-pytest-log@v1
90+
uses: scientific-python/issue-from-pytest-log-action@v1
9191
with:
9292
log-path: output-${{ matrix.python-version }}-log.jsonl
9393
issue-title: "Nightly Hypothesis tests failed"

.github/workflows/needs_release_notes.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
pull-requests: write
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
14+
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
1515
with:
1616
repo-token: ${{ secrets.GITHUB_TOKEN }}
1717
sync-labels: true
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Nightly Wheels
2+
3+
on:
4+
schedule:
5+
# Run nightly at 2 AM UTC
6+
- cron: '0 2 * * *'
7+
workflow_dispatch:
8+
9+
jobs:
10+
build_and_upload_nightly:
11+
name: Build and upload nightly wheels
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- uses: actions/checkout@v5
16+
with:
17+
submodules: true
18+
fetch-depth: 0
19+
20+
- uses: actions/setup-python@v6
21+
name: Install Python
22+
with:
23+
python-version: '3.13'
24+
25+
- name: Install build dependencies
26+
run: |
27+
python -m pip install --upgrade pip
28+
pip install hatch
29+
30+
- name: Build wheel and sdist
31+
run: hatch build
32+
33+
- name: Upload nightly wheels
34+
uses: scientific-python/upload-nightly-action@b36e8c0c10dbcfd2e05bf95f17ef8c14fd708dbf
35+
with:
36+
artifacts_path: dist
37+
anaconda_nightly_upload_token: ${{ secrets.ANACONDA_ORG_UPLOAD_TOKEN }}

.github/workflows/releases.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ jobs:
1111
fail-fast: false
1212

1313
steps:
14-
- uses: actions/checkout@v4
14+
- uses: actions/checkout@v5
1515
with:
1616
submodules: true
1717
fetch-depth: 0
1818

19-
- uses: actions/setup-python@v5.2.0
19+
- uses: actions/setup-python@v6
2020
name: Install Python
2121
with:
2222
python-version: '3.11'
@@ -36,7 +36,7 @@ jobs:
3636
needs: [build_artifacts]
3737
runs-on: ubuntu-latest
3838
steps:
39-
- uses: actions/download-artifact@v4
39+
- uses: actions/download-artifact@v5
4040
with:
4141
name: releases
4242
path: dist
@@ -51,11 +51,11 @@ jobs:
5151
runs-on: ubuntu-latest
5252
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
5353
steps:
54-
- uses: actions/download-artifact@v4
54+
- uses: actions/download-artifact@v5
5555
with:
5656
name: releases
5757
path: dist
58-
- uses: pypa/gh-action-pypi-publish@v1.12.4
58+
- uses: pypa/gh-action-pypi-publish@v1.13.0
5959
with:
6060
user: __token__
6161
password: ${{ secrets.pypi_password }}

.github/workflows/test.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ name: Test
55

66
on:
77
push:
8-
branches: [ main, 3.0.x ]
8+
branches: [ main, 3.1.x ]
99
pull_request:
10-
branches: [ main, 3.0.x ]
10+
branches: [ main, 3.1.x ]
1111
workflow_dispatch:
1212

1313
concurrency:
@@ -21,20 +21,20 @@ jobs:
2121
strategy:
2222
matrix:
2323
python-version: ['3.11', '3.12', '3.13']
24-
numpy-version: ['1.25', '2.2']
24+
numpy-version: ['1.26', '2.2']
2525
dependency-set: ["minimal", "optional"]
2626
os: ["ubuntu-latest"]
2727
include:
2828
- python-version: '3.11'
29-
numpy-version: '1.25'
29+
numpy-version: '1.26'
3030
dependency-set: 'optional'
3131
os: 'macos-latest'
3232
- python-version: '3.13'
3333
numpy-version: '2.2'
3434
dependency-set: 'optional'
3535
os: 'macos-latest'
3636
- python-version: '3.11'
37-
numpy-version: '1.25'
37+
numpy-version: '1.26'
3838
dependency-set: 'optional'
3939
os: 'windows-latest'
4040
- python-version: '3.13'
@@ -44,11 +44,11 @@ jobs:
4444
runs-on: ${{ matrix.os }}
4545

4646
steps:
47-
- uses: actions/checkout@v4
47+
- uses: actions/checkout@v5
4848
with:
4949
fetch-depth: 0 # grab all branches and tags
5050
- name: Set up Python
51-
uses: actions/setup-python@v5
51+
uses: actions/setup-python@v6
5252
with:
5353
python-version: ${{ matrix.python-version }}
5454
cache: 'pip'
@@ -86,11 +86,11 @@ jobs:
8686
- python-version: "3.11"
8787
dependency-set: upstream
8888
steps:
89-
- uses: actions/checkout@v4
89+
- uses: actions/checkout@v5
9090
with:
9191
fetch-depth: 0
9292
- name: Set up Python
93-
uses: actions/setup-python@v5
93+
uses: actions/setup-python@v6
9494
with:
9595
python-version: ${{ matrix.python-version }}
9696
cache: 'pip'
@@ -115,11 +115,11 @@ jobs:
115115
name: doctests
116116
runs-on: ubuntu-latest
117117
steps:
118-
- uses: actions/checkout@v4
118+
- uses: actions/checkout@v5
119119
with:
120120
fetch-depth: 0 # required for hatch version discovery, which is needed for numcodecs.zarr3
121121
- name: Set up Python
122-
uses: actions/setup-python@v5
122+
uses: actions/setup-python@v6
123123
with:
124124
python-version: '3.13'
125125
cache: 'pip'

.pre-commit-config.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ ci:
66
default_stages: [pre-commit, pre-push]
77
repos:
88
- repo: https://github.com/astral-sh/ruff-pre-commit
9-
rev: v0.12.2
9+
rev: v0.12.11
1010
hooks:
1111
- id: ruff-check
1212
args: ["--fix", "--show-fixes"]
@@ -17,12 +17,12 @@ repos:
1717
- id: codespell
1818
args: ["-L", "fo,ihs,kake,te", "-S", "fixture"]
1919
- repo: https://github.com/pre-commit/pre-commit-hooks
20-
rev: v5.0.0
20+
rev: v6.0.0
2121
hooks:
2222
- id: check-yaml
2323
- id: trailing-whitespace
2424
- repo: https://github.com/pre-commit/mirrors-mypy
25-
rev: v1.16.1
25+
rev: v1.17.1
2626
hooks:
2727
- id: mypy
2828
files: src|tests
@@ -49,10 +49,10 @@ repos:
4949
- id: rst-directive-colons
5050
- id: rst-inline-touching-normal
5151
- repo: https://github.com/numpy/numpydoc
52-
rev: v1.8.0
52+
rev: v1.9.0
5353
hooks:
5454
- id: numpydoc-validation
5555
- repo: https://github.com/twisted/towncrier
56-
rev: 24.8.0
56+
rev: 25.8.0
5757
hooks:
5858
- id: towncrier-check

LICENSE.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2015-2024 Zarr Developers <https://github.com/zarr-developers>
3+
Copyright (c) 2015-2025 Zarr Developers <https://github.com/zarr-developers>
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

0 commit comments

Comments
 (0)