diff --git a/homeassistant/components/met/__init__.py b/homeassistant/components/met/__init__.py index ec402a16489..540a7867203 100644 --- a/homeassistant/components/met/__init__.py +++ b/homeassistant/components/met/__init__.py @@ -21,8 +21,12 @@ PLATFORMS = [Platform.WEATHER] _LOGGER = logging.getLogger(__name__) +MetWeatherConfigEntry = ConfigEntry[MetDataUpdateCoordinator] -async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: + +async def async_setup_entry( + hass: HomeAssistant, config_entry: MetWeatherConfigEntry +) -> bool: """Set up Met as config entry.""" # Don't setup if tracking home location and latitude or longitude isn't set. # Also, filters out our onboarding default location. @@ -44,10 +48,10 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b if config_entry.data.get(CONF_TRACK_HOME, False): coordinator.track_home() - hass.data.setdefault(DOMAIN, {}) - hass.data[DOMAIN][config_entry.entry_id] = coordinator + config_entry.runtime_data = coordinator config_entry.async_on_unload(config_entry.add_update_listener(async_update_entry)) + config_entry.async_on_unload(coordinator.untrack_home) await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS) @@ -56,19 +60,14 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b return True -async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: +async def async_unload_entry( + hass: HomeAssistant, config_entry: MetWeatherConfigEntry +) -> bool: """Unload a config entry.""" - unload_ok = await hass.config_entries.async_unload_platforms( - config_entry, PLATFORMS - ) - - hass.data[DOMAIN][config_entry.entry_id].untrack_home() - hass.data[DOMAIN].pop(config_entry.entry_id) - - return unload_ok + return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS) -async def async_update_entry(hass: HomeAssistant, config_entry: ConfigEntry): +async def async_update_entry(hass: HomeAssistant, config_entry: MetWeatherConfigEntry): """Reload Met component when options changed.""" await hass.config_entries.async_reload(config_entry.entry_id) diff --git a/homeassistant/components/met/weather.py b/homeassistant/components/met/weather.py index d0ee4f275ea..809bb792b2c 100644 --- a/homeassistant/components/met/weather.py +++ b/homeassistant/components/met/weather.py @@ -21,7 +21,6 @@ from homeassistant.components.weather import ( SingleCoordinatorWeatherEntity, WeatherEntityFeature, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( CONF_LATITUDE, CONF_LONGITUDE, @@ -37,6 +36,7 @@ from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.util.unit_system import METRIC_SYSTEM +from . import MetWeatherConfigEntry from .const import ( ATTR_CONDITION_CLEAR_NIGHT, ATTR_CONDITION_SUNNY, @@ -53,11 +53,11 @@ DEFAULT_NAME = "Met.no" async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: MetWeatherConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Add a weather entity from a config_entry.""" - coordinator: MetDataUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data entity_registry = er.async_get(hass) name: str | None @@ -120,7 +120,7 @@ class MetWeather(SingleCoordinatorWeatherEntity[MetDataUpdateCoordinator]): def __init__( self, coordinator: MetDataUpdateCoordinator, - config_entry: ConfigEntry, + config_entry: MetWeatherConfigEntry, name: str, is_metric: bool, ) -> None: