Skip to content

✨ feat: drop Python 3.8 support#3170

Merged
gaborbernat merged 2 commits into
pypa:mainfrom
gaborbernat:drop-py38
Jun 13, 2026
Merged

✨ feat: drop Python 3.8 support#3170
gaborbernat merged 2 commits into
pypa:mainfrom
gaborbernat:drop-py38

Conversation

@gaborbernat

Copy link
Copy Markdown
Contributor

CPython 3.8 reached end of life on 2024-10-07, more than 18 months ago, which meets the project policy for dropping a version. 🐍 virtualenv now requires Python 3.9 or later, both to run and to create environments, so this raises requires-python to >=3.9 and clears the 3.8 entries out of the packaging metadata, CI matrix, and tox environments.

virtualenv bundled the embedded wheel seed package only for Python 3.8, so dropping 3.8 lets me remove it outright: the wheel files, the 3.8 bundle entry (which also orphaned pip-25.0.1 and setuptools-75.3.4), and the wheel handling in tasks/upgrade_wheels.py. Removing the only 3.8-specific creator code, the macOS __PYVENV_LAUNCHER__ patch that applied to CPython 3.8.0 through 3.8.2, falls out of the same cleanup.

#3168 removed the orphaned wheel-0.47.0 on its own; this supersedes it, so close that one once this merges. PR #2884 restored --wheel/--no-wheel after an earlier removal broke Fedora and other downstream callers, so I kept both flags as no-ops rather than repeat that breakage. They now warn louder: the message states that virtualenv will remove them in a release after 2026-12, giving downstream tooling a deadline to stop passing them.

CPython 3.8 reached end of life on 2024-10-07, more than 18 months ago,
which meets the project policy for dropping a version. virtualenv now
requires Python 3.9 or later to run and to create environments.

virtualenv bundled the embedded wheel seed package only for Python 3.8,
so this removes it: the wheel files, the 3.8 bundle entry, and the wheel
handling in the upgrade tooling. The --wheel and --no-wheel options stay
as no-ops, but the deprecation warning is louder and now states that
virtualenv will remove them in a release after 2026-12.

This also drops the macOS pyvenv launcher patch, which only applied to
CPython 3.8.0-3.8.2, and updates packaging metadata, the CI matrix, tox
environments, tests, and docs.
@gaborbernat gaborbernat enabled auto-merge (squash) June 13, 2026 17:17
@gaborbernat gaborbernat disabled auto-merge June 13, 2026 20:34
@gaborbernat gaborbernat merged commit 79ce906 into pypa:main Jun 13, 2026
53 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant