Python 3.10 is end-of-life: plan the move off it
PEP 619 is explicit: as of October 1, 2026, Python 3.10 has reached end of life, 3.10.22 was the final security release, and no further updates will be provided. The next branch to go is 3.11, in October 2027.
Supported branches today
| Branch | Status | End of life |
|---|---|---|
| 3.15 | bugfix (released Oct 9, 2026) | 2031-10 |
| 3.14 | bugfix | 2030-10 |
| 3.13 | security | 2029-10 |
| 3.12 | security | 2028-10 |
| 3.11 | security | 2027-10 |
| 3.10 | end-of-life | 2026-10-01 |
Find what still runs 3.10
Illustrative example.
# base images and CI matrices
grep -rnE "python:3\.10|python-version:.*3\.10" --include=Dockerfile* --include=*.yml --include=*.yaml .
# declared minimums and pinned interpreters
grep -rnE "requires-python|python_requires" --include=pyproject.toml --include=setup.cfg --include=setup.py .
cat .python-version 2>/dev/null
Example: a two-week plan
Illustrative example. Moving straight to 3.13 or newer skips another migration in October 2027.
| Task | Days | Depends on |
|---|---|---|
| 1. Inventory of services, jobs and images on 3.10 | 2 | — |
| 2. Pick target (3.13+), update CI matrix | 1 | 1 |
| 3. Upgrade dependencies, fix deprecations | 5 | 2 |
| 4. Rebuild images, run on real data | 3 | 3 |
| 5. Roll out, remove 3.10 from CI | 1 | 4 |
Important. If your Python comes from an OS vendor's package rather than python.org or an official image, the vendor's own support policy applies — check it instead of assuming either way. For upstream builds and the official
python:3.10images there is nothing more coming.
Checklist
- ☐ Every service, job and image on 3.10 listed, with an owner
- ☐ Target version chosen (3.13 or newer for a longer runway)
- ☐
requires-pythonand CI matrix updated - ☐ Tests and a run on real data passed on the new version
- ☐ 3.10 removed from CI so it does not come back
- ☐ Next review booked before 3.11 EOL in October 2027
Turn the list into a plan
The project plan sheet takes tasks, owners, start and finish dates and dependencies, and counts the workdays for you — enough to get the migration scheduled this sprint.
Sources: Python Developer's Guide, "Status of Python versions"; PEP 619 (Python 3.10 release schedule); PEP 790 (Python 3.15 release schedule).