Skip to content

fix(ci): pin warm-cache pip to setup-python 3.10, not hatch's bundled pip#1483

Closed
sd-db wants to merge 1 commit into
mainfrom
sd-db/fix/warmcache-pip-bundled-fallback
Closed

fix(ci): pin warm-cache pip to setup-python 3.10, not hatch's bundled pip#1483
sd-db wants to merge 1 commit into
mainfrom
sd-db/fix/warmcache-pip-bundled-fallback

Conversation

@sd-db
Copy link
Copy Markdown
Collaborator

@sd-db sd-db commented May 26, 2026

Summary

hatch run pip in warmDepsCache.yml's wheelhouse step resolves to hatch's bundled pip running on Python 3.12 (because the default env has installer = "uv" and uv-created venvs have no pip, so hatch run pip falls back to the hatch installer's pip). That pip evaluates python_version < "3.11" as False and silently drops conditional deps like tomli from the wheelhouse — breaking offline env recreation on fork PRs whose verify-min-deps env transitively needs tomli on Python 3.10.

Surfaced on fork PR #1482: verify-min-deps:check-all failed with ERROR: Could not find a version that satisfies the requirement tomli<3.0,>=1.2; python_version < "3.11" (from check-wheel-contents) during offline env creation.

Switch the wheelhouse step to setup-python's Python 3.10 directly. Add a guard step that fails the warm job if the wheelhouse can't satisfy verify-min-deps offline — so future silent drops are caught here, not on fork PRs.

Test plan

  • Diagnostic run on sd-db/chore/warmcache-diagnose proved hatch run pippip 24.0 (python 3.12) and marker eval False under the bundled pip.
  • Local replication: python3.10 -m pip download check-wheel-contents correctly collected tomli + all 10 transitives.
  • Fix-branch warm-cache run (26440181725): Collecting tomli<3.0,>=1.2 (from check-wheel-contents) + guard step green.

… pip

Root cause: `hatch run pip` resolves to hatch's bundled pip running on
Python 3.12. With `installer = "uv"` on the default env, uv-created
venvs have no pip, so `hatch run pip` falls back to the hatch installer
binary's pip (Python 3.12). That pip evaluates `python_version < "3.11"`
as False and silently drops conditional deps like tomli from the
wheelhouse — breaking offline env recreation on fork PRs whose
verify-min-deps env transitively needs tomli on Python 3.10.

Switch the wheelhouse step to setup-python's Python 3.10 directly
(bootstrap tomli for the pyproject.toml parser; Python 3.10 has no
stdlib tomllib). Add a guard step that fails the warm job if the
wheelhouse can't satisfy verify-min-deps' dependency set from offline
find-links alone, so future silent drops are caught at warm-time
rather than in fork PRs.
@sd-db sd-db requested a review from jprakash-db as a code owner May 26, 2026 08:11
@github-actions
Copy link
Copy Markdown

Coverage report

This PR does not seem to contain any modification to coverable code.

@sd-db sd-db closed this May 26, 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