From b533cd31078377269afe2c4851f04fc3209c1dd8 Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Sun, 9 Feb 2025 20:50:05 +0100 Subject: [PATCH] Explicitly pass in the config_entry in imgw_pib coordinator (#138144) explicitly pass in the config_entry in coordinator --- homeassistant/components/imgw_pib/__init__.py | 15 ++--------- .../components/imgw_pib/coordinator.py | 25 ++++++++++++++++++- .../components/imgw_pib/diagnostics.py | 2 +- homeassistant/components/imgw_pib/sensor.py | 3 +-- 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/homeassistant/components/imgw_pib/__init__.py b/homeassistant/components/imgw_pib/__init__.py index eb12e1a2bb4..f9524316570 100644 --- a/homeassistant/components/imgw_pib/__init__.py +++ b/homeassistant/components/imgw_pib/__init__.py @@ -2,7 +2,6 @@ from __future__ import annotations -from dataclasses import dataclass import logging from aiohttp import ClientError @@ -10,7 +9,6 @@ from imgw_pib import ImgwPib from imgw_pib.exceptions import ApiError from homeassistant.components.binary_sensor import DOMAIN as BINARY_SENSOR_PLATFORM -from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady @@ -18,21 +16,12 @@ from homeassistant.helpers import entity_registry as er from homeassistant.helpers.aiohttp_client import async_get_clientsession from .const import CONF_STATION_ID, DOMAIN -from .coordinator import ImgwPibDataUpdateCoordinator +from .coordinator import ImgwPibConfigEntry, ImgwPibData, ImgwPibDataUpdateCoordinator PLATFORMS: list[Platform] = [Platform.SENSOR] _LOGGER = logging.getLogger(__name__) -type ImgwPibConfigEntry = ConfigEntry[ImgwPibData] - - -@dataclass -class ImgwPibData: - """Data for the IMGW-PIB integration.""" - - coordinator: ImgwPibDataUpdateCoordinator - async def async_setup_entry(hass: HomeAssistant, entry: ImgwPibConfigEntry) -> bool: """Set up IMGW-PIB from a config entry.""" @@ -51,7 +40,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ImgwPibConfigEntry) -> b except (ClientError, TimeoutError, ApiError) as err: raise ConfigEntryNotReady from err - coordinator = ImgwPibDataUpdateCoordinator(hass, imgwpib, station_id) + coordinator = ImgwPibDataUpdateCoordinator(hass, entry, imgwpib, station_id) await coordinator.async_config_entry_first_refresh() # Remove binary_sensor entities for which the endpoint has been blocked by IMGW-PIB API diff --git a/homeassistant/components/imgw_pib/coordinator.py b/homeassistant/components/imgw_pib/coordinator.py index 77a58001a6f..fbe470ca953 100644 --- a/homeassistant/components/imgw_pib/coordinator.py +++ b/homeassistant/components/imgw_pib/coordinator.py @@ -1,9 +1,13 @@ """Data Update Coordinator for IMGW-PIB integration.""" +from __future__ import annotations + +from dataclasses import dataclass import logging from imgw_pib import ApiError, HydrologicalData, ImgwPib +from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed @@ -13,12 +17,25 @@ from .const import DOMAIN, UPDATE_INTERVAL _LOGGER = logging.getLogger(__name__) +@dataclass +class ImgwPibData: + """Data for the IMGW-PIB integration.""" + + coordinator: ImgwPibDataUpdateCoordinator + + +type ImgwPibConfigEntry = ConfigEntry[ImgwPibData] + + class ImgwPibDataUpdateCoordinator(DataUpdateCoordinator[HydrologicalData]): """Class to manage fetching IMGW-PIB data API.""" + config_entry: ImgwPibConfigEntry + def __init__( self, hass: HomeAssistant, + config_entry: ImgwPibConfigEntry, imgwpib: ImgwPib, station_id: str, ) -> None: @@ -33,7 +50,13 @@ class ImgwPibDataUpdateCoordinator(DataUpdateCoordinator[HydrologicalData]): configuration_url=f"https://hydro.imgw.pl/#/station/hydro/{station_id}", ) - super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=UPDATE_INTERVAL) + super().__init__( + hass, + _LOGGER, + config_entry=config_entry, + name=DOMAIN, + update_interval=UPDATE_INTERVAL, + ) async def _async_update_data(self) -> HydrologicalData: """Update data via internal method.""" diff --git a/homeassistant/components/imgw_pib/diagnostics.py b/homeassistant/components/imgw_pib/diagnostics.py index d135208115f..ce9cb3f9e95 100644 --- a/homeassistant/components/imgw_pib/diagnostics.py +++ b/homeassistant/components/imgw_pib/diagnostics.py @@ -7,7 +7,7 @@ from typing import Any from homeassistant.core import HomeAssistant -from . import ImgwPibConfigEntry +from .coordinator import ImgwPibConfigEntry async def async_get_config_entry_diagnostics( diff --git a/homeassistant/components/imgw_pib/sensor.py b/homeassistant/components/imgw_pib/sensor.py index 15043af2015..332c3bcedf8 100644 --- a/homeassistant/components/imgw_pib/sensor.py +++ b/homeassistant/components/imgw_pib/sensor.py @@ -20,9 +20,8 @@ from homeassistant.helpers import entity_registry as er from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from . import ImgwPibConfigEntry from .const import DOMAIN -from .coordinator import ImgwPibDataUpdateCoordinator +from .coordinator import ImgwPibConfigEntry, ImgwPibDataUpdateCoordinator from .entity import ImgwPibEntity PARALLEL_UPDATES = 1