Skip to content

fix(deps): raise the starlette floor - #35

Merged
lesnik512 merged 1 commit into
mainfrom
fix/dependency-floors
Sep 20, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
fix/dependency-floors

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Closes #34.

The bug

starlette>=0.40,<2 resolves to a release where the websocket close code never reaches the client:

AssertionError: assert [] == ['/ws:1000']

The floor

1.2.0, bisected against the suite and confirmed monotonic — 0.47.0, 1.0.0 and 1.1.0 all fail the same way, 1.2.0 passes.

modern-di>=3.1.1 was checked in the same pass and is already correct.

A measurement note

The test tooling matters here. Starlette 1.6 moved TestClient to httpx2 and the dev group declares it, but starlette at the old floor calls httpx.Client(app=...), removed in httpx 0.28. Installing current httpx makes every test fail with Client.__init__() got an unexpected keyword argument 'app', which looks like a floor problem and is not one. The bisect used httpx>=0.27,<0.28 so the resolved stack could actually run.

Verification

uv pip install --resolution lowest-direct . then the full suite: 22 passed on 3.10 and 3.14. Lint clean. Normal resolution: 22 passed.

Nothing changes at the top of the range, so this is inert for anyone not installing at the lower bound.

Found by the org-wide lower-bound audit in modern-python/.github#107.

The declared >=0.40 resolves to a release where the websocket close code
never reaches the client. Bisected against the suite: 1.2.0 is the first
release it works with.

Closes #34
@lesnik512
lesnik512 merged commit b67a881 into main Sep 20, 2026
8 checks passed
@lesnik512
lesnik512 deleted the fix/dependency-floors branch September 20, 2026 14:37
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.

The starlette floor installs but fails the suite

1 participant