diff --git a/homeassistant/components/ridwell/__init__.py b/homeassistant/components/ridwell/__init__.py index 5f3656a8b5a..5a9c19ed36f 100644 --- a/homeassistant/components/ridwell/__init__.py +++ b/homeassistant/components/ridwell/__init__.py @@ -2,6 +2,7 @@ from __future__ import annotations import asyncio +from dataclasses import dataclass from datetime import timedelta from typing import Any @@ -21,19 +22,21 @@ from homeassistant.helpers.update_coordinator import ( UpdateFailed, ) -from .const import ( - DATA_ACCOUNT, - DATA_COORDINATOR, - DOMAIN, - LOGGER, - SENSOR_TYPE_NEXT_PICKUP, -) +from .const import DOMAIN, LOGGER, SENSOR_TYPE_NEXT_PICKUP DEFAULT_UPDATE_INTERVAL = timedelta(hours=1) PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.SWITCH] +@dataclass +class RidwellData: + """Define an object to be stored in `hass.data`.""" + + accounts: dict[str, RidwellAccount] + coordinator: DataUpdateCoordinator + + async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: """Set up Ridwell from a config entry.""" session = aiohttp_client.async_get_clientsession(hass) @@ -77,10 +80,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await coordinator.async_config_entry_first_refresh() hass.data.setdefault(DOMAIN, {}) - hass.data[DOMAIN][entry.entry_id] = { - DATA_ACCOUNT: accounts, - DATA_COORDINATOR: coordinator, - } + hass.data[DOMAIN][entry.entry_id] = RidwellData( + accounts=accounts, coordinator=coordinator + ) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) diff --git a/homeassistant/components/ridwell/const.py b/homeassistant/components/ridwell/const.py index bc1e78e2d93..69c5ead5277 100644 --- a/homeassistant/components/ridwell/const.py +++ b/homeassistant/components/ridwell/const.py @@ -5,7 +5,4 @@ DOMAIN = "ridwell" LOGGER = logging.getLogger(__package__) -DATA_ACCOUNT = "account" -DATA_COORDINATOR = "coordinator" - SENSOR_TYPE_NEXT_PICKUP = "next_pickup" diff --git a/homeassistant/components/ridwell/diagnostics.py b/homeassistant/components/ridwell/diagnostics.py index fce89a639ad..3f29165842f 100644 --- a/homeassistant/components/ridwell/diagnostics.py +++ b/homeassistant/components/ridwell/diagnostics.py @@ -6,19 +6,17 @@ from typing import Any from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from .const import DATA_COORDINATOR, DOMAIN +from . import RidwellData +from .const import DOMAIN async def async_get_config_entry_diagnostics( hass: HomeAssistant, entry: ConfigEntry ) -> dict[str, Any]: """Return diagnostics for a config entry.""" - coordinator: DataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][ - DATA_COORDINATOR - ] + data: RidwellData = hass.data[DOMAIN][entry.entry_id] return { - "data": [dataclasses.asdict(event) for event in coordinator.data.values()], + "data": [dataclasses.asdict(event) for event in data.coordinator.data.values()] } diff --git a/homeassistant/components/ridwell/sensor.py b/homeassistant/components/ridwell/sensor.py index f44cac134d8..9b7a4ab6954 100644 --- a/homeassistant/components/ridwell/sensor.py +++ b/homeassistant/components/ridwell/sensor.py @@ -18,8 +18,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import StateType from homeassistant.helpers.update_coordinator import DataUpdateCoordinator -from . import RidwellEntity -from .const import DATA_ACCOUNT, DATA_COORDINATOR, DOMAIN, SENSOR_TYPE_NEXT_PICKUP +from . import RidwellData, RidwellEntity +from .const import DOMAIN, SENSOR_TYPE_NEXT_PICKUP ATTR_CATEGORY = "category" ATTR_PICKUP_STATE = "pickup_state" @@ -37,13 +37,12 @@ async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Ridwell sensors based on a config entry.""" - accounts = hass.data[DOMAIN][entry.entry_id][DATA_ACCOUNT] - coordinator = hass.data[DOMAIN][entry.entry_id][DATA_COORDINATOR] + data: RidwellData = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ - RidwellSensor(coordinator, account, SENSOR_DESCRIPTION) - for account in accounts.values() + RidwellSensor(data.coordinator, account, SENSOR_DESCRIPTION) + for account in data.accounts.values() ] ) diff --git a/homeassistant/components/ridwell/switch.py b/homeassistant/components/ridwell/switch.py index 7bdea622507..d8e228be7db 100644 --- a/homeassistant/components/ridwell/switch.py +++ b/homeassistant/components/ridwell/switch.py @@ -12,8 +12,8 @@ from homeassistant.core import HomeAssistant from homeassistant.exceptions import HomeAssistantError from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RidwellEntity -from .const import DATA_ACCOUNT, DATA_COORDINATOR, DOMAIN +from . import RidwellData, RidwellEntity +from .const import DOMAIN SWITCH_TYPE_OPT_IN = "opt_in" @@ -28,13 +28,12 @@ async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: """Set up Ridwell sensors based on a config entry.""" - accounts = hass.data[DOMAIN][entry.entry_id][DATA_ACCOUNT] - coordinator = hass.data[DOMAIN][entry.entry_id][DATA_COORDINATOR] + data: RidwellData = hass.data[DOMAIN][entry.entry_id] async_add_entities( [ - RidwellSwitch(coordinator, account, SWITCH_DESCRIPTION) - for account in accounts.values() + RidwellSwitch(data.coordinator, account, SWITCH_DESCRIPTION) + for account in data.accounts.values() ] )