Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions .github/workflows/_checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,16 @@ jobs:
# The declared floors are part of what we ship, and nothing else in CI installs
# them: `pytest` and `scheduled-dep-check` both resolve highest. That is how
# 0.13.2 shipped `faststream>=0.7.1` and stayed green until 0.7.6 broke a user.
# This leg resolves the lower bound instead. One interpreter per distinct floor
# set: 3.11 for the unmarked floors, 3.13 and 3.14 for the marked ones.
# This leg resolves the lower bound instead, on every supported interpreter:
# a floor's wheel coverage is per-interpreter, so two interpreters resolving
# the same versions can still disagree on whether those versions install.
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- "3.11"
- "3.12"
- "3.13"
- "3.14"
services:
Expand All @@ -120,7 +122,10 @@ jobs:
cache-dependency-glob: "**/pyproject.toml"
- run: uv python install ${{ matrix.python-version }}
- run: uv python pin ${{ matrix.python-version }}
- run: uv sync --all-extras --no-install-project --resolution lowest-direct
# --no-build: a floor with no wheel for this interpreter must fail here rather
# than quietly compile its sdist. Without it the leg passes on a floor that
# still breaks anyone installing into an image with no build toolchain.
- run: uv sync --all-extras --no-install-project --resolution lowest-direct --no-build
# fastapi's floor pulls a starlette whose TestClient predates httpx2 support.
# Installed here rather than declared in the dev group: at the resolved-highest
# end starlette takes the httpx2 that group already declares, and adding httpx
Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ dependencies = [
# Not imported here: faststream pulls pydantic through fast-depends[pydantic], which allows it
# back to 1.x. FastStream's serializer calls model_dump, so publishing a model raises
# AttributeError on pydantic 1 — v2 is a real requirement of ours, not a preference. The two
# marked floors are wheel coverage: pydantic-core ships no cp313 wheel before pydantic 2.8
# and no cp314 wheel before 2.12.
# marked floors are wheel coverage: pydantic-core ships no cp313 wheel before pydantic 2.8.1
# (2.8.0 carries pydantic-core 2.20.0, which has none) and no cp314 wheel before 2.12.
"pydantic>=2; python_version < '3.13'",
"pydantic>=2.8; python_version == '3.13'",
"pydantic>=2.8.1; python_version == '3.13'",
"pydantic>=2.12; python_version >= '3.14'",
# 4.12.2, not 4.12.0: pydantic requires >=4.12.2 on 3.13+, and pinning 4.12.0 drags pydantic
# back to a build whose pydantic-core has no cp313 wheel either.
Expand Down
Loading