[Deps] Renovate decouples pydantic from pydantic-core in the compiled bot lockfile (ResolutionImpossible) #178
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Every Renovate pydantic PR fails CI (bot tests, dependency audit, and the bot Docker image build) with
ResolutionImpossible:Root cause
bot/requirements.txtis a genuine pip-compile lockfile (source:bot/requirements.in). The only direct dependency ispydantic-settings>=2.3.0;pydanticandpydantic-coreare transitive, and pydantic pins pydantic-core to an exact version:Renovate was managing this file with the
pip_requirementsmanager, which edits pins in place, one package per PR, and never re-runs pip-compile. So:pydantic-core==2.46.4while the file still says2.41.5→ unresolvable.2.46.4, so2.47.0belongs to a newer pydantic that nothing requests.This affects every future pydantic bump, including security bumps — not a one-off.
mainitself was never broken (2.12.5 + 2.41.5 are internally consistent); only the Renovate branches were.Fix
bot/requirements.txtwith Renovate'spip-compilemanager, so an update regenerates the whole lock and moves pydantic + pydantic-core together. The manager has an empty defaultmanagerFilePatterns, so it must be opted in explicitly, and the overlappingpip_requirementsmanager is disabled for that one file only.pydantic 2.12.5 → 2.13.4,pydantic-core 2.41.5 → 2.46.4.Scope note
webapp/backend/requirements.txtis not affected and intentionally stays onpip_requirements: despite a header claimingpip-compile requirements.in, there is nowebapp/backend/requirements.inin the repo — it's hand-maintained and doesn't pinpydantic/pydantic-coreat all. (That stale/misleading header is worth a separate tidy-up.)The regen also corrected pre-existing lock drift:
pyjwt==2.13.0was missing thoughredis==5.3.1requires it, and a stalesniffioentry was dropped.Verification
Installed the regenerated lock in
python:3.12and ran the bot suite:ResolutionImpossible)pydantic 2.13.4+pydantic-core 2.46.4confirmed installedrenovate-config-validator(renovate 42.99.0) validates the config as repo configRunner prerequisite
The
pip-compilemanager must be able to execute pip-compile (Python 3.12 + pip-tools) in the Renovate runner environment. Renovate runs from an external/central runner, not a workflow in this repo — if it can't run pip-compile, it will report an artifact-update error instead of silently producing a broken PR. Worth confirming on the next Renovate run.