Upgrade Python versions and deprecate Python 3.9#15058
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Updates Dependabot’s Python ecosystem runtime/tooling to newer patch releases and changes the version gating logic so Python 3.9 is treated as deprecated (warning) rather than unsupported (error), aligning with upstream EOL.
Changes:
- Bump preinstalled Python runtimes (3.14/3.13/3.12/3.11/3.10/3.9) to newer patch versions in both
Languageand the Docker image build args. - Deprecate Python 3.9 by updating
NON_SUPPORTED_HIGHEST_VERSION(feedingDEPRECATED_VERSIONS) and adjusting the language spec accordingly. - Update Python helper tool dependencies (pip/pipenv/poetry/pytest/plette/tomli) in
python/helpers/requirements.txt.
Show a summary per file
| File | Description |
|---|---|
| python/spec/dependabot/python/language_spec.rb | Adjusts deprecation spec coverage to target Python 3.9. |
| python/lib/dependabot/python/language.rb | Updates preinstalled versions list and sets Python 3.9 as the deprecated version threshold. |
| python/helpers/requirements.txt | Bumps pinned helper tool dependencies used in the Python helpers environment. |
| python/Dockerfile | Updates pinned Python runtime build args to match the new preinstalled patch versions. |
Copilot's findings
Comments suppressed due to low confidence (1)
python/spec/dependabot/python/language_spec.rb:29
- This spec stubs
unsupported?to false, which can hide regressions in the actual supported-vs-deprecated interaction. Since 3.9 is now intended to be deprecated while still supported, prefer asserting the real behavior (i.e., don’t stubunsupported?, and/or explicitly expectunsupported?to be false) so the test validates the deprecation mechanism end-to-end.
let(:detected_version) { "3.9.1" }
before do
allow(language).to receive(:unsupported?).and_return(false)
end
- Files reviewed: 4/4 changed files
- Comments generated: 1
5 tasks
5384e64 to
95abfa8
Compare
…ents.txt and language_spec.rb for deprecation of Python 3.9
…dating build script
95abfa8 to
1b99e25
Compare
5 tasks
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Apply the same approach from #15058 to the uv ecosystem: - Upgrade helper packages to latest versions (pip 26.1.1, poetry 2.4.1, etc.) - Add requirements-3.9.txt with old 3.9-compatible versions - Update build script with conditional requirements selection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Match the same change from python/spec in #15058 — deprecated version is now 3.9, not 3.8. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Update Python version pins in the uv Dockerfile to match the versions already deployed in the python ecosystem (PR #15058). The uv ecosystem aliases the Python Language class, so the code expects these exact versions when extracting compressed Python runtimes. - 3.14.2 → 3.14.5 - 3.13.11 → 3.13.13 - 3.12.12 → 3.12.13 - 3.11.14 → 3.11.15 - 3.10.19 → 3.10.20 - 3.9.24 → 3.9.25 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Apply the same approach from #15058 to the uv ecosystem: - Upgrade helper packages to latest versions (pip 26.1.1, poetry 2.4.1, etc.) - Add requirements-3.9.txt with old 3.9-compatible versions - Update build script with conditional requirements selection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Match the same change from python/spec in #15058 — deprecated version is now 3.9, not 3.8. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Update Python version pins in the uv Dockerfile to match the versions already deployed in the python ecosystem (PR #15058). The uv ecosystem aliases the Python Language class, so the code expects these exact versions when extracting compressed Python runtimes. - 3.14.2 → 3.14.5 - 3.13.11 → 3.13.13 - 3.12.12 → 3.12.13 - 3.11.14 → 3.11.15 - 3.10.19 → 3.10.20 - 3.9.24 → 3.9.25 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Apply the same approach from #15058 to the uv ecosystem: - Upgrade helper packages to latest versions (pip 26.1.1, poetry 2.4.1, etc.) - Add requirements-3.9.txt with old 3.9-compatible versions - Update build script with conditional requirements selection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
Match the same change from python/spec in #15058 — deprecated version is now 3.9, not 3.8. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
kbukum1
added a commit
that referenced
this pull request
May 20, 2026
* Sync uv Dockerfile Python versions with python ecosystem Update Python version pins in the uv Dockerfile to match the versions already deployed in the python ecosystem (PR #15058). The uv ecosystem aliases the Python Language class, so the code expects these exact versions when extracting compressed Python runtimes. - 3.14.2 → 3.14.5 - 3.13.11 → 3.13.13 - 3.12.12 → 3.12.13 - 3.11.14 → 3.11.15 - 3.10.19 → 3.10.20 - 3.9.24 → 3.9.25
Closed
markhallen
pushed a commit
that referenced
this pull request
May 21, 2026
* Update Python versions in Dockerfile and language.rb; adjust requirements.txt and language_spec.rb for deprecation of Python 3.9 * Add support for Python 3.9 by introducing requirements-3.9.txt and updating build script * Update comment for version specification in language.rb * Update comment in requirements-3.9.txt to clarify tomli dependency for Python <3.11 * Add deprecation notice for Python 3.9 in language.rb * Clarify deprecation notice for Python 3.9 in language.rb * Update pipenv version in requirements.txt to 2024.4.1
markhallen
pushed a commit
that referenced
this pull request
May 21, 2026
* Sync uv Dockerfile Python versions with python ecosystem Update Python version pins in the uv Dockerfile to match the versions already deployed in the python ecosystem (PR #15058). The uv ecosystem aliases the Python Language class, so the code expects these exact versions when extracting compressed Python runtimes. - 3.14.2 → 3.14.5 - 3.13.11 → 3.13.13 - 3.12.12 → 3.12.13 - 3.11.14 → 3.11.15 - 3.10.19 → 3.10.20 - 3.9.24 → 3.9.25
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.
What are you trying to accomplish?
Upgrade all pre-installed Python runtime versions to their latest patch releases and deprecate Python 3.9, which reached end-of-life on 2025-10-31. Users on Python 3.9 will now receive a deprecation warning recommending they upgrade to a supported Python release.
Python runtime updates:
Helper dependency updates (Python ≥3.10):
Not upgraded in this PR (deferred to follow-up):
Anything you want to highlight for special attention from reviewers?
Python 3.9 deprecation: The
Languageclass setsNON_SUPPORTED_HIGHEST_VERSION = "3.9"which populatesDEPRECATED_VERSIONS. Sincedetected_versionis normalized to major.minor format, this correctly triggersdeprecated? == truefor Python 3.9 users — producing a deprecation warning, not an unsupported error. Python 3.9 remains inPRE_INSTALLED_PYTHON_VERSIONS_RAWandSUPPORTED_VERSIONS. The uv ecosystem aliases this class, so these changes apply to both ecosystems automatically.Split requirements for Python 3.9 compatibility: Several updated helper packages (pip 26.x, poetry 2.x, pytest 9.x) dropped Python 3.9 support and require Python ≥3.10. Since the build script installs the same requirements into every Python runtime, we introduced a separate
requirements-3.9.txtthat pins the previous working versions for the deprecated 3.9 environment. The build script conditionally selects the right requirements file based on the target Python version. This also resolves the CI dependency-review failure, since the mainrequirements.txtnow uses pip 26.1.1 which fixes CVE-2026-3219 (GHSA-58qw-9mgm-455v) and CVE-2026-6357 (GHSA-jp4c-xjxw-mgf9).How will you know you have accomplished your goal?
Checklist