Skip to content

Add Python 3.14 support#44

Merged
forsyth2 merged 2 commits intomainfrom
add-python3.14
Mar 2, 2026
Merged

Add Python 3.14 support#44
forsyth2 merged 2 commits intomainfrom
add-python3.14

Conversation

@forsyth2
Copy link
Collaborator

@forsyth2 forsyth2 commented Nov 18, 2025

Summary

Important: this should be merged to main after the production release of zppy-interfaces v0.2.0.

Objectives:

  • Add support for Python 3.14

Issue resolution:

Select one: This pull request is...

  • a bug fix: increment the patch version
  • a small improvement: increment the minor version
  • a new feature: increment the minor version
  • an incompatible (non-backwards compatible) API change: increment the major version

Small Change

  • To merge, I will use "Squash and merge". That is, this change should be a single commit.
  • Logic: I have visually inspected the entire pull request myself.
  • Pre-commit checks: All the pre-commits checks have passed.

@forsyth2 forsyth2 self-assigned this Nov 18, 2025
@forsyth2 forsyth2 added the DevOps CI/CD, configuration, etc. label Nov 18, 2025
@forsyth2
Copy link
Collaborator Author

Xylar had noted:

we would want python >=3.11,<3.15 by next spring and python >=3.12,<3.15 by next fall. That is, we add a python version each spring and drop one each fall.

So, for the Spring release (tentatively planned as: testing period beginning April 1, release on May 1), we'd want to support four versions of Python: 3.11, 3.12, 3.13, 3.14.

Tom also noted:

numba/llvmlite don't [yet support Python 3.14]. Both are dependencies of packages xesmf, which is a dependency of xcdat. Related issue with xcdat: xCDAT/xcdat#813 (comment)

@forsyth2
Copy link
Collaborator Author

Unlike zppy (E3SM-Project/zppy#757), we're going to need some fixes for zppy-interfaces to support Python 3.14, most of which are outside of our control.

Claude's response:


Looking at this GitHub Actions log, the Python 3.14 build failed due to dependency resolution conflicts. The issue is that some required packages don't yet have builds available for Python 3.14.

Key Problems:

  1. netcdf4 - Has builds for Python 3.14, but only versions 1.7.2 and 1.7.3
  2. pcmdi_metrics >=3.9.3 - Requires either:
    • Version 4.0.1: needs xcdat >=0.10.0 → needs xesmf >=0.8.7 → needs numba >=0.55.2 (no Python 3.14 build)
    • Versions 3.9.3/4.0.0: need shapely >=2.0.1,<=2.0.6 (no Python 3.14 builds in that range)

The conda solver couldn't find a combination of packages that satisfies all the requirements for Python 3.14.

@forsyth2 forsyth2 marked this pull request as ready for review March 2, 2026 20:11
python --version
# Fix pip issues for Python 3.12+
if [[ "${{ matrix.python-version }}" == "3.12" ]] || [[ "${{ matrix.python-version }}" == "3.13" ]]; then
if [[ "${{ matrix.python-version }}" == "3.12" ]] || [[ "${{ matrix.python-version }}" == "3.13" ]] || [[ "${{ matrix.python-version }}" == "3.14" ]]; then
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tom noted in E3SM-Project/zstash#402 (comment):

I'm pretty sure if you include setuptoolsin the dev.yml then you don't need this block.
Example: https://github.com/xCDAT/xcdat/blob/8238fab6bbcbcc25f8dc67b4cbe753ab6ba7edfc/conda-env/dev.yml#L8-L9

@forsyth2
Copy link
Collaborator Author

forsyth2 commented Mar 2, 2026

Looking at this GitHub Actions log, the Python 3.14 build failed due to dependency resolution conflicts. The issue is that some required packages don't yet have builds available for Python 3.14.

It looks like these have now been resolved. The CI checks are now passing despite no code changes other than a rebase on the latest main.

@forsyth2
Copy link
Collaborator Author

forsyth2 commented Mar 2, 2026

Addressed code review comment carried over from the zstash equivalent PR, all checks still passing.

@forsyth2
Copy link
Collaborator Author

forsyth2 commented Mar 2, 2026

@tomvothecoder @andrewdnolan Could one of you take a quick look at this PR and review/approve it? The changes for zppy-interfaces are purely DevOps -- no functionality changes. The issues with dependencies now appear to be resolved.

Copy link

@tomvothecoder tomvothecoder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me

@forsyth2
Copy link
Collaborator Author

forsyth2 commented Mar 2, 2026

Thanks @tomvothecoder!

@forsyth2 forsyth2 merged commit 02638f4 into main Mar 2, 2026
6 checks passed
@forsyth2 forsyth2 deleted the add-python3.14 branch March 2, 2026 21:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DevOps CI/CD, configuration, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants