From 89f095ffe03140e121da6e2d47a95dea9ead6dda Mon Sep 17 00:00:00 2001 From: Aaron Spring Date: Fri, 25 Sep 2026 11:49:37 +0200 Subject: [PATCH] Drop Python 3.10, support 3.11 to 3.14 following xarray Closes #468 Co-Authored-By: Claude Opus 5.5 --- .github/workflows/xskillscore_installs.yml | 2 +- .github/workflows/xskillscore_testing.yml | 4 ++-- AGENTS.md | 4 ++-- CHANGELOG.rst | 3 ++- ci/dev.yml | 2 +- ci/doc.yml | 2 +- ci/docs_notebooks.yml | 2 +- ci/minimum-tests.yml | 2 +- pyproject.toml | 6 +++--- 9 files changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/xskillscore_installs.yml b/.github/workflows/xskillscore_installs.yml index d6216fbf..05281bbc 100644 --- a/.github/workflows/xskillscore_installs.yml +++ b/.github/workflows/xskillscore_installs.yml @@ -37,7 +37,7 @@ jobs: strategy: matrix: os: [ "ubuntu-latest", "macos-latest", "windows-latest" ] - python-version: [ "3.10" ] + python-version: [ "3.11" ] steps: - uses: actions/checkout@v5 with: diff --git a/.github/workflows/xskillscore_testing.yml b/.github/workflows/xskillscore_testing.yml index 1a4e2b59..9aa81fa0 100644 --- a/.github/workflows/xskillscore_testing.yml +++ b/.github/workflows/xskillscore_testing.yml @@ -38,7 +38,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.10", "3.11", "3.12", "3.13" ] + python-version: [ "3.11", "3.12", "3.13", "3.14" ] steps: - uses: actions/checkout@v5 with: @@ -102,7 +102,7 @@ jobs: shell: bash -l {0} strategy: matrix: - python-version: [ "3.10" ] + python-version: [ "3.11" ] steps: - uses: actions/checkout@v5 with: diff --git a/AGENTS.md b/AGENTS.md index a65a9ed3..22f151b0 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -185,8 +185,8 @@ All metrics support Dask arrays via `dask="parallelized"` in `xr.apply_ufunc`. N ## Python Support -- Minimum Python version: 3.9 -- Supported versions: 3.9, 3.10, 3.11, 3.12, 3.13 +- Minimum Python version: 3.11 +- Supported versions: 3.11, 3.12, 3.13, 3.14 (following xarray) ## Key Dependencies diff --git a/CHANGELOG.rst b/CHANGELOG.rst index b8289808..2d3a6396 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,7 +10,8 @@ xskillscore vNext (unreleased) Breaking Changes ~~~~~~~~~~~~~~~~ -- Dropped support for Python 3.9. The minimum supported version is now Python 3.10. +- Dropped support for Python 3.9 and 3.10. The minimum supported version is now + Python 3.11, following xarray's support window (3.11 to 3.14). (:issue:`468`) `Aaron Spring`_ Documentation diff --git a/ci/dev.yml b/ci/dev.yml index 8f5462b1..ca521ea9 100644 --- a/ci/dev.yml +++ b/ci/dev.yml @@ -2,7 +2,7 @@ name: xskillscore-dev channels: - conda-forge dependencies: - - python >= 3.10,<3.14 + - python >= 3.11,<3.15 - pip >= 23.0 # Documentation - matplotlib-base diff --git a/ci/doc.yml b/ci/doc.yml index d79ba088..698cdf1a 100644 --- a/ci/doc.yml +++ b/ci/doc.yml @@ -2,7 +2,7 @@ name: xskillscore-docs channels: - conda-forge dependencies: - - python >=3.10,<3.14 + - python >=3.11,<3.15 - pip >=23.0 - bottleneck - cftime diff --git a/ci/docs_notebooks.yml b/ci/docs_notebooks.yml index d281a725..9b3acc62 100644 --- a/ci/docs_notebooks.yml +++ b/ci/docs_notebooks.yml @@ -3,7 +3,7 @@ channels: - conda-forge - nodefaults dependencies: - - python >=3.10,<3.14 + - python >=3.11,<3.15 - pip >=23.0 - bottleneck - cftime diff --git a/ci/minimum-tests.yml b/ci/minimum-tests.yml index 444d0d45..af7cf14e 100644 --- a/ci/minimum-tests.yml +++ b/ci/minimum-tests.yml @@ -2,7 +2,7 @@ name: xskillscore-minimum-tests channels: - conda-forge dependencies: - - python >=3.10,<3.14 + - python >=3.11,<3.15 - pip >=23.0 - bottleneck - cftime diff --git a/pyproject.toml b/pyproject.toml index 1c060abf..4a36ef64 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,14 +22,14 @@ classifiers = [ "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering :: Atmospheric Science", "Topic :: Scientific/Engineering :: Mathematics", ] -requires-python = ">=3.10" +requires-python = ">=3.11" license = {file = "LICENSE.txt"} dynamic = ["readme", "version"] @@ -114,5 +114,5 @@ ignore_missing_imports = true follow_imports = "silent" [tool.black] -target-version = ["py310", "py311", "py312", "py313"] +target-version = ["py311", "py312", "py313", "py314"] line-length = 100