Skip to content

Python 3.13 3.14 support #3334

Open
alastairtree wants to merge 5 commits into
IMAP-Science-Operations-Center:devfrom
alastairtree:claude/python-3.13-3.14-support-dpom7g
Open

Python 3.13 3.14 support #3334
alastairtree wants to merge 5 commits into
IMAP-Science-Operations-Center:devfrom
alastairtree:claude/python-3.13-3.14-support-dpom7g

Conversation

@alastairtree

@alastairtree alastairtree commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

See #3085

claude and others added 3 commits July 16, 2026 03:56
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.
@alastairtree

Copy link
Copy Markdown
Collaborator Author

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.

@vineetbansal

vineetbansal commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

@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 poetry.lock have disappeared or started misbehaving.

@alastairtree

Copy link
Copy Markdown
Collaborator Author

I'll give it another look and double check, thanks.

alastairtree and others added 2 commits July 18, 2026 17:02
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.
@alastairtree

Copy link
Copy Markdown
Collaborator Author

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:

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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-python and adds trove classifiers for Python 3.13/3.14 in pyproject.toml.
  • Adjusts dependency constraints (pins sammi-cdf, adds an upper bound for pandas extra).
  • 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.

Comment thread pyproject.toml
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"

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Copilot is being stupid - the point of this PR is that 3.13 and 14 work fine now

Comment thread pyproject.toml
Comment on lines +26 to +27
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

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']
Comment thread pyproject.toml
Comment on lines +43 to +46
# 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",

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Any other version of this dependency fails the tests - hence the pin.

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.

4 participants