Skip to content

Drop Python 3.10, test Python 3.11 to 3.14 in CI - #932

Merged
aaronspring merged 3 commits into
mainfrom
claude/ci-python-upgrade-vbz6dv
Sep 25, 2026
Merged

aaronspring merged 3 commits into
mainfrom
claude/ci-python-upgrade-vbz6dv

Conversation

@aaronspring

@aaronspring aaronspring commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Follows xarray's Python support window, as xskillscore did in xarray-contrib/xskillscore#469. Python 3.10 is dropped, and CI now tests Python 3.11 through 3.14.

  • pyproject.toml: requires-python = ">=3.11", classifiers 3.11–3.14, black target-version py311–py314, pyproject-fmt max_supported_python = "3.14"
  • ci.yml: the pull-request matrix runs 3.11 and 3.14; the scheduled, workflow_dispatch and full-ci runs cover 3.11, 3.12, 3.13 and 3.14. Coverage is measured and uploaded from the 3.14 maximum-test-conda entry. Doctests and notebooks run on 3.11.
  • benchmarks.yml: 3.11. upstream-dev.yml: 3.14.
  • conda envs: python >=3.11,<3.15; the docs env uses >=3.11,<3.12
  • Minimum dependency pins are unchanged.
  • CHANGELOG has a breaking-change entry, and AGENTS.md (the target of the CLAUDE.md symlink) is updated.

Two fixes follow from the newer dependency versions that Python 3.11 resolves:

  • Doctest reprs: on 3.10 the resolver stopped at xarray 2025.6.1; on 3.11 it now gets xarray 2026.7, which orders coordinates differently in reprs. The expected doctest output in classes.py, metrics.py and utils.py is updated. Only the order of lines changes; no values change.
  • Read the Docs: the docs environment now resolves Sphinx 9 and sphinx-llm 1.1. sphinx-llm warns on bibtex citation and abbreviation nodes, and fail_on_warning turned those warnings into a failed build. conf.py now suppresses those two node types (the HTML is unaffected) and sets llms_txt_full_build = True, because sphinx-llm 1.1 no longer writes llms-full.txt by default.

Type of change

  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

  • pre-commit run --all-files passes, including GitHub workflow schema validation.
  • Doctests were reproduced and fixed locally on Python 3.11 with xarray 2026.7.0.
  • The docs were built locally in the conda environment from ci/requirements/docs.yml with no warnings; both llms.txt and llms-full.txt are generated.
  • CI (Python 3.11 and 3.14, pip and conda, doctests, notebooks) and Read the Docs pass. Add the full-ci label to run the whole 3.11–3.14 matrix on all operating systems.

Checklist (while developing)

  • CHANGELOG is updated with reference to this PR.

References

🤖 Generated with Claude Code

https://claude.ai/code/session_01S4BXUfDCfzQsK8kyRmu4ox

Follow xarray's support window, as xskillscore did in
xarray-contrib/xskillscore#469.

- requires-python >=3.11, classifiers 3.11-3.14, black target py311-py314
- CI matrices 3.11-3.14; pull requests run 3.11 and 3.14; coverage on 3.14
- doctests, notebooks, docs env and benchmarks on 3.11; upstream-dev on 3.14
- conda envs python >=3.11,<3.15
- CHANGELOG breaking-change entry, AGENTS.md updated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S4BXUfDCfzQsK8kyRmu4ox
@codecov

codecov Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.27%. Comparing base (0569861) to head (7149d2d).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #932   +/-   ##
=======================================
  Coverage   91.27%   91.27%           
=======================================
  Files          59       59           
  Lines        6548     6548           
=======================================
  Hits         5977     5977           
  Misses        571      571           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Dropping Python 3.10 lets the doctest job resolve xarray 2026.7 instead
of 2025.6.1 (the last release supporting 3.10). Newer xarray orders
coordinates differently in reprs. Only the order of repr lines changes;
no values change.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S4BXUfDCfzQsK8kyRmu4ox
The docs environment now resolves sphinx 9 and sphinx-llm 1.1.
sphinx-llm's markdown writer warns on bibtex citation and abbreviation
nodes, and fail_on_warning turned those warnings into a failed build.
Suppress those two node types; the HTML output is unaffected.

sphinx-llm 1.1 also stopped writing llms-full.txt by default, so turn
it back on with llms_txt_full_build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S4BXUfDCfzQsK8kyRmu4ox
@aaronspring
aaronspring merged commit 01f9b6d into main Sep 25, 2026
16 checks passed
@aaronspring
aaronspring deleted the claude/ci-python-upgrade-vbz6dv branch September 25, 2026 16:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants