Explicitly pass in the config_entry in radarr coordinator (#137984)

explicitly pass in the config_entry in coordinator
This commit is contained in:
Michael 2025-02-09 15:51:10 +01:00 committed by GitHub
parent a90d471be0
commit 106c5c661e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 34 additions and 30 deletions

View File

@ -2,12 +2,11 @@
from __future__ import annotations
from dataclasses import dataclass, fields
from dataclasses import fields
from aiopyarr.models.host_configuration import PyArrHostConfiguration
from aiopyarr.radarr_client import RadarrClient
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.aiohttp_client import async_get_clientsession
@ -18,24 +17,13 @@ from .coordinator import (
HealthDataUpdateCoordinator,
MoviesDataUpdateCoordinator,
QueueDataUpdateCoordinator,
RadarrConfigEntry,
RadarrData,
RadarrDataUpdateCoordinator,
StatusDataUpdateCoordinator,
)
PLATFORMS = [Platform.BINARY_SENSOR, Platform.CALENDAR, Platform.SENSOR]
type RadarrConfigEntry = ConfigEntry[RadarrData]
@dataclass(kw_only=True, slots=True)
class RadarrData:
"""Radarr data type."""
calendar: CalendarUpdateCoordinator
disk_space: DiskSpaceDataUpdateCoordinator
health: HealthDataUpdateCoordinator
movie: MoviesDataUpdateCoordinator
queue: QueueDataUpdateCoordinator
status: StatusDataUpdateCoordinator
async def async_setup_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bool:
@ -50,12 +38,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bo
session=async_get_clientsession(hass, entry.data[CONF_VERIFY_SSL]),
)
data = RadarrData(
calendar=CalendarUpdateCoordinator(hass, host_configuration, radarr),
disk_space=DiskSpaceDataUpdateCoordinator(hass, host_configuration, radarr),
health=HealthDataUpdateCoordinator(hass, host_configuration, radarr),
movie=MoviesDataUpdateCoordinator(hass, host_configuration, radarr),
queue=QueueDataUpdateCoordinator(hass, host_configuration, radarr),
status=StatusDataUpdateCoordinator(hass, host_configuration, radarr),
calendar=CalendarUpdateCoordinator(hass, entry, host_configuration, radarr),
disk_space=DiskSpaceDataUpdateCoordinator(
hass, entry, host_configuration, radarr
),
health=HealthDataUpdateCoordinator(hass, entry, host_configuration, radarr),
movie=MoviesDataUpdateCoordinator(hass, entry, host_configuration, radarr),
queue=QueueDataUpdateCoordinator(hass, entry, host_configuration, radarr),
status=StatusDataUpdateCoordinator(hass, entry, host_configuration, radarr),
)
for field in fields(data):
coordinator: RadarrDataUpdateCoordinator = getattr(data, field.name)

View File

@ -13,8 +13,8 @@ from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RadarrConfigEntry
from .const import HEALTH_ISSUES
from .coordinator import RadarrConfigEntry
from .entity import RadarrEntity
BINARY_SENSOR_TYPE = BinarySensorEntityDescription(

View File

@ -9,8 +9,7 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RadarrConfigEntry
from .coordinator import CalendarUpdateCoordinator, RadarrEvent
from .coordinator import CalendarUpdateCoordinator, RadarrConfigEntry, RadarrEvent
from .entity import RadarrEntity
CALENDAR_TYPE = EntityDescription(

View File

@ -6,7 +6,7 @@ from abc import ABC, abstractmethod
import asyncio
from dataclasses import dataclass
from datetime import date, datetime, timedelta
from typing import TYPE_CHECKING, Generic, TypeVar, cast
from typing import Generic, TypeVar, cast
from aiopyarr import (
Health,
@ -20,14 +20,27 @@ from aiopyarr.models.host_configuration import PyArrHostConfiguration
from aiopyarr.radarr_client import RadarrClient
from homeassistant.components.calendar import CalendarEvent
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DEFAULT_MAX_RECORDS, DOMAIN, LOGGER
if TYPE_CHECKING:
from . import RadarrConfigEntry
@dataclass(kw_only=True, slots=True)
class RadarrData:
"""Radarr data type."""
calendar: CalendarUpdateCoordinator
disk_space: DiskSpaceDataUpdateCoordinator
health: HealthDataUpdateCoordinator
movie: MoviesDataUpdateCoordinator
queue: QueueDataUpdateCoordinator
status: StatusDataUpdateCoordinator
type RadarrConfigEntry = ConfigEntry[RadarrData]
T = TypeVar("T", bound=SystemStatus | list[RootFolder] | list[Health] | int | None)
@ -53,6 +66,7 @@ class RadarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
def __init__(
self,
hass: HomeAssistant,
config_entry: RadarrConfigEntry,
host_configuration: PyArrHostConfiguration,
api_client: RadarrClient,
) -> None:
@ -60,6 +74,7 @@ class RadarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
super().__init__(
hass=hass,
logger=LOGGER,
config_entry=config_entry,
name=DOMAIN,
update_interval=self._update_interval,
)
@ -140,11 +155,12 @@ class CalendarUpdateCoordinator(RadarrDataUpdateCoordinator[None]):
def __init__(
self,
hass: HomeAssistant,
config_entry: RadarrConfigEntry,
host_configuration: PyArrHostConfiguration,
api_client: RadarrClient,
) -> None:
"""Initialize."""
super().__init__(hass, host_configuration, api_client)
super().__init__(hass, config_entry, host_configuration, api_client)
self.event: RadarrEvent | None = None
self._events: list[RadarrEvent] = []

View File

@ -19,8 +19,7 @@ from homeassistant.const import EntityCategory, UnitOfInformation
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RadarrConfigEntry
from .coordinator import RadarrDataUpdateCoordinator, T
from .coordinator import RadarrConfigEntry, RadarrDataUpdateCoordinator, T
from .entity import RadarrEntity