Drop EOL Pythons (3.7–3.9) from CI, add 3.12–3.14 - #418
Merged
Conversation
virtualenv 21.5.0 (2026-06-13) dropped support for creating Python 3.8 environments, which broke the python-tests (3.8) CI job for every PR: tox now fails with 'could not find python interpreter with spec(s): py38' even though the interpreter is installed. Rather than pinning an old virtualenv, drop EOL versions and test what users actually run: - Drop 3.8 (EOL 2024-10, broken in CI) and 3.9 (EOL 2025-10, next to be dropped by the toolchain) from the CI matrix - Remove vestigial py37/py38/py39 from the tox envlist and Makefile - Add 3.12, 3.13 and 3.14 to the CI matrix and envlist - Only install python3.X-distutils for < 3.12 (removed from the stdlib) - Declare python_requires>=3.10 in setup.py Assisted-By: devx/bbf3c269-bbaa-4af2-81fc-4b93ae41af0a
distutils was removed from the stdlib in Python 3.12, so importing it broke test collection on the new 3.12-3.14 CI jobs. Inline the tiny strtobool helper with identical semantics. Assisted-By: devx/bbf3c269-bbaa-4af2-81fc-4b93ae41af0a
vishnuarun-888
approved these changes
Jul 29, 2026
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.
Why
Every PR's
python-tests (3.8)job is currently failing with:The interpreter is installed fine — the break is environmental: virtualenv 21.5.0 (2026-06-13) dropped support for creating Python 3.8 environments, and
python/setup.pydoesn't pin virtualenv, so tox 4.6.4 can no longer materialize apy38env. The last green run on main (May 21, virtualenv 21.3.3) predates that release.Rather than pinning an old virtualenv to keep an EOL interpreter alive, this updates the matrix to versions users actually run.
What
py37/py38/py39from the tox envlist (setup.cfg) and theMakefileTOX_ENVdefault (py37 was never even in the CI matrix)python3.X-distutilsfor < 3.12 (distutils was removed from the stdlib in 3.12, the apt package doesn't exist for newer versions)distutils.util.strtoboolinciqueue/_pytest/test_queue.pywith an inline helper with identical semantics (thedistutilsimport broke test collection on 3.12+)python_requires='>=3.10'insetup.py3.10 is kept for now despite its Oct 2026 EOL being close; dropping it can be a follow-up.
If
python-tests (3.8)/python-tests (3.9)are configured as required status checks, an admin needs to swap them for the new matrix entries when this merges, otherwise PRs will wait forever on 'expected' checks.Testing
python-tests (3.10)through(3.14)on both push and pull_request runs