diff --git a/homeassistant/components/v2c/__init__.py b/homeassistant/components/v2c/__init__.py index b80163742cb..0c07891df72 100644 --- a/homeassistant/components/v2c/__init__.py +++ b/homeassistant/components/v2c/__init__.py @@ -9,7 +9,6 @@ from homeassistant.const import CONF_HOST, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers.httpx_client import get_async_client -from .const import DOMAIN from .coordinator import V2CUpdateCoordinator PLATFORMS: list[Platform] = [ @@ -20,7 +19,10 @@ PLATFORMS: list[Platform] = [ ] -async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: +type V2CConfigEntry = ConfigEntry[V2CUpdateCoordinator] + + +async def async_setup_entry(hass: HomeAssistant, entry: V2CConfigEntry) -> bool: """Set up V2C from a config entry.""" host = entry.data[CONF_HOST] @@ -29,7 +31,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await coordinator.async_config_entry_first_refresh() - hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator + entry.runtime_data = coordinator if coordinator.data.ID and entry.unique_id != coordinator.data.ID: hass.config_entries.async_update_entry(entry, unique_id=coordinator.data.ID) @@ -41,7 +43,4 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Unload a config entry.""" - if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): - 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/v2c/binary_sensor.py b/homeassistant/components/v2c/binary_sensor.py index 203cc9f3396..28ad3665996 100644 --- a/homeassistant/components/v2c/binary_sensor.py +++ b/homeassistant/components/v2c/binary_sensor.py @@ -12,11 +12,10 @@ from homeassistant.components.binary_sensor import ( BinarySensorEntity, BinarySensorEntityDescription, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN +from . import V2CConfigEntry from .coordinator import V2CUpdateCoordinator from .entity import V2CBaseEntity @@ -51,11 +50,11 @@ TRYDAN_SENSORS = ( async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: V2CConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Set up V2C binary sensor platform.""" - coordinator: V2CUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( V2CBinarySensorBaseEntity(coordinator, description, config_entry.entry_id) diff --git a/homeassistant/components/v2c/diagnostics.py b/homeassistant/components/v2c/diagnostics.py index 9f9df8723e0..289d585b164 100644 --- a/homeassistant/components/v2c/diagnostics.py +++ b/homeassistant/components/v2c/diagnostics.py @@ -5,21 +5,19 @@ from __future__ import annotations from typing import TYPE_CHECKING, Any from homeassistant.components.diagnostics import async_redact_data -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_HOST from homeassistant.core import HomeAssistant -from .const import DOMAIN -from .coordinator import V2CUpdateCoordinator +from . import V2CConfigEntry TO_REDACT = {CONF_HOST, "title"} async def async_get_config_entry_diagnostics( - hass: HomeAssistant, entry: ConfigEntry + hass: HomeAssistant, entry: V2CConfigEntry ) -> dict[str, Any]: """Return diagnostics for a config entry.""" - coordinator: V2CUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] + coordinator = entry.runtime_data if TYPE_CHECKING: assert coordinator.evse diff --git a/homeassistant/components/v2c/number.py b/homeassistant/components/v2c/number.py index 376509c4780..2ff70226132 100644 --- a/homeassistant/components/v2c/number.py +++ b/homeassistant/components/v2c/number.py @@ -13,11 +13,10 @@ from homeassistant.components.number import ( NumberEntity, NumberEntityDescription, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN +from . import V2CConfigEntry from .coordinator import V2CUpdateCoordinator from .entity import V2CBaseEntity @@ -48,11 +47,11 @@ TRYDAN_NUMBER_SETTINGS = ( async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: V2CConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Set up V2C Trydan number platform.""" - coordinator: V2CUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( V2CSettingsNumberEntity(coordinator, description, config_entry.entry_id) diff --git a/homeassistant/components/v2c/sensor.py b/homeassistant/components/v2c/sensor.py index 0c59993ac0e..fc0cc0bfaa8 100644 --- a/homeassistant/components/v2c/sensor.py +++ b/homeassistant/components/v2c/sensor.py @@ -15,13 +15,12 @@ from homeassistant.components.sensor import ( SensorEntityDescription, SensorStateClass, ) -from homeassistant.config_entries import ConfigEntry from homeassistant.const import UnitOfEnergy, UnitOfPower, UnitOfTime from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType -from .const import DOMAIN +from . import V2CConfigEntry from .coordinator import V2CUpdateCoordinator from .entity import V2CBaseEntity @@ -106,11 +105,11 @@ TRYDAN_SENSORS = ( async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: V2CConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Set up V2C sensor platform.""" - coordinator: V2CUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( V2CSensorBaseEntity(coordinator, description, config_entry.entry_id) diff --git a/homeassistant/components/v2c/switch.py b/homeassistant/components/v2c/switch.py index 0974a712153..cd89e954275 100644 --- a/homeassistant/components/v2c/switch.py +++ b/homeassistant/components/v2c/switch.py @@ -17,11 +17,10 @@ from pytrydan.models.trydan import ( ) from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription -from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from .const import DOMAIN +from . import V2CConfigEntry from .coordinator import V2CUpdateCoordinator from .entity import V2CBaseEntity @@ -80,11 +79,11 @@ TRYDAN_SWITCHES = ( async def async_setup_entry( hass: HomeAssistant, - config_entry: ConfigEntry, + config_entry: V2CConfigEntry, async_add_entities: AddEntitiesCallback, ) -> None: """Set up V2C switch platform.""" - coordinator: V2CUpdateCoordinator = hass.data[DOMAIN][config_entry.entry_id] + coordinator = config_entry.runtime_data async_add_entities( V2CSwitchEntity(coordinator, description, config_entry.entry_id) diff --git a/tests/components/v2c/conftest.py b/tests/components/v2c/conftest.py index 9cc3e4ed9e2..1803298be28 100644 --- a/tests/components/v2c/conftest.py +++ b/tests/components/v2c/conftest.py @@ -6,7 +6,7 @@ import pytest from pytrydan.models.trydan import TrydanData from typing_extensions import Generator -from homeassistant.components.v2c import DOMAIN +from homeassistant.components.v2c.const import DOMAIN from homeassistant.const import CONF_HOST from homeassistant.helpers.json import json_dumps