Python 3.13 3.14 support #3334
Conversation
Widen requires-python to >=3.10,<3.15 and add 3.13/3.14 classifiers. All runtime dependencies already ship wheels for 3.13 and 3.14.
Bump lxml, numpy, scipy, astropy, and related packages to versions that ship cp313/cp314 wheels (previous pins predated 3.13/3.14 releases). Cap pandas at <3 to avoid pulling in the new pandas 3.0 major version as a side effect of the resolver picking up 3.14 wheel support.
|
Couple of tests are failing in python 3.10 here but given this just adds different python versions I don't that this pr introduced those errors. Otherwise I think this is ready for review and merge. |
|
@alastairtree - the fact that the CI is failing on python 3.10 on this PR is an indication that bumping up to python 3.13 or 3.14 forces poetry to bump up certain dependencies which then cause a regression. You are modifying the lock file after all. You may want to open a dummy PR that does something innocuous like updating a README, and I bet it will pass the CI, indicating that none of the upstream dependencies currently used by our |
|
I'll give it another look and double check, thanks. |
Updated GitHub Actions workflow to use newer action versions.
Widening the Python upper bound let poetry re-resolve sammi-cdf to 1.0.2/1.1.0 as an incidental side effect. Both regress CDF ISTP-schema handling for spectrogram variables (missing LABLAXIS, spurious LABL_PTR_i), which fails the live ISTP-compliance check in test_codice_l2_lo_de/hi_de whenever external test data is enabled (the ubuntu+3.10 CI job). Verified by isolating each package version independently: only sammi-cdf 1.0.0 passes, confirmed with a full external-data pytest run (1826 passed, 0 failed) on Python 3.10.
|
This is now ready for review. Turns out the sammi CDF 1.0.0 -> 1.0.1 broke those tests so that’s a pretty delicate dependency. |
| branches: | ||
| - dev | ||
| pull_request: | ||
| workflow_dispatch: |
There was a problem hiding this comment.
This allows you to manually run a CI build without needing to make pointless white space README changes to trigger it. It was useful in my testing and is mostly harmless but I can remove if you prefer
There was a problem hiding this comment.
Pull request overview
Updates project metadata and CI to extend Python version coverage, aiming to add Python 3.13 (and currently also 3.14) support across packaging and GitHub Actions tests.
Changes:
- Expands
requires-pythonand adds trove classifiers for Python 3.13/3.14 inpyproject.toml. - Adjusts dependency constraints (pins
sammi-cdf, adds an upper bound forpandasextra). - Expands CI test matrix to include Python 3.13/3.14 and updates several GitHub Actions versions; adds
workflow_dispatch.
Reviewed changes
Copilot reviewed 2 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| pyproject.toml | Updates supported-Python metadata and dependency constraints to reflect newer Python targets. |
| .github/workflows/test.yml | Expands CI Python matrix and modernizes GitHub Actions used in the test workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| license = "MIT" | ||
| keywords = ["IMAP", "SDC", "SOC", "Science Operations"] | ||
| requires-python = ">=3.10,<3.13" # upper bound due to scipy wheel availability; bump when scipy supports 3.14 | ||
| requires-python = ">=3.10,<3.15" |
There was a problem hiding this comment.
Copilot is being stupid - the point of this PR is that 3.13 and 14 work fine now
| "Programming Language :: Python :: 3.13", | ||
| "Programming Language :: Python :: 3.14", |
There was a problem hiding this comment.
Copilot is being stupid - the point of this PR is that 3.13 and 14 work fine now
| matrix: | ||
| os: [windows-latest, ubuntu-latest, macos-latest] | ||
| python-version: ['3.10', '3.11', '3.12'] | ||
| python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] |
| # Pinned exactly: 1.0.2 and 1.1.0 both regressed CDF ISTP-schema handling | ||
| # for spectrogram variables (missing LABLAXIS, spurious LABL_PTR_i), | ||
| # which fails codice L2 CDF validation. Bump once fixed upstream. | ||
| "sammi-cdf==1.0.0", |
There was a problem hiding this comment.
Any other version of this dependency fails the tests - hence the pin.
See #3085