Skip to content

Commit f71f6ed

Browse files
authored
ci: test floors the CI10 way and collapse the wheel-only floors (#199)
1 parent dad2192 commit f71f6ed

2 files changed

Lines changed: 11 additions & 24 deletions

File tree

‎.github/workflows/_checks.yml‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,8 @@ jobs:
5555
- run: just test-ci
5656
floors:
5757
# Every other job resolves newest, so the declared floors are a claim nothing installs.
58-
# This one resolves the bottom of each range, on every matrix entry: wheel coverage is
59-
# per interpreter, so two interpreters resolving the same versions can still disagree
60-
# on whether those versions install.
58+
# This one installs them exactly on the floor Python, and the lowest versions with a wheel
59+
# on every other entry (CI10).
6160
if: github.event_name != 'schedule'
6261
runs-on: ubuntu-latest
6362
strategy:
@@ -81,7 +80,10 @@ jobs:
8180
- run: uv python pin ${{ matrix.python-version }}
8281
- run: uv venv
8382
# Pinned with builds allowed, so a floor with no wheel fails the wheel-only install below.
84-
- run: uv pip compile pyproject.toml --all-extras --no-deps --resolution lowest-direct -o floors.txt
83+
- if: matrix.python-version == '3.11'
84+
run: uv pip compile pyproject.toml --all-extras --no-deps --resolution lowest-direct -o floors.txt
85+
- if: matrix.python-version != '3.11'
86+
run: uv pip compile pyproject.toml --all-extras --resolution lowest-direct --no-build -o floors.txt
8587
- run: uv pip install -r pyproject.toml --all-extras --group dev --constraints floors.txt --no-build
8688
- run: uv run --no-sync pytest
8789
env:

‎pyproject.toml‎

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,15 @@ classifiers = [
3535
version = "0"
3636
dependencies = [
3737
"httpx2>=2.0.0,<3.0",
38-
# 4.14.0 is the first whose closed TypedDicts keep their keys on Python 3.14, the cp314
39-
# pydantic floor (2.12) needs 4.14.1 and the cp315 one (2.14) needs 4.16.0.
40-
"typing-extensions>=4.14.1; python_version < '3.15'",
41-
"typing-extensions>=4.16.0; python_version >= '3.15'",
38+
# 4.14.0 is the first whose closed TypedDicts keep their keys on Python 3.14.
39+
"typing-extensions>=4.14",
4240
]
4341

4442
[project.optional-dependencies]
45-
pydantic = [
46-
# pydantic-core ships no cp312 wheel before pydantic 2.1, no cp313 wheel before 2.8.1, no
47-
# cp314 wheel before 2.12 and no cp315 wheel before 2.14.
48-
"pydantic>=2.0,<3.0; python_version < '3.12'",
49-
"pydantic>=2.1,<3.0; python_version == '3.12'",
50-
"pydantic>=2.8.1,<3.0; python_version == '3.13'",
51-
"pydantic>=2.12,<3.0; python_version == '3.14'",
52-
"pydantic>=2.14,<3.0; python_version >= '3.15'",
53-
]
43+
pydantic = ["pydantic>=2.0,<3.0"]
5444
msgspec = [
55-
# 0.18.5 is the first release whose can_decode agrees with decode on Annotated types;
56-
# 0.19 is the first with a cp313 wheel, 0.20 the first with a cp314 one and 0.22 the first
57-
# with a cp315 one.
58-
"msgspec>=0.18.5; python_version < '3.13'",
59-
"msgspec>=0.19; python_version == '3.13'",
60-
"msgspec>=0.20; python_version == '3.14'",
61-
"msgspec>=0.22; python_version >= '3.15'",
45+
# 0.18.5 is the first release whose can_decode agrees with decode on Annotated types.
46+
"msgspec>=0.18.5",
6247
]
6348
otel = ["opentelemetry-api>=1.20"]
6449
all = ["httpware[pydantic,msgspec,otel]"]

0 commit comments

Comments
 (0)