From daccb3e9b36e80e42ffd49120273debe69985851 Mon Sep 17 00:00:00 2001 From: Michael <35783820+mib1185@users.noreply.github.com> Date: Sat, 8 Feb 2025 14:06:50 +0100 Subject: [PATCH] Explicitly pass in the config_entry in fitbit coordinator (#137808) explicitly pass in the config_entry in coordinator --- homeassistant/components/fitbit/__init__.py | 8 ++------ homeassistant/components/fitbit/coordinator.py | 17 +++++++++++++++-- homeassistant/components/fitbit/sensor.py | 3 +-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/fitbit/__init__.py b/homeassistant/components/fitbit/__init__.py index 0c4a37198d6..f2378797d8d 100644 --- a/homeassistant/components/fitbit/__init__.py +++ b/homeassistant/components/fitbit/__init__.py @@ -1,6 +1,5 @@ """The fitbit component.""" -from homeassistant.config_entries import ConfigEntry from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady @@ -8,16 +7,13 @@ from homeassistant.helpers import config_entry_oauth2_flow from . import api from .const import FitbitScope -from .coordinator import FitbitData, FitbitDeviceCoordinator +from .coordinator import FitbitConfigEntry, FitbitData, FitbitDeviceCoordinator from .exceptions import FitbitApiException, FitbitAuthException from .model import config_from_entry_data PLATFORMS: list[Platform] = [Platform.SENSOR] -type FitbitConfigEntry = ConfigEntry[FitbitData] - - async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bool: """Set up fitbit from a config entry.""" implementation = ( @@ -39,7 +35,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: FitbitConfigEntry) -> bo fitbit_config = config_from_entry_data(entry.data) coordinator: FitbitDeviceCoordinator | None = None if fitbit_config.is_allowed_resource(FitbitScope.DEVICE, "devices/battery"): - coordinator = FitbitDeviceCoordinator(hass, fitbit_api) + coordinator = FitbitDeviceCoordinator(hass, entry, fitbit_api) await coordinator.async_config_entry_first_refresh() entry.runtime_data = FitbitData(api=fitbit_api, device_coordinator=coordinator) diff --git a/homeassistant/components/fitbit/coordinator.py b/homeassistant/components/fitbit/coordinator.py index 2126129d261..867723419dd 100644 --- a/homeassistant/components/fitbit/coordinator.py +++ b/homeassistant/components/fitbit/coordinator.py @@ -6,6 +6,7 @@ import datetime import logging from typing import Final +from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryAuthFailed from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed @@ -19,13 +20,25 @@ _LOGGER = logging.getLogger(__name__) UPDATE_INTERVAL: Final = datetime.timedelta(minutes=30) TIMEOUT = 10 +type FitbitConfigEntry = ConfigEntry[FitbitData] + class FitbitDeviceCoordinator(DataUpdateCoordinator[dict[str, FitbitDevice]]): """Coordinator for fetching fitbit devices from the API.""" - def __init__(self, hass: HomeAssistant, api: FitbitApi) -> None: + config_entry: FitbitConfigEntry + + def __init__( + self, hass: HomeAssistant, config_entry: FitbitConfigEntry, api: FitbitApi + ) -> None: """Initialize FitbitDeviceCoordinator.""" - super().__init__(hass, _LOGGER, name="Fitbit", update_interval=UPDATE_INTERVAL) + super().__init__( + hass, + _LOGGER, + config_entry=config_entry, + name="Fitbit", + update_interval=UPDATE_INTERVAL, + ) self._api = api async def _async_update_data(self) -> dict[str, FitbitDevice]: diff --git a/homeassistant/components/fitbit/sensor.py b/homeassistant/components/fitbit/sensor.py index 4ccbea97a66..bbb3da46e52 100644 --- a/homeassistant/components/fitbit/sensor.py +++ b/homeassistant/components/fitbit/sensor.py @@ -28,10 +28,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.icon import icon_for_battery_level from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import FitbitConfigEntry from .api import FitbitApi from .const import ATTRIBUTION, BATTERY_LEVELS, DOMAIN, FitbitScope, FitbitUnitSystem -from .coordinator import FitbitDeviceCoordinator +from .coordinator import FitbitConfigEntry, FitbitDeviceCoordinator from .exceptions import FitbitApiException, FitbitAuthException from .model import FitbitDevice, config_from_entry_data