ci: resolve the declared dependency floors on every PR - #81
Merged
Merged
Conversation
`pytest` and `scheduled` both resolve highest, so the declared lower bounds ship untested. That is how faststream-stomp kept `faststream~=0.7` until 0.7.6 made `address` a required field of `SubscriberSpec` and broke AsyncAPI generation for anyone resolving fresh. The new `lowest` leg resolves `--resolution lowest-direct` and runs the suite against it on every supported interpreter — wheel coverage is per-interpreter, so two of them resolving the same versions can still disagree on whether those versions install. `--no-build` keeps it a resolution error rather than a quiet sdist compile. It takes the same redpanda service the `pytest` leg does; 3.14t stays out, since aiokafka ships no free-threaded wheel to resolve. `faststream>=0.7.1` holds: the suite passes against 0.7.1 on all four interpreters, and nothing here touches the endpoint-specification API 0.7.6 changed. The harness did not. `pytest`, `pytest-cov`, `pytest-xdist` and `pytest-randomly` were unbounded, so the floors resolved pytest-xdist 0.0.0 and pytest-cov 2.0.0. `pytest-asyncio` was floored at 0.23.4, one minor below the release that added `asyncio_default_fixture_loop_scope` — a setting this project's pytest config ships and that pytest merely warns about when the installed version does not know it.
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
pytestandscheduledboth resolve highest, so the declared lower bounds ship untested. That is how faststream-stomp keptfaststream~=0.7until 0.7.6 madeaddressa required field ofSubscriberSpecand broke AsyncAPI generation for anyone resolving fresh — community-of-python/stompman#209.What
A
lowestleg that resolves--resolution lowest-directand runs the suite against it, on every supported interpreter. Wheel coverage is per-interpreter, so two interpreters resolving the same versions can still disagree on whether those versions install;--no-buildmakes a missing wheel a resolution error rather than a quiet sdist compile. It takes the same redpanda service thepytestleg does. 3.14t stays out: aiokafka ships no free-threaded wheel to resolve.What it found
faststream[kafka]>=0.7.1holds. The suite passes against faststream 0.7.1 and aiokafka 0.14.0 on 3.11 through 3.14, and nothing here touches the endpoint-specification API 0.7.6 changed. No floor bump needed.The harness is what was unsound:
pytest,pytest-cov,pytest-xdistandpytest-randomlywere unbounded, so the floors resolvedpytest-xdist==0.0.0,pytest-cov==2.0.0andpytest-randomly==1.0.0.pytest-asynciowas floored at>=0.23.4, one minor below the release that addedasyncio_default_fixture_loop_scope. This project sets that option, and pytest only warns when the installed version does not know it — so at the declared floor the setting silently did nothing.Verification
Floors resolved and the suite run locally on 3.11, 3.12, 3.13 and 3.14 against a real redpanda — 190 passed on each.
just lint-ciandjust test-cistill pass at the resolved-highest end, coverage 100%.