Skip to content

ci: resolve the declared dependency floors on every matrix entry - #34

Open
lesnik512 wants to merge 1 commit into
mainfrom
ci/floors-gate
Open

lesnik512 wants to merge 1 commit into
mainfrom
ci/floors-gate

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Adds the floors job the org standard requires (standard.md §7), following modern-di-fastapi#56, and raises the aiohttp floor to one the repo can actually stand behind.

What the job found

aiohttp>=3.9 was not a claim this repo could support.

pytest-aiohttp 1.0.x caps pytest-asyncio<0.23, so the only release compatible with the pytest-asyncio this suite needs is 1.1.0, and 1.1.0 requires aiohttp>=3.11. The declared 3.9 floor was therefore unreachable by the test suite: nothing could ever run against it. Left alone, the floors job would have silently resolved 3.11 and reported the 3.9 claim as verified.

Separately, aiohttp ships no cp314 wheel before 3.13.0, so on 3.14 and 3.14t even 3.11 is installable only by compiling the sdist.

The floor now says what is true, per interpreter:

"aiohttp>=3.11,<4; python_version < '3.14'",
"aiohttp>=3.13,<4; python_version >= '3.14'",

Why the job exists

pytest resolves every dependency at its newest, so the bottom of each declared range ships unexercised. This job resolves direct dependencies at their floors, wheel-only, on every entry of the same matrix pytest uses, and runs the suite against them.

--no-build: a floor reachable only by compiling an sdist is not a floor a user installing a wheel can reach. Without it the resolver builds one and the job reports success. --no-install-project is mandatory alongside it — --no-build would otherwise refuse to build this project too, and the tests import it from the checkout.

The dev-group floors

uv sync --resolution lowest-direct treats an unbounded name in [dependency-groups] as "any version" and resolves it to that project's first-ever release. The floors added there are lower bounds on the test harness only; the resolved-newest path is unchanged.

Verification

Run locally on all six interpreters: aiohttp==3.11.0 on 3.10–3.13, aiohttp==3.13.0 on 3.14 and 3.14t, 23 passed on each. Resolved-newest path re-checked with just install && just lint-ci && just test-ci. Local runs are macOS/arm64; CI is the verdict on manylinux wheel coverage.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant