Repository navigation
Drop support for Python 3.8 and 3.9; test on 3.13 and 3.14 - #379
Merged
Merged
Conversation
The minimum supported Python is now 3.10, and the pip-based test matrices gain 3.13 and 3.14. Consequences: * EDM has no runtime newer than 3.11, so the EDM workflows now run on 3.11 alone, and etstool's runtime-specific dependency split collapses into a single set. * flake8_ets is not packaged in EDM for 3.11, so the EDM style check drops it and no longer runs the H101/H102 copyright checks. The strict-style workflow, which installs flake8-ets from PyPI, is unchanged and still checks copyright end years. * importlib_resources is no longer needed as a fallback for importlib.resources.files, and NumPy 2.x is usable everywhere, so the python_version markers guarding both are gone. * The macOS install split in the pip workflow existed because PyTables would not build on Apple Silicon for Python < 3.10; it is no longer reachable. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
3.15 is at rc.2, so setup-python needs allow-prereleases to resolve it. The flag has no effect on matrix entries that have a generally available release, and it stays in place afterwards so that 3.16 and its successors can be added to the matrix as soon as they reach beta. Only the minimal-dependency workflow gains 3.15: the h5 extra pulls in tables -> blosc2 -> ndindex, and ndindex has no cp315 wheel and does not build from its sdist. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
mdickinson
force-pushed
the
drop-python-38-39-add-314
branch
from
September 22, 2026 08:15
906c700 to
65c3fbe
Compare
The hand-written fragment was missing the " (#379)" suffix that "etstool.py changelog create" appends, and wrapped across two lines. "changelog build" concatenates fragments verbatim, so both would have shown up in CHANGES.txt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Raise the minimum supported Python to 3.10 and extend the test matrices
upwards.
What changed
python_requiresis now>=3.10;test-with-pip.ymlruns3.10–3.14and
test-minimal-dependencies.ymlruns3.10–3.15. 3.15 is at rc.2, sosetup-pythonneedsallow-prereleases: trueto resolve it; the flag has noeffect on the other entries, and it stays in place so later versions can be
added to the matrix as soon as they reach beta. 3.15 is confined to the
minimal workflow because the
h5extra pulls intables→blosc2→ndindex, andndindexhas no cp315 wheel and segfaults building from itssdist.
test-with-edm.ymlandets-from-source.ymlnow build only a 3.11 environment, andetstool.py's per-runtime dependency split collapses into a singleEDM_DEPENDENCIESset. That also fixes the weekly"Test with EDM using ETS packages from source"
failures: traits' main branch has required Python >= 3.10 since
Require Python >= 3.10, and replace pkg_resources with importlib.resources traits#1895, so installing it into a 3.8 environment has failed
every week since 2026-08-14.
importlib_resourcesis gone as a fallback forimportlib.resources.files, along with thetestextra that supplied it.numpy < 2.0; python_version<'3.10'markers are gone — the PyTablesincompatibility they worked around (PyTables is incompatible with NumPy 2.0 #345) only applied below 3.10.
test-with-pip.ymlis gone; it existedbecause PyTables would not build on Apple Silicon for Python < 3.10 (Test workflows fail on macOS due to PyTables #344).
One thing worth a look
flake8_etsis not packaged in EDM for 3.11 on any platform, so the EDM stylecheck no longer runs the
H101/H102copyright checks.check-style-strict.ymlis untouched and still checks copyright end years with
flake8-etsfrom PyPI;H101is no longer enforced anywhere.Verification
Locally, on 3.10 and 3.14,
pip install .[gui,h5,preferences]resolves and all358 tests pass; on 3.15,
pip install .[test]resolves against traits 7.2.0'scp315 wheel and the suite passes.
flake8over the usual targets is clean bothwith and without
flake8-ets. Every package in the newEDM_DEPENDENCIESset isavailable in EDM for 3.11 on both
rh8-x86_64andwin-x86_64.🤖 Generated with Claude Code