diff --git a/homeassistant/components/lidarr/__init__.py b/homeassistant/components/lidarr/__init__.py index a421a881b69..e3a5cf250b2 100644 --- a/homeassistant/components/lidarr/__init__.py +++ b/homeassistant/components/lidarr/__init__.py @@ -2,12 +2,11 @@ from __future__ import annotations -from dataclasses import dataclass, fields +from dataclasses import fields from aiopyarr.lidarr_client import LidarrClient from aiopyarr.models.host_configuration import PyArrHostConfiguration -from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_API_KEY, CONF_URL, CONF_VERIFY_SSL, Platform from homeassistant.core import HomeAssistant from homeassistant.helpers import device_registry as dr @@ -18,27 +17,16 @@ from .const import DEFAULT_NAME, DOMAIN from .coordinator import ( AlbumsDataUpdateCoordinator, DiskSpaceDataUpdateCoordinator, + LidarrConfigEntry, + LidarrData, QueueDataUpdateCoordinator, StatusDataUpdateCoordinator, WantedDataUpdateCoordinator, ) -type LidarrConfigEntry = ConfigEntry[LidarrData] - PLATFORMS = [Platform.SENSOR] -@dataclass(kw_only=True, slots=True) -class LidarrData: - """Lidarr data type.""" - - disk_space: DiskSpaceDataUpdateCoordinator - queue: QueueDataUpdateCoordinator - status: StatusDataUpdateCoordinator - wanted: WantedDataUpdateCoordinator - albums: AlbumsDataUpdateCoordinator - - async def async_setup_entry(hass: HomeAssistant, entry: LidarrConfigEntry) -> bool: """Set up Lidarr from a config entry.""" host_configuration = PyArrHostConfiguration( @@ -52,11 +40,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: LidarrConfigEntry) -> bo request_timeout=60, ) data = LidarrData( - disk_space=DiskSpaceDataUpdateCoordinator(hass, host_configuration, lidarr), - queue=QueueDataUpdateCoordinator(hass, host_configuration, lidarr), - status=StatusDataUpdateCoordinator(hass, host_configuration, lidarr), - wanted=WantedDataUpdateCoordinator(hass, host_configuration, lidarr), - albums=AlbumsDataUpdateCoordinator(hass, host_configuration, lidarr), + disk_space=DiskSpaceDataUpdateCoordinator( + hass, entry, host_configuration, lidarr + ), + queue=QueueDataUpdateCoordinator(hass, entry, host_configuration, lidarr), + status=StatusDataUpdateCoordinator(hass, entry, host_configuration, lidarr), + wanted=WantedDataUpdateCoordinator(hass, entry, host_configuration, lidarr), + albums=AlbumsDataUpdateCoordinator(hass, entry, host_configuration, lidarr), ) for field in fields(data): coordinator = getattr(data, field.name) diff --git a/homeassistant/components/lidarr/coordinator.py b/homeassistant/components/lidarr/coordinator.py index 1010f708748..3f9d2be4bec 100644 --- a/homeassistant/components/lidarr/coordinator.py +++ b/homeassistant/components/lidarr/coordinator.py @@ -3,6 +3,7 @@ from __future__ import annotations from abc import ABC, abstractmethod +from dataclasses import dataclass from datetime import timedelta from typing import Generic, TypeVar, cast @@ -17,17 +18,32 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda from .const import DEFAULT_MAX_RECORDS, DOMAIN, LOGGER + +@dataclass(kw_only=True, slots=True) +class LidarrData: + """Lidarr data type.""" + + disk_space: DiskSpaceDataUpdateCoordinator + queue: QueueDataUpdateCoordinator + status: StatusDataUpdateCoordinator + wanted: WantedDataUpdateCoordinator + albums: AlbumsDataUpdateCoordinator + + T = TypeVar("T", bound=list[LidarrRootFolder] | LidarrQueue | str | LidarrAlbum | int) +type LidarrConfigEntry = ConfigEntry[LidarrData] + class LidarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC): """Data update coordinator for the Lidarr integration.""" - config_entry: ConfigEntry + config_entry: LidarrConfigEntry def __init__( self, hass: HomeAssistant, + config_entry: LidarrConfigEntry, host_configuration: PyArrHostConfiguration, api_client: LidarrClient, ) -> None: @@ -35,6 +51,7 @@ class LidarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC): super().__init__( hass=hass, logger=LOGGER, + config_entry=config_entry, name=DOMAIN, update_interval=timedelta(seconds=30), ) diff --git a/homeassistant/components/lidarr/sensor.py b/homeassistant/components/lidarr/sensor.py index 805fcce53ad..7334241d0ed 100644 --- a/homeassistant/components/lidarr/sensor.py +++ b/homeassistant/components/lidarr/sensor.py @@ -18,9 +18,8 @@ from homeassistant.const import UnitOfInformation from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import LidarrConfigEntry from .const import BYTE_SIZES -from .coordinator import LidarrDataUpdateCoordinator, T +from .coordinator import LidarrConfigEntry, LidarrDataUpdateCoordinator, T from .entity import LidarrEntity