Skip to content

Commit 24e8008

Browse files
authored
Merge branch 'main' into glob-group-filtering
2 parents eb8a78c + 915d0a3 commit 24e8008

55 files changed

Lines changed: 804 additions & 255 deletions

Some content is hidden

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

.devcontainer/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FROM mcr.microsoft.com/devcontainers/base:jammy
22

3-
ARG PIXI_VERSION=v0.59.0
3+
ARG PIXI_VERSION=v0.63.2
44

55
RUN curl -L -o /usr/local/bin/pixi -fsSL --compressed "https://github.com/prefix-dev/pixi/releases/download/${PIXI_VERSION}/pixi-$(uname -m)-unknown-linux-musl" \
66
&& chmod +x /usr/local/bin/pixi \

.github/workflows/benchmarks-last-release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ jobs:
7373
cp benchmarks/README_CI.md benchmarks.log .asv/results/
7474
working-directory: ${{ env.ASV_DIR }}
7575

76-
- uses: actions/upload-artifact@v6
76+
- uses: actions/upload-artifact@v7
7777
if: always()
7878
with:
7979
name: asv-benchmark-results-${{ runner.os }}

.github/workflows/benchmarks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ jobs:
7070
cp benchmarks/README_CI.md benchmarks.log .asv/results/
7171
working-directory: ${{ env.ASV_DIR }}
7272

73-
- uses: actions/upload-artifact@v6
73+
- uses: actions/upload-artifact@v7
7474
if: always()
7575
with:
7676
name: asv-benchmark-results-${{ runner.os }}

.github/workflows/ci-additional.yaml

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ concurrency:
1414

1515
env:
1616
FORCE_COLOR: 3
17-
PIXI_VERSION: "v0.63.2"
1817

1918
jobs:
2019
detect-ci-trigger:
@@ -46,11 +45,9 @@ jobs:
4645

4746
steps:
4847
- uses: actions/checkout@v6
49-
- uses: Parcels-code/pixi-lock/create-and-cache@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
48+
- uses: Parcels-code/pixi-lock/create-and-cache@a9aee67fa67426e6b0297fa5bef80600572be153
5049
id: pixi-lock
51-
with:
52-
pixi-version: ${{env.PIXI_VERSION}}
53-
- uses: actions/upload-artifact@v6
50+
- uses: actions/upload-artifact@v7
5451
with:
5552
name: pixi-lock
5653
path: pixi.lock
@@ -75,7 +72,7 @@ jobs:
7572
echo "TODAY=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
7673
7774
- name: Restore cached pixi lockfile
78-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
75+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
7976
with:
8077
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
8178
- uses: prefix-dev/setup-pixi@v0.9.4
@@ -113,7 +110,7 @@ jobs:
113110
with:
114111
fetch-depth: 0 # Fetch all history for all branches and tags.
115112
- name: Restore cached pixi lockfile
116-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
113+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
117114
with:
118115
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
119116
- uses: prefix-dev/setup-pixi@v0.9.4
@@ -158,7 +155,7 @@ jobs:
158155
with:
159156
fetch-depth: 0 # Fetch all history for all branches and tags.
160157
- name: Restore cached pixi lockfile
161-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
158+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
162159
with:
163160
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
164161
- uses: prefix-dev/setup-pixi@v0.9.4
@@ -188,6 +185,52 @@ jobs:
188185
name: codecov-umbrella
189186
fail_ci_if_error: false
190187

188+
stubtest:
189+
name: Stubtest
190+
runs-on: "ubuntu-latest"
191+
needs: [detect-ci-trigger, cache-pixi-lock]
192+
# Phase 1: Non-blocking (informational only)
193+
# Change to 'false' once stubtest is stable to make it required
194+
continue-on-error: true
195+
defaults:
196+
run:
197+
shell: bash -l {0}
198+
env:
199+
PIXI_ENV: test-py313-with-typing
200+
201+
steps:
202+
- uses: actions/checkout@v6
203+
with:
204+
fetch-depth: 0
205+
206+
- name: Restore cached pixi lockfile
207+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
208+
with:
209+
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
210+
- uses: prefix-dev/setup-pixi@v0.9.4
211+
with:
212+
pixi-version: ${{ needs.cache-pixi-lock.outputs.pixi-version }}
213+
cache: true
214+
environments: ${{ env.PIXI_ENV }}
215+
cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }}
216+
217+
- name: Version info
218+
run: |
219+
pixi run -e ${{env.PIXI_ENV}} -- python xarray/util/print_versions.py
220+
221+
- name: Install type stubs
222+
run: |
223+
pixi run -e ${{env.PIXI_ENV}} -- python -m mypy --install-types --non-interactive xarray/ || true
224+
225+
- name: Run stubtest (core modules)
226+
run: |
227+
pixi run -e ${{env.PIXI_ENV}} -- python -m mypy.stubtest \
228+
xarray.core.dataarray \
229+
xarray.core.dataset \
230+
xarray.core.variable \
231+
--mypy-config-file pyproject.toml \
232+
--allowlist _stubtest/allowlist.txt
233+
191234
pyright:
192235
name: Pyright | ${{ matrix.pixi-env }}"
193236
runs-on: "ubuntu-latest"
@@ -211,7 +254,7 @@ jobs:
211254
fetch-depth: 0 # Fetch all history for all branches and tags.
212255

213256
- name: Restore cached pixi lockfile
214-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
257+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
215258
with:
216259
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
217260
- uses: prefix-dev/setup-pixi@v0.9.4
@@ -259,7 +302,7 @@ jobs:
259302
fetch-depth: 0 # Fetch all history for all branches and tags.
260303

261304
- name: Restore cached pixi lockfile
262-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
305+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
263306
with:
264307
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
265308

.github/workflows/ci.yaml

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ concurrency:
1414

1515
env:
1616
FORCE_COLOR: 3
17-
PIXI_VERSION: "v0.63.2"
1817

1918
jobs:
2019
detect-ci-trigger:
@@ -43,15 +42,12 @@ jobs:
4342

4443
outputs:
4544
cache-key: ${{ steps.pixi-lock.outputs.cache-key }}
46-
pixi-version: ${{ steps.pixi-lock.outputs.pixi-version }}
4745

4846
steps:
4947
- uses: actions/checkout@v6
50-
- uses: Parcels-code/pixi-lock/create-and-cache@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
48+
- uses: Parcels-code/pixi-lock/create-and-cache@a9aee67fa67426e6b0297fa5bef80600572be153
5149
id: pixi-lock
52-
with:
53-
pixi-version: ${{env.PIXI_VERSION}}
54-
- uses: actions/upload-artifact@v6
50+
- uses: actions/upload-artifact@v7
5551
with:
5652
name: pixi-lock
5753
path: pixi.lock
@@ -100,7 +96,7 @@ jobs:
10096
with:
10197
fetch-depth: 0 # Fetch all history for all branches and tags.
10298
- name: Restore cached pixi lockfile
103-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
99+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
104100
with:
105101
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
106102
- uses: prefix-dev/setup-pixi@v0.9.4
@@ -164,7 +160,7 @@ jobs:
164160
165161
- name: Upload test results
166162
if: always()
167-
uses: actions/upload-artifact@v6
163+
uses: actions/upload-artifact@v7
168164
with:
169165
name: Test results for OS ${{ runner.os }} pixi-env ${{ matrix.pixi-env }} pytest-addopts ${{ matrix.pytest-addopts }}
170166
path: pytest.xml
@@ -186,7 +182,7 @@ jobs:
186182
if: github.repository == 'pydata/xarray'
187183
steps:
188184
- name: Upload
189-
uses: actions/upload-artifact@v6
185+
uses: actions/upload-artifact@v7
190186
with:
191187
name: Event File
192188
path: ${{ github.event_path }}

.github/workflows/hypothesis.yaml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ on:
1313

1414
env:
1515
FORCE_COLOR: 3
16-
PIXI_VERSION: "v0.63.2"
1716

1817
jobs:
1918
detect-ci-trigger:
@@ -53,11 +52,9 @@ jobs:
5352
pixi-version: ${{ steps.pixi-lock.outputs.pixi-version }}
5453
steps:
5554
- uses: actions/checkout@v6
56-
- uses: Parcels-code/pixi-lock/create-and-cache@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
55+
- uses: Parcels-code/pixi-lock/create-and-cache@a9aee67fa67426e6b0297fa5bef80600572be153
5756
id: pixi-lock
58-
with:
59-
pixi-version: ${{env.PIXI_VERSION}}
60-
- uses: actions/upload-artifact@v6
57+
- uses: actions/upload-artifact@v7
6158
with:
6259
name: pixi-lock
6360
path: pixi.lock
@@ -81,7 +78,7 @@ jobs:
8178
fetch-depth: 0 # Fetch all history for all branches and tags.
8279

8380
- name: Restore cached pixi lockfile
84-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
81+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
8582
with:
8683
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
8784
- uses: prefix-dev/setup-pixi@v0.9.4

.github/workflows/pypi-release.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
else
5050
echo "✅ Looks good"
5151
fi
52-
- uses: actions/upload-artifact@v6
52+
- uses: actions/upload-artifact@v7
5353
with:
5454
name: releases
5555
path: dist
@@ -62,7 +62,7 @@ jobs:
6262
name: Install Python
6363
with:
6464
python-version: "3.12"
65-
- uses: actions/download-artifact@v7
65+
- uses: actions/download-artifact@v8
6666
with:
6767
name: releases
6868
path: dist
@@ -89,7 +89,7 @@ jobs:
8989
id-token: write
9090

9191
steps:
92-
- uses: actions/download-artifact@v7
92+
- uses: actions/download-artifact@v8
9393
with:
9494
name: releases
9595
path: dist
@@ -112,7 +112,7 @@ jobs:
112112
id-token: write
113113

114114
steps:
115-
- uses: actions/download-artifact@v7
115+
- uses: actions/download-artifact@v8
116116
with:
117117
name: releases
118118
path: dist

.github/workflows/upstream-dev-ci.yaml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ concurrency:
1717

1818
env:
1919
FORCE_COLOR: 3
20-
PIXI_VERSION: "v0.63.2"
2120

2221
jobs:
2322
detect-ci-trigger:
@@ -60,11 +59,9 @@ jobs:
6059
pixi-version: ${{ steps.pixi-lock.outputs.pixi-version }}
6160
steps:
6261
- uses: actions/checkout@v6
63-
- uses: Parcels-code/pixi-lock/create-and-cache@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
62+
- uses: Parcels-code/pixi-lock/create-and-cache@a9aee67fa67426e6b0297fa5bef80600572be153
6463
id: pixi-lock
65-
with:
66-
pixi-version: ${{env.PIXI_VERSION}}
67-
- uses: actions/upload-artifact@v6
64+
- uses: actions/upload-artifact@v7
6865
with:
6966
name: pixi-lock
7067
path: pixi.lock
@@ -73,6 +70,8 @@ jobs:
7370
name: upstream-dev
7471
runs-on: ubuntu-latest
7572
needs: cache-pixi-lock
73+
if: |
74+
always() && needs.cache-pixi-lock.result == 'success'
7675
defaults:
7776
run:
7877
shell: bash -l {0}
@@ -85,7 +84,7 @@ jobs:
8584
with:
8685
fetch-depth: 0 # Fetch all history for all branches and tags.
8786
- name: Restore cached pixi lockfile
88-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
87+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
8988
with:
9089
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
9190
- uses: prefix-dev/setup-pixi@v0.9.4
@@ -138,7 +137,7 @@ jobs:
138137
fetch-depth: 0 # Fetch all history for all branches and tags.
139138

140139
- name: Restore cached pixi lockfile
141-
uses: Parcels-code/pixi-lock/restore@9a2866f8258b87a3c616d5ad7d51c6cd853df78b
140+
uses: Parcels-code/pixi-lock/restore@a9aee67fa67426e6b0297fa5bef80600572be153
142141
with:
143142
cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }}
144143
- uses: prefix-dev/setup-pixi@v0.9.4

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ repos:
2424
- id: rst-inline-touching-normal
2525
- id: text-unicode-replacement-char
2626
- repo: https://github.com/astral-sh/ruff-pre-commit
27-
rev: v0.14.14
27+
rev: v0.15.4
2828
hooks:
2929
- id: ruff-check
3030
args: ["--fix", "--show-fixes"]
@@ -71,11 +71,11 @@ repos:
7171
- id: taplo-lint
7272
args: ["--no-schema"]
7373
- repo: https://github.com/abravalheri/validate-pyproject
74-
rev: v0.24.1
74+
rev: v0.25
7575
hooks:
7676
- id: validate-pyproject
7777
additional_dependencies: ["validate-pyproject-schema-store[all]"]
7878
- repo: https://github.com/adhtruong/mirrors-typos
79-
rev: v1.42.3
79+
rev: v1.44.0
8080
hooks:
8181
- id: typos

CORE_TEAM_GUIDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ resources such as:
272272
- [`pre-commit`](https://pre-commit.com) hooks for autoformatting.
273273
- [`ruff`](https://github.com/astral-sh/ruff) autoformatting and linting.
274274
- [python-xarray](https://stackoverflow.com/questions/tagged/python-xarray) on Stack Overflow.
275+
- The Xarray channel in the [OSSci Zulip](https://ossci.zulipchat.com/)
275276
- [@xarray_dev](https://x.com/xarray_dev) on X.
276277
- [xarray-dev](https://discord.gg/bsSGdwBn) discord community (normally only used for remote synchronous chat during sprints).
277278

0 commit comments

Comments
 (0)