Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

drop support for python 3.10 #9116

Merged
merged 9 commits into from
Jan 31, 2025
Merged

Conversation

braingram
Copy link
Collaborator

@braingram braingram commented Jan 30, 2025

This PR drops support for python 3.10 as per SPEC0.

Regtests run in python 3.12:
https://github.com/spacetelescope/RegressionTests/actions/runs/13021815724/job/36323966628#step:30:28
so they won't be run for this PR.

The oldest deps job (required as per the branch protections) with this PR runs with python 3.11. This branch protection rule will need to be updated when this PR is merged.

Also fixes #9110 since a new version of the build workflow was released with the required changes.

Tasks

  • request a review from someone specific, to avoid making the maintainers review every PR
  • add a build milestone, i.e. Build 11.3 (use the latest build if not sure)
  • Does this PR change user-facing code / API? (if not, label with no-changelog-entry-needed)
    • write news fragment(s) in changes/: echo "changed something" > changes/<PR#>.<changetype>.rst (see below for change types)
    • update or add relevant tests
    • update relevant docstrings and / or docs/ page
    • start a regression test and include a link to the running job (click here for instructions)
      • Do truth files need to be updated ("okified")?
        • after the reviewer has approved these changes, run okify_regtests to update the truth files
  • if a JIRA ticket exists, make sure it is resolved properly
news fragment change types...
  • changes/<PR#>.general.rst: infrastructure or miscellaneous change
  • changes/<PR#>.docs.rst
  • changes/<PR#>.stpipe.rst
  • changes/<PR#>.datamodels.rst
  • changes/<PR#>.scripts.rst
  • changes/<PR#>.set_telescope_pointing.rst
  • changes/<PR#>.pipeline.rst

stage 1

  • changes/<PR#>.group_scale.rst
  • changes/<PR#>.dq_init.rst
  • changes/<PR#>.emicorr.rst
  • changes/<PR#>.saturation.rst
  • changes/<PR#>.ipc.rst
  • changes/<PR#>.firstframe.rst
  • changes/<PR#>.lastframe.rst
  • changes/<PR#>.reset.rst
  • changes/<PR#>.superbias.rst
  • changes/<PR#>.refpix.rst
  • changes/<PR#>.linearity.rst
  • changes/<PR#>.rscd.rst
  • changes/<PR#>.persistence.rst
  • changes/<PR#>.dark_current.rst
  • changes/<PR#>.charge_migration.rst
  • changes/<PR#>.jump.rst
  • changes/<PR#>.clean_flicker_noise.rst
  • changes/<PR#>.ramp_fitting.rst
  • changes/<PR#>.gain_scale.rst

stage 2

  • changes/<PR#>.assign_wcs.rst
  • changes/<PR#>.badpix_selfcal.rst
  • changes/<PR#>.msaflagopen.rst
  • changes/<PR#>.nsclean.rst
  • changes/<PR#>.imprint.rst
  • changes/<PR#>.background.rst
  • changes/<PR#>.extract_2d.rst
  • changes/<PR#>.master_background.rst
  • changes/<PR#>.wavecorr.rst
  • changes/<PR#>.srctype.rst
  • changes/<PR#>.straylight.rst
  • changes/<PR#>.wfss_contam.rst
  • changes/<PR#>.flatfield.rst
  • changes/<PR#>.fringe.rst
  • changes/<PR#>.pathloss.rst
  • changes/<PR#>.barshadow.rst
  • changes/<PR#>.photom.rst
  • changes/<PR#>.pixel_replace.rst
  • changes/<PR#>.resample_spec.rst
  • changes/<PR#>.residual_fringe.rst
  • changes/<PR#>.cube_build.rst
  • changes/<PR#>.extract_1d.rst
  • changes/<PR#>.resample.rst

stage 3

  • changes/<PR#>.assign_mtwcs.rst
  • changes/<PR#>.mrs_imatch.rst
  • changes/<PR#>.tweakreg.rst
  • changes/<PR#>.skymatch.rst
  • changes/<PR#>.exp_to_source.rst
  • changes/<PR#>.outlier_detection.rst
  • changes/<PR#>.tso_photometry.rst
  • changes/<PR#>.stack_refs.rst
  • changes/<PR#>.align_refs.rst
  • changes/<PR#>.klip.rst
  • changes/<PR#>.spectral_leak.rst
  • changes/<PR#>.source_catalog.rst
  • changes/<PR#>.combine_1d.rst
  • changes/<PR#>.ami.rst

other

  • changes/<PR#>.wfs_combine.rst
  • changes/<PR#>.white_light.rst
  • changes/<PR#>.cube_skymatch.rst
  • changes/<PR#>.engdb_tools.rst
  • changes/<PR#>.guider_cds.rst

@github-actions github-actions bot added testing installation automation Continuous Integration (CI) and testing automation tools labels Jan 30, 2025
@braingram braingram marked this pull request as ready for review January 30, 2025 16:38
@braingram braingram requested a review from a team as a code owner January 30, 2025 16:38
@braingram braingram force-pushed the no_py310 branch 2 times, most recently from 5107616 to 646f408 Compare January 30, 2025 16:43
Copy link

codecov bot commented Jan 30, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 78.48%. Comparing base (d157184) to head (046b34d).
Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9116      +/-   ##
==========================================
+ Coverage   73.73%   78.48%   +4.74%     
==========================================
  Files         373      507     +134     
  Lines       37272    46335    +9063     
==========================================
+ Hits        27482    36364    +8882     
- Misses       9790     9971     +181     
Flag Coverage Δ *Carryforward flag
nightly 77.77% <ø> (?) Carriedforward from 934f434

*This pull request uses carry forward flags. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@tapastro
Copy link
Contributor

The installation docs mention python 3.10. Removing that should be the last mention that I'm aware of:

JWST requires a C compiler for dependencies and is currently limited to Python 3.10, 3.11, or 3.12.

@braingram
Copy link
Collaborator Author

The installation docs mention python 3.10. Removing that should be the last mention that I'm aware of:

JWST requires a C compiler for dependencies and is currently limited to Python 3.10, 3.11, or 3.12.

Thanks! I pushed bc3ab42 which removes that mention.

Copy link
Contributor

@tapastro tapastro left a comment

Choose a reason for hiding this comment

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

Thanks for the cleanup!

Copy link
Collaborator

@emolter emolter left a comment

Choose a reason for hiding this comment

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

There's one spot in the .ruff.toml and one for the mypy config in pyproject.toml that also mention Python 3.10. Was your plan to include those changes here or in a separate follow-up?

@tapastro
Copy link
Contributor

Good call, I'd already forgotten about those. We should probably include that here.

@braingram braingram requested a review from tapastro January 30, 2025 19:52
Copy link
Contributor

@tapastro tapastro left a comment

Choose a reason for hiding this comment

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

So the ruff change to py311 doesn't cause style failures? Not what I was expecting, but I'm not going to complain.

@emolter
Copy link
Collaborator

emolter commented Jan 30, 2025

Can you say more about the oldestdeps job? I see that there are currently two jobs in the list of CI checks that are labeled "oldestdeps" - one is the py310 job, and the other one is a py311 job that is presumably coming from this PR. The py310 job is hanging forever. Why is the CI picking this job up at all, now that you have removed it from the configuration?

@emolter
Copy link
Collaborator

emolter commented Jan 30, 2025

So the ruff change to py311 doesn't cause style failures? Not what I was expecting, but I'm not going to complain.

Remember that most modules are still in the ignores list

@tapastro
Copy link
Contributor

Remember that most modules are still in the ignores list

My reasoning: if there isn't anything worth complaining about in ami, it seems likely that the differences between ruff py310 and py311 must not be large.

@braingram
Copy link
Collaborator Author

braingram commented Jan 30, 2025

So the ruff change to py311 doesn't cause style failures? Not what I was expecting, but I'm not going to complain.

I was a little surprised too. I confirmed this locally.

Can you say more about the oldestdeps job? I see that there are currently two jobs in the list of CI checks that are labeled "oldestdeps" - one is the py310 job, and the other one is a py311 job that is presumably coming from this PR. The py310 job is hanging forever. Why is the CI picking this job up at all, now that you have removed it from the configuration?

test / py310-oldestdeps-xdist-cov is Expected — Waiting for status to be reported due to it being listed as required under the branch protection rules (so github is expecting it to run). However with this PR that job will never start (it was removed) and instead test / test / py311-oldestdeps-xdist-cov is run (which completed). When the branch protections are updated test / test / py311-oldestdeps-xdist-cov can be marked as required.

EDIT: The names are a little odd and sometimes the name that appears in the branch protection selection (which is kind of like a drop down) is a bit different than what's run. I've never understood that nuance but once this PR is merged the new py311-oldestdeps-xdist-cov (whatever it's exact name ends up being) will be selectable.

@emolter emolter self-requested a review January 30, 2025 20:15
Copy link
Collaborator

@emolter emolter left a comment

Choose a reason for hiding this comment

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

LGTM, thanks for explaining how the branch protection rules interact with the PR

@tapastro tapastro merged commit c21a7a1 into spacetelescope:main Jan 31, 2025
9 of 10 checks passed
@braingram braingram deleted the no_py310 branch January 31, 2025 17:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automation Continuous Integration (CI) and testing automation tools documentation installation testing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Revert change to build workflow to accommodate python upper pin
3 participants