Explicitly pass in the config_entry in iotty coordinator (#138140)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-09 21:01:13 +01:00 committed by GitHub
parent 733d9de042
commit 4eccc9d9a4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 24 additions and 27 deletions

View File

@ -2,12 +2,8 @@
from __future__ import annotations from __future__ import annotations
from dataclasses import dataclass
import logging import logging
from iottycloud.device import Device
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.config_entry_oauth2_flow import ( from homeassistant.helpers.config_entry_oauth2_flow import (
@ -15,22 +11,16 @@ from homeassistant.helpers.config_entry_oauth2_flow import (
async_get_config_entry_implementation, async_get_config_entry_implementation,
) )
from . import coordinator from .coordinator import (
IottyConfigEntry,
IottyConfigEntryData,
IottyDataUpdateCoordinator,
)
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
PLATFORMS: list[Platform] = [Platform.COVER, Platform.SWITCH] PLATFORMS: list[Platform] = [Platform.COVER, Platform.SWITCH]
type IottyConfigEntry = ConfigEntry[IottyConfigEntryData]
@dataclass
class IottyConfigEntryData:
"""Contains config entry data for iotty."""
known_devices: set[Device]
coordinator: coordinator.IottyDataUpdateCoordinator
async def async_setup_entry(hass: HomeAssistant, entry: IottyConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: IottyConfigEntry) -> bool:
"""Set up iotty from a config entry.""" """Set up iotty from a config entry."""
@ -39,9 +29,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: IottyConfigEntry) -> boo
implementation = await async_get_config_entry_implementation(hass, entry) implementation = await async_get_config_entry_implementation(hass, entry)
session = OAuth2Session(hass, entry, implementation) session = OAuth2Session(hass, entry, implementation)
data_update_coordinator = coordinator.IottyDataUpdateCoordinator( data_update_coordinator = IottyDataUpdateCoordinator(hass, entry, session)
hass, entry, session
)
entry.runtime_data = IottyConfigEntryData(set(), data_update_coordinator) entry.runtime_data = IottyConfigEntryData(set(), data_update_coordinator)
@ -51,6 +39,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: IottyConfigEntry) -> boo
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: IottyConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@ -32,16 +32,27 @@ class IottyData:
devices: list[Device] devices: list[Device]
@dataclass
class IottyConfigEntryData:
"""Contains config entry data for iotty."""
known_devices: set[Device]
coordinator: IottyDataUpdateCoordinator
type IottyConfigEntry = ConfigEntry[IottyConfigEntryData]
class IottyDataUpdateCoordinator(DataUpdateCoordinator[IottyData]): class IottyDataUpdateCoordinator(DataUpdateCoordinator[IottyData]):
"""Class to manage fetching Iotty data.""" """Class to manage fetching Iotty data."""
config_entry: ConfigEntry config_entry: IottyConfigEntry
_entities: dict[str, Entity] _entities: dict[str, Entity]
_devices: list[Device] _devices: list[Device]
_device_registry: dr.DeviceRegistry _device_registry: dr.DeviceRegistry
def __init__( def __init__(
self, hass: HomeAssistant, entry: ConfigEntry, session: OAuth2Session self, hass: HomeAssistant, entry: IottyConfigEntry, session: OAuth2Session
) -> None: ) -> None:
"""Initialize the coordinator.""" """Initialize the coordinator."""
_LOGGER.debug("Initializing iotty data update coordinator") _LOGGER.debug("Initializing iotty data update coordinator")
@ -49,11 +60,11 @@ class IottyDataUpdateCoordinator(DataUpdateCoordinator[IottyData]):
super().__init__( super().__init__(
hass, hass,
_LOGGER, _LOGGER,
config_entry=entry,
name=f"{DOMAIN}_coordinator", name=f"{DOMAIN}_coordinator",
update_interval=UPDATE_INTERVAL, update_interval=UPDATE_INTERVAL,
) )
self.config_entry = entry
self._entities = {} self._entities = {}
self._devices = [] self._devices = []
self.iotty = api.IottyProxy( self.iotty = api.IottyProxy(

View File

@ -18,9 +18,8 @@ from homeassistant.components.cover import (
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import IottyConfigEntry
from .api import IottyProxy from .api import IottyProxy
from .coordinator import IottyDataUpdateCoordinator from .coordinator import IottyConfigEntry, IottyDataUpdateCoordinator
from .entity import IottyEntity from .entity import IottyEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View File

@ -22,9 +22,8 @@ from homeassistant.components.switch import (
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import IottyConfigEntry
from .api import IottyProxy from .api import IottyProxy
from .coordinator import IottyDataUpdateCoordinator from .coordinator import IottyConfigEntry, IottyDataUpdateCoordinator
from .entity import IottyEntity from .entity import IottyEntity
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View File

@ -169,7 +169,7 @@ def mock_iotty() -> Generator[MagicMock]:
def mock_coordinator() -> Generator[MagicMock]: def mock_coordinator() -> Generator[MagicMock]:
"""Mock IottyDataUpdateCoordinator.""" """Mock IottyDataUpdateCoordinator."""
with patch( with patch(
"homeassistant.components.iotty.coordinator.IottyDataUpdateCoordinator", "homeassistant.components.iotty.IottyDataUpdateCoordinator",
autospec=True, autospec=True,
) as coordinator_mock: ) as coordinator_mock:
yield coordinator_mock yield coordinator_mock