Conversation
Python 3.10 reaches end of life in October 2026, but the stronger reason to move now is that it was splitting the dependency stack. `pyproject.toml` already carried two numpy pins, `>=2.2.6,<2.3` for 3.10 against `>=2.4.1` for everything else, and `uv.lock` resolved eleven packages at more than one version, every split carrying the marker `python_full_version < '3.11'`. Astropy was the worst of them, 6.1.7 on 3.10 against 8.0.1 elsewhere, so the CI matrix was comparing two scientific stacks rather than two interpreters. After the bump only `scipy` and `sphinx` remain split, on 3.11 against 3.12+, and the `exceptiongroup` and `decorator` backports drop out entirely. No source changes are needed: there is no `sys.version_info` branch anywhere in `litebird_sim/`.
ggalloni
force-pushed
the
drop-python-3.10
branch
from
September 22, 2026 14:58
b73d86e to
72a7a28
Compare
This branch has not been deployed
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.
Raises the minimum Python to 3.11. Opened to see the matrix go green on 3.11; the timing against the 0.18.0 release is yours to decide.
Why now
Python 3.10 reaches end of life in October 2026, but the stronger reason is that it was already splitting the dependency stack.
pyproject.tomlcarried two numpy pins:and
uv.lockresolved eleven packages at two or three versions at once, every split markedpython_full_version < '3.11':Astropy two major versions apart matters for a framework that runs
Time,TimeDeltaand units through it everywhere. The CI matrix was comparing two scientific stacks, not two interpreters.SPEC 0, which numpy, scipy and astropy follow, suggests dropping a Python version about three years after release. For 3.10 that was late 2024, so this is catching up rather than moving early.
Effect
Packages locked at more than one version drop from 11 to 2 (
scipyandsphinx, now splitting on 3.11 against 3.12+, which is normal). Zeropython_full_version < '3.11'markers remain. Theexceptiongroupbackport disappears,ExceptionGroupbeing stdlib from 3.11, anddecoratordrops out too.uv.lockloses 900 lines.Scope
No source changes. There is no
sys.version_infobranch anywhere inlitebird_sim/, so nothing was compensating for 3.10.pyupgrade --py311-plusdoes rewrite three files inlitebird_sim/hwp_harmonics/, but--py310-plusproduces byte-identical output: it is only stripping# -*- encoding: utf-8 -*-cookies from files that escaped 7a10e64. That is pre-existing and deliberately left out of this PR.Worth knowing
This removes the only CI leg that exercised astropy 6. That is the intent, but it means any latent astropy-6-only assumption will now go unnoticed rather than being caught here.
BrahMap is unaffected: it declares
requires-python = ">=3.10,<3.15"with numpy and scipy unpinned, so it installs on 3.11+ unchanged. @anand-avinash may want to follow suit, and separately BrahMap's classifiers stop at 3.13 while itsrequires-pythonallows 3.14.Changelog
Entered as a breaking change. The
Reference PRlink still needs adding now that this PR has a number.