Skip to content

Add support for Python 3.15 - #1471

Open
hsorby wants to merge 16 commits into
cellml:mainfrom
hsorby:1462-py315
Open

hsorby wants to merge 16 commits into
cellml:mainfrom
hsorby:1462-py315

Conversation

@hsorby

@hsorby hsorby commented Sep 25, 2026

Copy link
Copy Markdown
Contributor

Adds support for Python 3.15 by building wheels against the stable API.

@hsorby hsorby added the Infrastructure Building, hosting, testing, etc. label Sep 25, 2026
@hsorby
hsorby requested a review from agarny September 25, 2026 10:29
Comment thread .github/workflows/deploy-on-release.yml Outdated
Comment thread .github/workflows/deploy-on-release.yml
Comment thread .github/workflows/deploy-on-release.yml
@hsorby
hsorby requested review from agarny and a balanced review from Copilot September 30, 2026 09:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Windows wheels omit a required repair step, and Python 3.15 compatibility is not tested.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity · 2 Low severity

Open (4)
What changed in this PR

Adds Python 3.15 compatibility by producing CPython 3.10 stable-ABI wheels.

Changes:

  • Enables abi3 compilation and wheel tagging.
  • Updates Python/CMake discovery for stable-ABI modules.
  • Consolidates release builds into per-platform stable-ABI wheels.
File Description
src/​bindings/​python/​pyproject.toml Configures CPython 3.10 stable-ABI tagging.
src/​bindings/​python/​CMakeLists.txt Enables the limited Python API.
src/​bindings/​python/​cibuildwheel.setup.py Adds duplicate legacy packaging configuration.
CMakeLists.txt Raises the minimum CMake version.
cmake/​environmentchecks.cmake Detects and selects stable-ABI linking support.
.github/​workflows/​deploy-on-release.yml Builds and publishes platform-specific ABI3 wheels.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/deploy-on-release.yml
Comment thread .github/workflows/deploy-on-release.yml
Comment thread CMakeLists.txt
Comment thread src/bindings/python/cibuildwheel.setup.py Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

The SWIG minimum and version-specific Python-link fallback can produce wheels that fail under Python 3.15.

Review effort: Balanced
Findings: 2 High severity

Open (2)
Resolved since last review (4)

Comment thread cmake/environmentchecks.cmake
Comment thread src/bindings/python/CMakeLists.txt Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

The SWIG guidance incorrectly suggests older generated bindings can support Python 3.15.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
Resolved since last review (2)

Comment thread docs/versions.rst Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Limited-API compilation currently breaks the documented SWIG 3.0.12 build path.

Review effort: Balanced
Findings: 1 High severity

Open (1)
Resolved since last review (1)

Comment thread src/bindings/python/CMakeLists.txt

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

The fallback can mislabel version-specific binaries as ABI3, and the SWIG and Python compatibility changes are inconsistent with documented support.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity

Open (2)
Previously missed (1)

In code that hasn't changed since last review

Medium severity cp310 ABI floor unexpectedly drops Python 3.9 wheel support

src/​bindings/​python/​pyproject.toml:37

Using cp310 as the ABI floor removes Python 3.9 wheel support, although the previous release matrix explicitly produced 3.9 wheels on supported platforms. The PR is described only as adding Python 3.15 support, so this is an unannounced compatibility break. Either retain 3.9 with a matching limited-API floor if the generated bindings permit it, or explicitly document the dropped Python version as part of this change.

Comment thread cmake/environmentchecks.cmake

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

Wheel builds can still receive an abi3 tag when stable-ABI development support was not found.

Review effort: Balanced
Findings: 1 High severity · 1 Medium severity

Open (2)

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🔵 Needs a closer look

The WebAssembly documentation still advertises an unsupported CMake minimum.

Review effort: Balanced
Findings: None

Resolved since last review (2)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Infrastructure Building, hosting, testing, etc.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support python 3.15

3 participants