Repository navigation
fix(deps): use compatible release updater interpreters. Part of #14421 - #15339
Merged
Merged
Conversation
Signed-off-by: Jeff Spahr <spahrj@gmail.com>
1 task done
Contributor Report for @jeffspahr
|
Signed-off-by: Jeff Spahr <spahrj@gmail.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
2 tasks done
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.
Problem
Release-2.18 Dependabot selects Python 3.14 for projects whose frozen dependencies support older interpreters. The hosted run reports unresolvable MLMD 1.21.0 and TensorFlow 2.21.0 while updating other packages. Ignoring direct MLMD upgrades does not remove MLMD from those resolutions.
The full 20-project audit also found SDK/platform development tooling failing on Python 3.14: docformatter 1.4 metadata generation raises
AttributeError: Constant has no attribute s.The metadata writer and visualization images use Python 3.11; their uv-generated requirements headers do not select Dependabot's interpreter. The PostgreSQL retained-data harness uses Python 3.10 for frozen MLMD 1.14.0.
Changes
Add project-scoped
.python-versionfiles: Python 3.11 for backend, metadata writer, visualization, SDK and Kubernetes platform tooling; Python 3.10 for the PostgreSQL harness. The backend selection covers recursively fetched requirements as well. Full patch versions are required by Dependabot's pyenv validation; its version manager selects an available patch in that minor line.Preserve every package pin, the unconditional MLMD ignore, and Python >=3.9 support in the SDK, pipeline spec and Kubernetes platform packages. Add configuration regression coverage and trigger it for interpreter-file changes. Document the tooling/runtime distinction.
Verification
uv run --no-project --with pyyaml python .github/resources/scripts/dependabot_config_test.pyBefore:
test_projects_select_compatible_updater_pythonfails for all six missing interpreter files (the two SDK/platform cases were reproduced before extending this PR). After: all 13 tests pass, including the existing unconditional MLMD-ignore guard. YAPF andgit diff --checkpass.Full existing requirements resolve independently with uv 0.13.5:
All four pass without changing tracked requirements. Repeating metadata-writer/harness resolution with
--python-version 3.14fails because MLMD has no cp314 wheel. Visualization under 3.14 also fails (Python-dependent google-api-core/grpcio constraints); the hosted run separately reports TensorFlow's missing compatible release. Backend's own requirements alone resolve on 3.14, but its nested MLMD requirements do not.These are resolver checks, not runtime installation tests. Hosted Dependabot selection and end-to-end completion must be verified after merge; the newer post-ignore run is still in progress. No clean hosted result is claimed.
Part of #14421.
Complete 20-project audit
The audit table records all configured projects, interpreter selections and results. Requirements/source/development inputs and immediate-child projects were checked independently using uv 0.13.5 against Linux x86_64-manylinux_2_39. All 20 project dependency sets resolve after the six scoped interpreter selections. Editable local paths were checked against Dependabot's preparer; the backend test's SDK source path remains valid and unchanged. GCPC setup dependency checks use the checkout and do not claim hosted-equivalent isolated setup execution.
Additional before/after reproduction (run separately for
sdk/pythonandkubernetes_platform/python):Before fails building pinned docformatter 1.4 metadata; after passes. SDK development requirements also pass an actual pip 3.11 dry-run. Python 3.9 resolution remains passing for the API spec, SDK runtime/dev, Kubernetes platform runtime/dev, and native-migration requirements. No requirements files, package support metadata, or MLMD-ignore rules changed.
All 13 configuration tests, YAPF and whitespace checks pass. Inventory verification confirms the audit table covers exactly the 20 configured projects. Hosted CI and post-merge Dependabot completion remain required; no successful hosted run is claimed.