From 10d4af56740a9e5cd4e12e7d7d8b9ba697ff8b8f Mon Sep 17 00:00:00 2001 From: Erwin Douna Date: Tue, 3 Feb 2026 11:23:34 +0100 Subject: [PATCH] Use asyncio.gather pattern in portainer (#160888) --- homeassistant/components/portainer/coordinator.py | 8 +++++--- tests/components/portainer/test_binary_sensor.py | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/portainer/coordinator.py b/homeassistant/components/portainer/coordinator.py index 1684fd578a5..8034bba5291 100644 --- a/homeassistant/components/portainer/coordinator.py +++ b/homeassistant/components/portainer/coordinator.py @@ -143,9 +143,11 @@ class PortainerCoordinator(DataUpdateCoordinator[dict[int, PortainerCoordinatorD continue try: - containers = await self.portainer.get_containers(endpoint.id) - docker_version = await self.portainer.docker_version(endpoint.id) - docker_info = await self.portainer.docker_info(endpoint.id) + containers, docker_version, docker_info = await asyncio.gather( + self.portainer.get_containers(endpoint.id), + self.portainer.docker_version(endpoint.id), + self.portainer.docker_info(endpoint.id), + ) prev_endpoint = self.data.get(endpoint.id) if self.data else None container_map: dict[str, PortainerContainerData] = {} diff --git a/tests/components/portainer/test_binary_sensor.py b/tests/components/portainer/test_binary_sensor.py index 3c37c7052ab..f40f9cd913c 100644 --- a/tests/components/portainer/test_binary_sensor.py +++ b/tests/components/portainer/test_binary_sensor.py @@ -58,8 +58,8 @@ async def test_refresh_endpoints_exceptions( hass: HomeAssistant, mock_portainer_client: AsyncMock, mock_config_entry: MockConfigEntry, - freezer: FrozenDateTimeFactory, exception: Exception, + freezer: FrozenDateTimeFactory, ) -> None: """Test entities go unavailable after coordinator refresh failures, for the endpoint fetch.""" await setup_integration(hass, mock_config_entry) @@ -69,7 +69,7 @@ async def test_refresh_endpoints_exceptions( freezer.tick(DEFAULT_SCAN_INTERVAL) async_fire_time_changed(hass, dt_util.utcnow()) - await hass.async_block_till_done() + await hass.async_block_till_done(wait_background_tasks=True) state = hass.states.get("binary_sensor.practical_morse_status") assert state.state == STATE_UNAVAILABLE @@ -87,8 +87,8 @@ async def test_refresh_containers_exceptions( hass: HomeAssistant, mock_portainer_client: AsyncMock, mock_config_entry: MockConfigEntry, - freezer: FrozenDateTimeFactory, exception: Exception, + freezer: FrozenDateTimeFactory, ) -> None: """Test entities go unavailable after coordinator refresh failures, for the container fetch.""" await setup_integration(hass, mock_config_entry) @@ -98,7 +98,7 @@ async def test_refresh_containers_exceptions( freezer.tick(DEFAULT_SCAN_INTERVAL) async_fire_time_changed(hass, dt_util.utcnow()) - await hass.async_block_till_done() + await hass.async_block_till_done(wait_background_tasks=True) state = hass.states.get("binary_sensor.practical_morse_status") assert state.state == STATE_UNAVAILABLE