Skip to content

Migrate ceptr to Python 3.11–3.14 - #678

Draft
terencelehmann wants to merge 11 commits into
Pele-Suite:developmentfrom
ITV-RWTH:tl_ceptr_python_bump
Draft

Migrate ceptr to Python 3.11–3.14#678
terencelehmann wants to merge 11 commits into
Pele-Suite:developmentfrom
ITV-RWTH:tl_ceptr_python_bump

Conversation

@terencelehmann

Copy link
Copy Markdown
Contributor

Problem

Python 3.10 reaches end-of-life in October 2026 and will receive no further security fixes. Python 3.11 also receives security updates only. This PR migrates ceptr from >=3.10,<3.12 to >=3.11,<3.15, adding Python 3.14 support while dropping 3.10.

Changes

  1. Dependencies — all bumped to the minimum version that ships a cp314 wheel:
Package Before After
numpy ^1.25.2 ^2.3.0
scipy ^1.11.2 ^1.16.1
matplotlib ^3.7.2 ^3.10.0
pandas >=2.0.3 >=2.3.3
pyarrow ^15.0.0 >=19.0.0
Pint ^0.23 ^0.24
symengine ^0.9.2 ^0.14.0
Cantera >=3.1.0 >=3.2.0
  1. CI — matrix extended from ['3.10', '3.11'] to ['3.11', '3.12', '3.13', '3.14']. Poetry version updated from 1.4.2 to 2.1.1.

  2. Linting toolchain — Black, isort, flake8 and its six plugins (flake8-bugbear, pep8-naming, flake8-docstrings, flake8-use-fstring, flynt, flake8-polyfill) have been replaced with a single Ruff installation. The main driver is flake8-use-fstring, which has been unmaintained since July 2022 and is incompatible with flake8 7.x. Rather than upgrading flake8 and keeping six separate plugin version constraints in sync, Ruff re-implements all of them natively. It also replaces Black (via ruff format) and isort (via the I rule set), cutting the dev dependency count from 9 tools to 1. All existing lint rules are preserved with equivalent Ruff selectors; the .flake8 config file has been removed and replaced by [tool.ruff] sections in pyproject.toml. A one-time reformatting pass was applied to the codebase via commit 4fa0443.

  3. New testtest_polimi2020 added, exercising a mechanism with PLOG reactions at 1 atm (plog_pressure=101325.0).

Test results

All 5 pytest tests pass on Python 3.11, 3.12, 3.13, and 3.14.

C++ output was diffed against a Python 3.11 / symengine 0.9.2 baseline for 7 mechanisms (air, LiDryer, dodecane_lu, grimech30, NUIGalway, POLIMI2020, C3MechLite). Six are byte-for-byte identical.

NUIGalway differs in 4 transport coefficient values by 1 ULP in the 8th decimal place (e.g. -1.79310920E+01-1.79310921E+01). This is caused by symengine 0.14 producing a slightly different CSE expression ordering, not by Python 3.14 itself. The difference is at the limit of single-precision representable accuracy and has no physical significance, but it is a change from the previously generated files and is reported here for transparency.


Co-authored-by: Claude Sonnet 4.6 claude-sonnet-4-6@anthropic.com

@terencelehmann
terencelehmann force-pushed the tl_ceptr_python_bump branch from 8ff6108 to 565e4a9 Compare May 21, 2026 09:58
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.

1 participant