Explicitly pass in the config_entry in lidarr coordinator (#138111)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-09 19:41:44 +01:00 committed by GitHub
parent e1ed46f593
commit 9be5976807
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 29 additions and 23 deletions

View File

@ -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)

View File

@ -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),
)

View File

@ -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