Skip to content

ci: pin the Python interpreter to 3.14 - #146

Merged
g4bri3lDev merged 2 commits into
mainfrom
ci/pin-python-3.14
Oct 12, 2026
Merged

g4bri3lDev merged 2 commits into
mainfrom
ci/pin-python-3.14

Conversation

@g4bri3lDev

Copy link
Copy Markdown
Member

Problem

pytest (min-ha) fails on the release PR (#142) during uv sync, before any test runs.

Nothing pins the interpreter: there is no .python-version and requires-python is >=3.14.2 with no upper bound. The failing run installed uv 0.13.0, which downloaded CPython 3.15.0. The min-ha group locks pillow==12.2.0, which has no cp315 wheel, so uv built it from source and failed with RequiredDependencyException: jpeg.

The last green run on main (same lockfile) used uv 0.12.24 and CPython 3.14.8.

Fix

Add .python-version containing 3.14. uv reads it in CI (both test legs and ruff) and locally, so scripts/test and CI agree. Home Assistant runs on 3.14 across the supported range, so the hacs.json floor does not need to move.

Verification

Run locally on Python 3.14 with the pin in place:

  • scripts/test --min-ha: 240 passed
  • scripts/test: 240 passed
  • ruff check . and ruff format --check .: clean

Nothing pinned the interpreter, so uv started downloading CPython 3.15.0
once it was released. The min-ha group locks pillow 12.2.0, which ships no
3.15 wheel, so the install fell back to a source build and failed on the
missing libjpeg headers before any test ran.

Home Assistant runs on 3.14 at both ends of the supported range, so that
is the interpreter both legs should test against.
The bump to Home Assistant 2026.10.1 left serialx at 1.8.2, because the
bump workflow ran a plain uv lock and the requirement is unpinned.
2026.10.1's usb component imports PortSettingsUpdate, which needs serialx
1.11.0, so the latest leg failed while loading conftest.

The floor cannot follow: serialx 1.11.0 does not import against the
aioesphomeapi that 2026.7.0 resolves. Pin the floor leg to the 1.8.2 its
usb manifest asks for and let the latest leg move to 1.11.0. The bump
workflow now upgrades the unpinned component requirements so the next
Home Assistant bump picks them up.
@g4bri3lDev
g4bri3lDev merged commit 4042743 into main Oct 12, 2026
4 of 5 checks passed
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