Bump base image to 2026.02.0 with Python 3.14.3, use 3.14.3 in CI#162263
Bump base image to 2026.02.0 with Python 3.14.3, use 3.14.3 in CI#162263
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the Python version from 3.14.2 to 3.14.3 across all CI workflows and bumps the base Docker image version from 2026.01.0 to 2026.02.0. The base image update includes libcec 7.1.1 and Python 3.14.3.
Changes:
- Updated Python version from 3.14.2 to 3.14.3 in all GitHub Actions workflow files
- Updated base Docker image version from 2026.01.0 to 2026.02.0 in the builder workflow
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| .github/workflows/wheels.yml | Updated DEFAULT_PYTHON environment variable to 3.14.3 |
| .github/workflows/translations.yml | Updated DEFAULT_PYTHON environment variable to 3.14.3 |
| .github/workflows/ci.yaml | Updated DEFAULT_PYTHON and ALL_PYTHON_VERSIONS to 3.14.3 |
| .github/workflows/builder.yml | Updated DEFAULT_PYTHON to 3.14.3 and BASE_IMAGE_VERSION to 2026.02.0 |
|
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
|
Majority of the test failures was caused by python/cpython#144506, as proven by the monkey-patch in the last commit. There are still quite some suspicious test failures, will look into them as well. |
|
Looking at the test logs in the CI pipeline, there are 49 integrations failing tests: Also running these tests locally, I found a few more failures: The few tests I have looked at seem geniune failures and Python versions <3.13.2 just hid those. We might have to go integration by integration to fix each. So far, I have looked into two integrations: Wemo (`wemo`)Wemo fails a few tests, e.g. Looking at the wrapper: @contextlib.contextmanager
def _wemo_call_wrapper(self, message: str) -> Generator[None]:
"""Wrap calls to the device that change its state.
1. Takes care of making available=False when communications with the
device fails.
2. Ensures all entities sharing the same coordinator are aware of
updates to the device state.
"""
try:
yield
except ActionException as err:
_LOGGER.warning("Could not %s for %s (%s)", message, self.name, err)
self.coordinator.last_exception = err
self.coordinator.last_update_success = False # Used for self.available.
finally:
self.hass.add_job(self.coordinator.async_update_listeners)It seems with the change in await hass.services.async_call(
domain,
SERVICE_TURN_ON,
{ATTR_ENTITY_ID: [wemo_entity.entity_id]},
blocking=True,
)
assert hass.states.get(wemo_entity.entity_id).state == STATE_UNAVAILABLEawaiting the service call doesn't guarantee that the entity has already changed, since the callback added to the event loop Home Assistant Cloud (`cloud`)The cloud integration tests ( These tests set up the cloud component via In theory, we have a session-scoped fixture Why the test fails (creating a subprocess shouldn't be an issue - it just makes the test slow) is still not quite clear to me. The tracelogs point to |
This also bumps libcec used in the base image to 7.1.1, full changelog: * https://github.com/home-assistant/docker/releases/tag/2026.02.0 Python changelog: * https://docs.python.org/release/3.14.3/whatsnew/changelog.html
|
CI now passes - but do we want this merged just before beta? Please note that there might be some remaining flaky tests. The frequent ones have been exposed by all the test runs but there are probably some rarer ones lurking about. |
Discussed it with Frenck and it's okay from his side, if we create a nightly afterwards. I created a PR. Let's hope that the CI is not failing. Also I build a test image. If all looks fine, we can merge it and I will create a nightly afterwards, which I will test on the green |
|
Closing in favor of #169444. |
Proposed change
This also bumps libcec used in the base image to 7.1.1, full changelog:
Python changelog:
CI Failures to be fixed
Type of change
Additional information
Checklist
ruff format homeassistant tests)If user exposed functionality or configuration variables are added/changed:
If the code communicates with devices, web services, or third-party tools:
Updated and included derived files by running:
python3 -m script.hassfest.requirements_all.txt.Updated by running
python3 -m script.gen_requirements_all.To help with the load of incoming pull requests: