Repository navigation
Description
Every repo now tests CPython 3.15 in pytest, but 16 of them leave 3.15 out of the floors job. In each, the wheel-only install fails at the declared floors because some package has no 3.15 wheel there. CI6 allows dropping such an entry, so none of this is a violation. It is a gap: on 3.15 nothing checks that the declared floors install.
The 16 split into three groups by what unblocks them. The blocker listed is the first one the resolver hit; another may surface once it is cleared.
Fixable now with a 3.15 floor marker
These repos already declare floors per Python version (asyncpg>=0.31; python_version >= '3.14'). Narrowing the 3.14 line to == '3.14' and adding a >= '3.15' line at the first release with 3.15 wheels clears the blocker without raising the floor for older Pythons.
| Repo | Blocking floor | First release with 3.15 wheels |
|---|---|---|
db-retry |
asyncpg>=0.31 |
asyncpg 0.32.0 |
faststream-redis-timers |
pydantic>=2.12 (pins pydantic-core 2.41.1) |
pydantic 2.14.0 |
release-scope |
pydantic>=2.12 |
pydantic 2.14.0 |
httpware |
msgspec>=0.20, and pydantic>=2.12 behind it |
msgspec 0.22.0, pydantic 2.14.0 (which also needs typing-extensions>=4.16.0) |
modern-di-aiohttp |
aiohttp>=3.13 |
aiohttp 3.14.4 |
modern-di-grpc |
grpcio>=1.82.1 (no markers yet) |
grpcio 1.84.0 |
grpcio 1.84.0 has no free-threaded wheel, which does not matter here: modern-di-grpc is exempt from the 3.15t entry.
Blocked upstream
No floor change here helps: PyYAML and aiokafka ship no 3.15 wheel in any release, and aiogram's pins keep out the pydantic release that does.
| Package | Repos | How it gets in |
|---|---|---|
| PyYAML (newest is 6.0.3) | compose2pod, semvertag |
direct dependency |
jwks-client, modern-di-litestar |
through litestar |
|
modern-di-fastmcp |
through fastmcp |
|
that-depends |
through pre-commit in the dev group |
|
| aiokafka (newest is 0.14.0) | faststream-concurrent-aiokafka |
direct dependency |
faststream-outbox |
through faststream[kafka] in the dev group; its asyncpg>=0.31 and pydantic>=2.12 floors need the marker fix above as well |
|
| aiogram (newest is 3.31.0) | modern-di-aiogram |
every release caps pydantic below 2.14, and no pydantic-core before 2.14's has 3.15 wheels; its aiohttp>=3.13 floor needs the marker fix above as well |
Both
lite-bootstrap runs floors per framework target, and every target fails on 3.15:
free:orjson>=3.11.1;orjson3.12.0 is the first with 3.15 wheels.fastapiandfaststream: thepydanticfloors pin apydantic-corewith no 3.15 wheels;pydantic2.14.0 is the first that works.fastmcpandlitestar: PyYAML, through those frameworks.
The marker fix clears the first three targets. The last two wait on PyYAML.
Done when
Each repo has 3.15 back in its floors matrix (and 3.15t wherever its pytest matrix has it), green on a pull request. Tick a repo off here as its PR lands. Each repo's 3.15 PR description names its blocker as well, but those descriptions say to wait for the next floor raise; the marker fix above is the quicker route.
-
db-retry(ci: test the dependency floors on Python 3.15 db-retry#81) -
faststream-redis-timers(ci: test the dependency floors on Python 3.15 faststream-redis-timers#114) -
release-scope(ci: test the dependency floors on Python 3.15 release-scope#50) -
httpware(ci: test the dependency floors on Python 3.15 httpware#198) -
modern-di-aiohttp(ci: test the dependency floors on Python 3.15 modern-di-aiohttp#60) -
modern-di-grpc(ci: test the dependency floors on Python 3.15 modern-di-grpc#56) -
lite-bootstrap(fix: require typing-extensions 4.14 on Python 3.15 and test floors the CI10 way lite-bootstrap#300):free,fastapiandfaststream;fastmcpandlitestarwait on PyYAML -
compose2pod -
semvertag -
jwks-client -
modern-di-litestar -
modern-di-fastmcp -
that-depends -
faststream-concurrent-aiokafka -
faststream-outbox -
modern-di-aiogram
Activity
lesnik512 commentedon Nov 4, 2026
Checked 2026-11-04: still blocked, but the aiokafka blocker has changed.
aiokafka<0.15; wheel-only Linux 3.15 resolution fails for bothfaststream-concurrent-aiokafkaandfaststream-outbox(including its dev group). No dedicated upstream 0.15 support issue/PR found.pydantic<2.14.Next trigger for the FastStream repos: a FastStream release allowing aiokafka 0.15. No free-threaded wheels ship in aiokafka 0.15.0.
lesnik512 commentedon Nov 4, 2026
Upstream aiokafka 0.15 support is now tracked in ag2ai/faststream#3326 (open).
Local verification: 1,102 Kafka tests passed with aiokafka 0.15, including 345 connected tests against Redpanda 26.2.6. Python 3.10 still resolves aiokafka 0.14 and passes the in-memory suite.
faststream-concurrent-aiokafkaandfaststream-outboxremain blocked until a FastStream release includes the relaxed cap. Then restore their ordinary 3.15 floors entries and run CI; 3.15t still lacks aiokafka wheels.lesnik512 commentedon Nov 4, 2026
Upstream CI passed on ag2ai/faststream#3326, including 345 connected tests against Kafka 8.0 with aiokafka 0.15.0 and the Python 3.10 checks.
Still waiting for the PR to merge and a FastStream release containing it. Then we can restore the ordinary Python 3.15 floors entries in
faststream-concurrent-aiokafkaandfaststream-outboxand run CI.