[CHORE](ci) Test dep floors via lowest-direct matrix#505
Merged
Victor Schappert (vcschapp) merged 1 commit intodevfrom May 6, 2026
Merged
[CHORE](ci) Test dep floors via lowest-direct matrix#505Victor Schappert (vcschapp) merged 1 commit intodevfrom
Victor Schappert (vcschapp) merged 1 commit intodevfrom
Conversation
🗺️ Schema reference docs preview is live!
Note ♻️ This preview updates automatically with each push to this PR. |
919035c to
d54713e
Compare
The check-python-code workflow now runs across the supported Python minor versions (3.10-3.14), and adds a lowest-direct cell that re- resolves every direct dependency to its declared floor before running make check. Failures in that cell mean a declared minimum is wrong -- either the code uses a feature newer than the floor admits, or the pin needs to be raised. Setting UV_RESOLUTION=lowest-direct causes the existing make uv-sync to re-resolve from the lockfile rather than follow it, so no separate lock or constraints file is needed. The declared floors lie about the actual minimums in several places. Bump them to what the code requires today: - pydantic >= 2.12: optionality.py imports pydantic.experimental.missing_sentinel, which only exists in 2.12+. feature.py imports ModelWrapValidatorHandler at the top level (re-exported in 2.10.4) and Tag (added in 2.5). - ruff >= 0.13: 0.12.x still fires the deprecated UP038 rule under select = ["UP"], which the workspace config selects. - deepdiff >= 8.6: first version shipping a py.typed marker, without which mypy errors on import-untyped. Per-package dev deps that were unpinned (ruff, mypy, pytest in overture-schema-cli and overture-schema-system; pyyaml, deepdiff in overture-schema) now match the workspace dev-group floors. uv warns about unpinned direct deps under lowest-direct resolution; pinning silences the warnings and makes the floor explicit. Signed-off-by: Seth Fitzsimmons <seth@mojodna.net>
d54713e to
050966e
Compare
John McCall (lowlydba)
approved these changes
May 5, 2026
Contributor
John McCall (lowlydba)
left a comment
There was a problem hiding this comment.
Left a question on how far back we want to support non-Active versions, otherwise LGTM
Victor Schappert (vcschapp)
approved these changes
May 6, 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.
Summary
lowest-directbeforemake check, exercising the declared dependency floors instead of whatever the lock happens to pin.Closes #504.
How it works
UV_RESOLUTION=lowest-directmakes the existingmake uv-syncre-resolve frompyproject.tomlinstead of following the committed lock. No second lockfile, no constraints file. A failure in that cell means a declared minimum is wrong.The default cell behaves as before (committed lock, newest matching) but now spans Python 3.10 through 3.14.
Test plan
UV_RESOLUTION=lowest-direct make checkpasses locally (1900 tests)make check(default resolution) passes locally