Bugfix means a Python version still gets fixes and regular binaries. Security means only security fixes, delivered mostly as source, with no more binaries. End-of-life means support has ended and nothing more changes. Per the Python devguide, 3.14 and 3.15 are bugfix, 3.11 to 3.13 are security, and 3.10 is end-of-life.
The three phases
The Python Developer's Guide defines them this way:
- Bugfix: the version is fully released and accepts bug fixes and security fixes. New binaries come roughly every two months.
- Security: only security fixes are accepted and no more binaries are released. For 3.13 and later this phase starts two years after release. For earlier versions it starts 18 months after.
- End-of-life: five years after a release, support ends and the release cycle is frozen.
Source-only releases may still appear during the security phase as needed. That detail matters if you rely on installers: a security-phase version may have no new installer to download, so your fix could mean building from source or moving to a newer minor version.
Where each version sits today
| Version | Status | First release | Scheduled end of life |
|---|---|---|---|
| 3.15 | bugfix | 2026-10-09 | 2031-10 |
| 3.14 | bugfix | 2025-10-07 | 2030-10 |
| 3.13 | security | 2024-10-07 | 2029-10 |
| 3.12 | security | 2023-10-02 | 2028-10 |
| 3.11 | security | 2022-10-24 | 2027-10 |
| 3.10 | end-of-life | n/a | 2026-10-01 |
The devguide marks scheduled dates as adjustable by the release managers, so treat future dates as plans.
What to do with this
Python 3.10 reached its scheduled end on 1 October 2026. If any build agent, container or developer laptop still runs it, that is your first patch item. The end-of-life definition says no further changes are allowed, so a newly found flaw in that version will not be fixed upstream.
For the rest, a reasonable policy is to run a version in bugfix or early security phase, and start moving at least a year before the scheduled end.
Where to look for old Pythons
- Base images in Dockerfiles
- CI matrix entries that nobody pruned
- System Python on developer machines and build agents
- Virtual environments created long ago and never rebuilt
- Lambda or function runtime settings
Rebuilding a virtual environment on a new minor version is usually quick. The slow part is dependencies that have not published wheels yet, so test early.
Safeguard's dependency scanning reads your lockfiles and can flag packages with known issues across Python projects. Try a free scan at gold.safeguard.sh/scan.
Common mistakes
One mistake is assuming a security-phase version still ships installers, then waiting for a binary that will not come. Another is leaving old versions in a CI matrix long after the project dropped them, which keeps unsupported runtimes alive in your pipeline. A third is upgrading Python but not rebuilding virtual environments, so old interpreters keep running under a new label.
A good habit is to check the status table every quarter and write the next move on your calendar.
Quick check
Does a security-phase Python still get fixes?
Yes, but only security fixes, and no more binaries are released, though source-only releases can still come out.
Is Python 3.10 still supported?
The devguide lists it as end-of-life with an end date of 2026-10-01.
Sources
Last reviewed: 19 October 2026.