Make the declared Python version consistent, and keep it that way #90
No reviewers
Labels
No labels
area/ai
area/backend
area/frontend
area/infra
area/scheduler
area/wled
good-first-issue
priority/high
priority/low
priority/medium
type/bug
type/chore
type/ci-cd
type/docs
type/feature
type/qa
v1.0.0
v1.1.0
v1.2.0
v2.0.0
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
rbrooks/Iris-WLED!90
Loading…
Reference in a new issue
No description provided.
Delete branch "chore/python-version-consistency"
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?
Closes the two loose ends from #37 / #89.
1.
requires-pythonnow matches realityIt said
">=3.12"while CI and the published image only ever exercised 3.14. That was an untested claim — and once #89 moved mypy's target to 3.14, it became an unchecked one too: nothing would catch code that breaks on 3.12.Narrowed to
">=3.14", so the declaration matches what is actually built, tested and shipped.The alternative was adding 3.12 to the CI matrix, which would make the wider claim real. I didn't, because it costs a second matrix leg on an already-contended runner for a version nothing runs — but that's the option if you'd rather keep 3.12 support genuine.
2. mypy's
python_versionnow tracks automaticallyThree places encode the runtime — the Dockerfile, every
setup-python, and this field — and Renovate managed only the first two. So it drifts silently, which is exactly what happened.docker/pythonas datasource matches how the Dockerfile'spython:3.14-slimis already tracked, so both move from the same source.Verification — I did not guess at the schema
A malformed
renovate.jsonbreaks dependency management repo-wide, so this was checked rather than assumed:renovate.jsonvalidates against the official schema atdocs.renovatebot.com/renovate-schema.json(the one this repo's$schemapoints at).managerFilePatternsis the correct key. I'd flagged uncertainty between it andfileMatch; the schema settles it — 352 occurrences ofmanagerFilePatterns, zero offileMatch. The older key would have been wrong.backend/pyproject.toml, captures3.14, and does not match therequires-pythonline.(?<name>...), because Renovate evaluates regexes in JavaScript. Python'srerejects it — my first test run failed on precisely that, which is a harness quirk, not a config bug.Backend gate re-run locally after both changes:
ruffclean,mypyclean across 61 files, 253 tests passing.What to watch on the next Renovate run
If the custom manager is wrong in some way the schema can't catch, the visible symptom would be a spurious PR against
backend/pyproject.tomlproposing an odd version, or no PR at all when the runtime next moves. Worth a glance at the dependency dashboard after Renovate's next cycle —backend/pyproject.tomlshould start appearing under Detected Dependencies.