chore: bump dev toolchain to Python 3.14, add HA 2026-latest matrix cell#39
Merged
Conversation
CI: - Add 4th matrix cell: py3.14 / HA 2026-latest / phacc 0.13.333. phacc 0.13.317+ requires Python 3.14; HA 2026.3.0+ requires Python 3.14.2. The existing py3.13/HA 2026 cell stays as the last-supported py3.13 boundary. - Move lint, type-check, validate, and pre-commit jobs to py3.14. They install requirements-dev.txt directly, so the bumped homeassistant>=2026.5.4 floor below forces py3.14 here. requirements-dev.txt: - homeassistant: 2023.6.0 -> 2026.5.4 (was a stale dev-only floor). - pytest-homeassistant-custom-component: drop the <0.13.317 upper cap (it existed only to keep the py3.14 wall away on py3.13 dev installs); floor bumped to 0.13.333 to match the new matrix cell. Docs: - AGENTS.md and CLAUDE.md updated to describe the 4-cell matrix and explain why the non-matrix jobs are on py3.14. Note: not running local check_all.py — toolchain now requires py3.14.2+ which is not installed locally. CI is the verification. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #39 +/- ##
=======================================
Coverage 91.51% 91.51%
=======================================
Files 10 10
Lines 849 849
Branches 79 79
=======================================
Hits 777 777
Misses 49 49
Partials 23 23 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
mypy was running on Python 3.14 (lint/pre-commit jobs) but python_version="3.13" told it to refuse py3.14-specific syntax. HA 2026.5.4's device_registry.py uses an except expression without parentheses (py3.14 syntax), so mypy's parse aborted before any of our code was checked. Bumping to 3.14 matches the runtime toolchain and lets mypy parse HA's installed source. Our integration code does not use py3.14-only syntax — black's target-version stays at py313 and other linters are unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a 4th CI matrix cell on Python 3.14 / HA 2026-latest, moves the non-matrix jobs (lint, type-check, validate, pre-commit) to py3.14, and bumps
requirements-dev.txtfloors tohomeassistant>=2026.5.4andpytest-homeassistant-custom-component>=0.13.333. This unblocks Dependabot PRs #30 and #31, which were stuck because both target dependencies require Python ≥3.14 / ≥3.14.2.Why
Requires-Python >=3.14Requires-Python >=3.14.2The matrix was capped at py3.13, so
pip install -r requirements-dev.txtfailed on PRs that bumped either floor. The existingpy3.13 / HA 2026 / phacc==0.13.316cell stays as the "last py3.13" boundary — the new cell sits beside it for the moving HA head.Changes
.github/workflows/ci.ymlpy3.14 / ha-version=2026-latest / phacc==0.13.333.validate,type-check,lintjobs: setup-python3.13→3.14..github/workflows/pre-commit.yml3.13→3.14.requirements-dev.txthomeassistant>=2023.6.0→>=2026.5.4.pytest-homeassistant-custom-component>=0.13.298,<0.13.317→>=0.13.333. The upper cap existed only to keep py3.13 dev installs away from py3.14-gated phacc — no longer needed since the dev floor is now py3.14.AGENTS.mdandCLAUDE.mdPre-flight already done
actions/setup-python@v6resolves Python 3.14.2/3/4/5 onubuntu-24.04(latest stable 3.14.5).python check_all.py— toolchain now requires py3.14.2+ which isn't installed locally. CI is the verification.Test plan
testlint,type-check,validate,pre-commit,hassfest,hacs-validationpass on py3.14codecov/patchandcodecov/projectresolve (currently gated toha-version == '2026', the existing py3.13 cell — unchanged)@dependabot rebasechore: update pytest-homeassistant-custom-component requirement from <0.13.317,>=0.13.298 to >=0.13.333,<0.13.334 #30 and chore: update homeassistant requirement from >=2023.6.0 to >=2026.5.4 #31 — both should turn green or auto-close as obsoleteNot in scope
manifest.jsonHA floor (2024.4.0) stays — runtime support for older HA is independent of dev tooling..github/dependabot.ymlignore list — no longer needed if this PR works; revisit only if the matrix bump is reverted.🤖 Generated with Claude Code