From 253b58923fedc138b02245e4a248949cd7d0c2f0 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:14:09 +0200 Subject: [PATCH 01/10] pixi env --- pixi.toml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pixi.toml b/pixi.toml index 7e8d4ad4b4a..817014c58a7 100644 --- a/pixi.toml +++ b/pixi.toml @@ -414,6 +414,9 @@ dask-core = "<0.0a0" [feature.nightly.dependencies] python = "*" +[feature.py315.dependencies] +python = "3.15.*" + [environments] # Testing # test-just-xarray = { features = ["test"] } # https://github.com/pydata/xarray/pull/10888/files#r2511336147 @@ -468,6 +471,17 @@ test-py312 = { features = [ "extras", ] } +test-py315 = { features = [ + "py315", + "test", + "backends", + "accel", + # "numba", + "dask", + "viz", + "extras", +] } + test-py312-with-typing = { features = [ "py312", "test", From f73260f3c584d99cd8b28538a431ecb84b74590c Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:14:35 +0200 Subject: [PATCH 02/10] version classifier --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 98f522bd26a..f3d6a461b9c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,6 +9,7 @@ classifiers = [ "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Topic :: Scientific/Engineering", ] description = "N-D labeled arrays and datasets in Python" From a03d9a7489cee4604032807c30a84155adb2856e Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:36:09 +0200 Subject: [PATCH 03/10] upgrade the other environments, too --- pixi.toml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pixi.toml b/pixi.toml index 817014c58a7..81a8dc6547b 100644 --- a/pixi.toml +++ b/pixi.toml @@ -430,8 +430,8 @@ test-py313 = { features = [ "viz", "extras", ] } -test-py314-no-numba = { features = [ - "py314", +test-py315-no-numba = { features = [ + "py315", "test", "backends", "accel", @@ -439,7 +439,7 @@ test-py314-no-numba = { features = [ "viz", "extras", ] } -test-py314-no-dask = { features = [ +test-py315-no-dask = { features = [ "py314", "nodask", "test", @@ -476,7 +476,7 @@ test-py315 = { features = [ "test", "backends", "accel", - # "numba", + "numba", "dask", "viz", "extras", @@ -495,8 +495,8 @@ test-py312-with-typing = { features = [ "typing-stubs", ] } -test-py314-with-typing = { features = [ - "py314", +test-py315-with-typing = { features = [ + "py315", "test", "backends", "accel", From 74f14a46f925f624e8865938a8b99c2769663803 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:36:28 +0200 Subject: [PATCH 04/10] upgrade the dev environments --- pixi.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pixi.toml b/pixi.toml index 81a8dc6547b..adf2985c693 100644 --- a/pixi.toml +++ b/pixi.toml @@ -536,7 +536,7 @@ doc = { features = [ pre-commit = { features = ["pre-commit"], no-default-feature = true } release = { features = ["release"], no-default-feature = true } default = { features = [ - "py313", + "py315", "test", "backends", "accel", From ce6cf8133bca5ef05b5e08a7283486a769e316f1 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:39:05 +0200 Subject: [PATCH 05/10] upgrade the nightly CI, too --- ci/nightly/pixi.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci/nightly/pixi.toml b/ci/nightly/pixi.toml index 8180f796d87..14f4b49cb61 100644 --- a/ci/nightly/pixi.toml +++ b/ci/nightly/pixi.toml @@ -20,8 +20,8 @@ coveralls = "*" [feature.test.tasks] test = { cmd = "pytest", description = "Run the test suite with pytest." } -[feature.py314.dependencies] -python = "3.14.*" +[feature.py315.dependencies] +python = "3.15.*" # TODO: Remove `target.unix` restriction once pandas nightly has win-64 wheels again. # Without this, `pixi lock` fails because it can't solve the nightly feature for win-64, From b69ee6a0a1fb53268ee5b615045d885c106cf5b3 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:43:06 +0200 Subject: [PATCH 06/10] [test-upstream] From 9bccc3237b7310f94baf53111ebdd3be4ad67886 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:46:57 +0200 Subject: [PATCH 07/10] new env names --- .github/workflows/ci-additional.yaml | 8 ++++---- .github/workflows/ci.yaml | 10 +++++----- ci/nightly/pixi.toml | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci-additional.yaml b/.github/workflows/ci-additional.yaml index 86371e055e0..827fc330ea8 100644 --- a/.github/workflows/ci-additional.yaml +++ b/.github/workflows/ci-additional.yaml @@ -69,7 +69,7 @@ jobs: run: shell: bash -l {0} env: - PIXI_ENV: "test-py313" + PIXI_ENV: "test-py315" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: @@ -114,7 +114,7 @@ jobs: run: shell: bash -l {0} env: - PIXI_ENV: test-py314-with-typing + PIXI_ENV: test-py315-with-typing steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -217,7 +217,7 @@ jobs: run: shell: bash -l {0} env: - PIXI_ENV: test-py314-with-typing + PIXI_ENV: test-py315-with-typing steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -257,7 +257,7 @@ jobs: strategy: fail-fast: false matrix: - pixi-env: ["test-py314-with-typing", "test-py312-with-typing"] + pixi-env: ["test-py315-with-typing", "test-py312-with-typing"] if: | always() && ( diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 677942ad8ee..c4e886fa2d8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -74,7 +74,7 @@ jobs: matrix: os: ["ubuntu-latest", "macos-latest", "windows-latest"] # Bookend python versions - pixi-env: ["test-py312", "test-py314"] + pixi-env: ["test-py312", "test-py314", "test-py315"] pytest-addopts: [""] include: # Minimum python version: @@ -85,11 +85,11 @@ jobs: - pixi-env: "test-py312-min-versions" os: ubuntu-latest # Latest python version: - - pixi-env: "test-py314-no-numba" + - pixi-env: "test-py315-no-numba" os: ubuntu-latest - - pixi-env: "test-py314-no-dask" + - pixi-env: "test-py315-no-dask" os: ubuntu-latest - - pixi-env: "test-py314" + - pixi-env: "test-py315" pytest-addopts: "flaky" os: ubuntu-latest # The mypy tests must be executed using only 1 process in order to guarantee @@ -98,7 +98,7 @@ jobs: pytest-addopts: "mypy" numprocesses: 1 os: ubuntu-latest - - pixi-env: "test-py314-with-typing" + - pixi-env: "test-py315-with-typing" numprocesses: 1 os: ubuntu-latest diff --git a/ci/nightly/pixi.toml b/ci/nightly/pixi.toml index 14f4b49cb61..463a198ea94 100644 --- a/ci/nightly/pixi.toml +++ b/ci/nightly/pixi.toml @@ -124,7 +124,7 @@ mypy = { cmd = "mypy --install-types --non-interactive --cobertura-xml-report my [environments] test-nightly = { features = [ - "py314", + "py315", "nightly", "test", # Deliberately no "typing": type stubs cap numpy<2.5 and would displace the @@ -138,7 +138,7 @@ test-nightly = { features = [ # wheel); every other dependency still comes from the nightly wheels / git, so # this catches typing breakage from upstream development versions. mypy-upstream = { features = [ - "py314", + "py315", "nightly", "test", "typing", From 016c094014046dedc333f26955eba278358f26a9 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:48:31 +0200 Subject: [PATCH 08/10] [test-upstream] From 339ba727cb2810553aa9e6c46befa76f443cb996 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 00:55:03 +0200 Subject: [PATCH 09/10] back to 3.14 for nightly --- ci/nightly/pixi.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ci/nightly/pixi.toml b/ci/nightly/pixi.toml index 463a198ea94..8180f796d87 100644 --- a/ci/nightly/pixi.toml +++ b/ci/nightly/pixi.toml @@ -20,8 +20,8 @@ coveralls = "*" [feature.test.tasks] test = { cmd = "pytest", description = "Run the test suite with pytest." } -[feature.py315.dependencies] -python = "3.15.*" +[feature.py314.dependencies] +python = "3.14.*" # TODO: Remove `target.unix` restriction once pandas nightly has win-64 wheels again. # Without this, `pixi lock` fails because it can't solve the nightly feature for win-64, @@ -124,7 +124,7 @@ mypy = { cmd = "mypy --install-types --non-interactive --cobertura-xml-report my [environments] test-nightly = { features = [ - "py315", + "py314", "nightly", "test", # Deliberately no "typing": type stubs cap numpy<2.5 and would displace the @@ -138,7 +138,7 @@ test-nightly = { features = [ # wheel); every other dependency still comes from the nightly wheels / git, so # this catches typing breakage from upstream development versions. mypy-upstream = { features = [ - "py315", + "py314", "nightly", "test", "typing", From 8ac3db51c2a9c5ccca2410375ac114456e8e38b4 Mon Sep 17 00:00:00 2001 From: Justus Magin Date: Sat, 24 Oct 2026 01:20:32 +0200 Subject: [PATCH 10/10] upgrade the docs env, too [skip-ci] --- pixi.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pixi.toml b/pixi.toml index adf2985c693..96dcf1f14f5 100644 --- a/pixi.toml +++ b/pixi.toml @@ -187,7 +187,7 @@ generate-ops-ci = { cmd = 'test -z "$(git status --porcelain)" && echo "Success! ] } [feature.doc.dependencies] -python = "3.14.*" +python = "3.15.*" cartopy_offlinedata = "*" # Natural Earth data, avoids downloads (and timeouts) while executing notebooks kerchunk = "*" ipykernel = "*"