Skip to content

docs: test dependency floors strictly on the floor Python only (retire CI6) - #142

Merged
lesnik512 merged 1 commit into
mainfrom
docs/floors-lowest-with-wheel
Oct 24, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
docs/floors-lowest-with-wheel

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Summary

CI6 pinned every direct dependency to its declared floor on every matrix entry, wheel-only. On a newer Python the old floor often has no wheel, so repos met CI6 by adding a python_version floor per dependency per new Python. A survey of main counts 69 such lines across 13 repos, and reads 59 of them as existing only for wheel coverage. They change nothing for users: pip and uv pick the newest compatible version, and with builds disabled uv pip compile --resolution lowest-direct already picks the version each ladder spells out by hand (checked for asyncpg in db-retry: 0.28, 0.29, 0.30, 0.31 and 0.32 for 3.11 to 3.15 from a single asyncpg>=0.28).

This retires CI6 and replaces it with CI10 and DP1:

  • CI10 keeps the strict two-step check on the floor Python, where the declared floor is an API claim that can be checked exactly. On every other entry it resolves the whole tree with builds disabled, so the job tests the lowest version that has a wheel there. That half is a SHOULD that becomes MUST on 2026-12-31, so repos can convert their _checks.yml first.
  • DP1 asks for one floor per dependency, and allows a python_version floor only where a version installs on that Python and then fails there.

The background, the survey of other projects and the per-repo counts are in a research note that is not part of this PR.

Changes

  • Reading a requirement, and CONTEXT.md: the example ID is now CI5, since CI6 is retired.
  • PV3: points to DP1 and CI10.
  • New Dependencies section with DP1.
  • CI2 and CI3: point to CI10.
  • CI6: retired, with a stub under its anchor so existing links to #CI6 still land somewhere.
  • CI10: the new floors job. Its Why keeps CI6's history (compose2pod#126, docs: drop the em dash from DEPLOYMENT.md #135, docs: add a services page and link it from the home page #139, faststream-outbox#190, lite-bootstrap#245) and adds why the whole tree is resolved without --no-deps on the other entries: with it, uv pins pydantic 2.0 on 3.14, whose pydantic-core has no cp314 wheel, and the wheel-only install fails.

What follows in the repos

Not in this PR. Each repo with a floors job splits its compile step by matrix entry, then collapses its wheel-coverage ladders to the API floor. 3.15 comes back to floors wherever only a missing ladder step blocked it, which leaves the upstream gaps in #140 (PyYAML, aiokafka, aiogram). The plan is to pilot on one repo, then sweep. that-depends' _checks.yml cites CI6 in a comment and moves to CI10 in that sweep.

Checklist

  • uv run pytest passes (175 tests)
  • uv run mkdocs build --strict passes
  • uv pins pydantic 2.0 on 3.14 with --no-deps and 2.12.0 without it; the wheel-only install fails on the first (checked locally, Linux x86_64 target)

@lesnik512
lesnik512 merged commit 379377a into main Oct 24, 2026
3 checks passed
@lesnik512
lesnik512 deleted the docs/floors-lowest-with-wheel branch October 24, 2026 09:19
This was referenced Oct 24, 2026
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