From cd51070219b35d7ca641f04304964969457e8a3e Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Fri, 20 Jun 2025 11:39:13 +0200 Subject: [PATCH] Migrate kmtronic to use runtime_data (#147193) --- homeassistant/components/kmtronic/__init__.py | 24 +++++++------------ homeassistant/components/kmtronic/const.py | 3 --- .../components/kmtronic/coordinator.py | 6 ++++- homeassistant/components/kmtronic/switch.py | 10 ++++---- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/homeassistant/components/kmtronic/__init__.py b/homeassistant/components/kmtronic/__init__.py index 1c2cfb7cc31..84959217a5d 100644 --- a/homeassistant/components/kmtronic/__init__.py +++ b/homeassistant/components/kmtronic/__init__.py @@ -3,18 +3,16 @@ from pykmtronic.auth import Auth from pykmtronic.hub import KMTronicHubAPI -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers import aiohttp_client -from .const import DATA_COORDINATOR, DATA_HUB, DOMAIN -from .coordinator import KMtronicCoordinator +from .coordinator import KMTronicConfigEntry, KMtronicCoordinator PLATFORMS = [Platform.SWITCH] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: KMTronicConfigEntry) -> bool: """Set up kmtronic from a config entry.""" session = aiohttp_client.async_get_clientsession(hass) auth = Auth( @@ -27,11 +25,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: coordinator = KMtronicCoordinator(hass, entry, hub) await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {}) - hass.data[DOMAIN][entry.entry_id] = { - DATA_HUB: hub, - DATA_COORDINATOR: coordinator, - } + entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) @@ -40,15 +34,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: return True -async def async_update_options(hass: HomeAssistant, config_entry: ConfigEntry) -> None: +async def async_update_options( + hass: HomeAssistant, config_entry: KMTronicConfigEntry +) -> None: """Update options.""" await hass.config_entries.async_reload(config_entry.entry_id) -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: KMTronicConfigEntry) -> bool: """Unload a config entry.""" - unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - if unload_ok: - hass.data[DOMAIN].pop(entry.entry_id) - - return unload_ok + return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) diff --git a/homeassistant/components/kmtronic/const.py b/homeassistant/components/kmtronic/const.py index 2381ad57998..6604b559bc2 100644 --- a/homeassistant/components/kmtronic/const.py +++ b/homeassistant/components/kmtronic/const.py @@ -4,7 +4,4 @@ DOMAIN = "kmtronic" CONF_REVERSE = "reverse" -DATA_HUB = "hub" -DATA_COORDINATOR = "coordinator" - MANUFACTURER = "KMtronic" diff --git a/homeassistant/components/kmtronic/coordinator.py b/homeassistant/components/kmtronic/coordinator.py index 8a94949dea6..a5bebff466b 100644 --- a/homeassistant/components/kmtronic/coordinator.py +++ b/homeassistant/components/kmtronic/coordinator.py @@ -18,12 +18,16 @@ PLATFORMS = [Platform.SWITCH] _LOGGER = logging.getLogger(__name__) +type KMTronicConfigEntry = ConfigEntry[KMtronicCoordinator] + class KMtronicCoordinator(DataUpdateCoordinator[None]): """Coordinator for KMTronic.""" + entry: KMTronicConfigEntry + def __init__( - self, hass: HomeAssistant, entry: ConfigEntry, hub: KMTronicHubAPI + self, hass: HomeAssistant, entry: KMTronicConfigEntry, hub: KMTronicHubAPI ) -> None: """Initialize the KMTronic coordinator.""" super().__init__( diff --git a/homeassistant/components/kmtronic/switch.py b/homeassistant/components/kmtronic/switch.py index b32f78b0e98..f8d068cec87 100644 --- a/homeassistant/components/kmtronic/switch.py +++ b/homeassistant/components/kmtronic/switch.py @@ -4,23 +4,23 @@ from typing import Any import urllib.parse from homeassistant.components.switch import SwitchEntity -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import CONF_REVERSE, DATA_COORDINATOR, DATA_HUB, DOMAIN, MANUFACTURER +from .const import CONF_REVERSE, DOMAIN, MANUFACTURER +from .coordinator import KMTronicConfigEntry async def async_setup_entry( hass: HomeAssistant, - entry: ConfigEntry, + entry: KMTronicConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback, ) -> None: """Config entry example.""" - coordinator = hass.data[DOMAIN][entry.entry_id][DATA_COORDINATOR] - hub = hass.data[DOMAIN][entry.entry_id][DATA_HUB] + coordinator = entry.runtime_data + hub = coordinator.hub reverse = entry.options.get(CONF_REVERSE, False) await hub.async_get_relays()