From bcee5f4d9fbaeb1a9c8f6a8d37fdff3d57d3a3c6 Mon Sep 17 00:00:00 2001 From: dontinelli <73341522+dontinelli@users.noreply.github.com> Date: Sat, 29 Jun 2024 19:32:22 +0200 Subject: [PATCH] Store runtime data inside the config entry in solarlog (#120773) --- homeassistant/components/solarlog/__init__.py | 12 +++++++----- homeassistant/components/solarlog/coordinator.py | 9 +++++++-- homeassistant/components/solarlog/sensor.py | 9 +++++---- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/solarlog/__init__.py b/homeassistant/components/solarlog/__init__.py index 6975a420732..962efa4e190 100644 --- a/homeassistant/components/solarlog/__init__.py +++ b/homeassistant/components/solarlog/__init__.py @@ -7,29 +7,31 @@ from homeassistant.const import Platform from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er -from .const import DOMAIN from .coordinator import SolarlogData _LOGGER = logging.getLogger(__name__) PLATFORMS = [Platform.SENSOR] +type SolarlogConfigEntry = ConfigEntry[SolarlogData] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_setup_entry(hass: HomeAssistant, entry: SolarlogConfigEntry) -> bool: """Set up a config entry for solarlog.""" coordinator = SolarlogData(hass, entry) await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + entry.runtime_data = coordinator await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True -async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +async def async_unload_entry(hass: HomeAssistant, entry: SolarlogConfigEntry) -> bool: """Unload a config entry.""" return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) -async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: +async def async_migrate_entry( + hass: HomeAssistant, config_entry: SolarlogConfigEntry +) -> bool: """Migrate old entry.""" _LOGGER.debug("Migrating from version %s", config_entry.version) diff --git a/homeassistant/components/solarlog/coordinator.py b/homeassistant/components/solarlog/coordinator.py index 794e556add5..d2963e1950e 100644 --- a/homeassistant/components/solarlog/coordinator.py +++ b/homeassistant/components/solarlog/coordinator.py @@ -1,7 +1,10 @@ """DataUpdateCoordinator for solarlog integration.""" +from __future__ import annotations + from datetime import timedelta import logging +from typing import TYPE_CHECKING from urllib.parse import ParseResult, urlparse from solarlog_cli.solarlog_connector import SolarLogConnector @@ -10,7 +13,6 @@ from solarlog_cli.solarlog_exceptions import ( SolarLogUpdateError, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST from homeassistant.core import HomeAssistant from homeassistant.exceptions import ConfigEntryNotReady @@ -18,11 +20,14 @@ from homeassistant.helpers import update_coordinator _LOGGER = logging.getLogger(__name__) +if TYPE_CHECKING: + from . import SolarlogConfigEntry + class SolarlogData(update_coordinator.DataUpdateCoordinator): """Get and update the latest data.""" - def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None: + def __init__(self, hass: HomeAssistant, entry: SolarlogConfigEntry) -> None: """Initialize the data object.""" super().__init__( hass, _LOGGER, name="SolarLog", update_interval=timedelta(seconds=60) diff --git a/homeassistant/components/solarlog/sensor.py b/homeassistant/components/solarlog/sensor.py index a0d6d4bc540..45961133e8a 100644 --- a/homeassistant/components/solarlog/sensor.py +++ b/homeassistant/components/solarlog/sensor.py @@ -10,7 +10,6 @@ from homeassistant.components.sensor import ( SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( PERCENTAGE, UnitOfElectricPotential, @@ -22,7 +21,7 @@ from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.update_coordinator import CoordinatorEntity -from . import SolarlogData +from . import SolarlogConfigEntry, SolarlogData from .const import DOMAIN @@ -201,10 +200,12 @@ SENSOR_TYPES: tuple[SolarLogSensorEntityDescription, ...] = ( async def async_setup_entry( - hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback + hass: HomeAssistant, + entry: SolarlogConfigEntry, + async_add_entities: AddEntitiesCallback, ) -> None: """Add solarlog entry.""" - coordinator = hass.data[DOMAIN][entry.entry_id] + coordinator = entry.runtime_data async_add_entities( SolarlogSensor(coordinator, description) for description in SENSOR_TYPES )