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 __future__ import annotations
from dataclasses import dataclass, fields from dataclasses import fields
from aiopyarr.models.host_configuration import PyArrHostConfiguration from aiopyarr.models.host_configuration import PyArrHostConfiguration
from aiopyarr.radarr_client import RadarrClient 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.const import CONF_API_KEY, CONF_URL, CONF_VERIFY_SSL, Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
@ -18,24 +17,13 @@ from .coordinator import (
HealthDataUpdateCoordinator, HealthDataUpdateCoordinator,
MoviesDataUpdateCoordinator, MoviesDataUpdateCoordinator,
QueueDataUpdateCoordinator, QueueDataUpdateCoordinator,
RadarrConfigEntry,
RadarrData,
RadarrDataUpdateCoordinator, RadarrDataUpdateCoordinator,
StatusDataUpdateCoordinator, StatusDataUpdateCoordinator,
) )
PLATFORMS = [Platform.BINARY_SENSOR, Platform.CALENDAR, Platform.SENSOR] 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: 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]), session=async_get_clientsession(hass, entry.data[CONF_VERIFY_SSL]),
) )
data = RadarrData( data = RadarrData(
calendar=CalendarUpdateCoordinator(hass, host_configuration, radarr), calendar=CalendarUpdateCoordinator(hass, entry, host_configuration, radarr),
disk_space=DiskSpaceDataUpdateCoordinator(hass, host_configuration, radarr), disk_space=DiskSpaceDataUpdateCoordinator(
health=HealthDataUpdateCoordinator(hass, host_configuration, radarr), hass, entry, host_configuration, radarr
movie=MoviesDataUpdateCoordinator(hass, host_configuration, radarr), ),
queue=QueueDataUpdateCoordinator(hass, host_configuration, radarr), health=HealthDataUpdateCoordinator(hass, entry, host_configuration, radarr),
status=StatusDataUpdateCoordinator(hass, 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): for field in fields(data):
coordinator: RadarrDataUpdateCoordinator = getattr(data, field.name) coordinator: RadarrDataUpdateCoordinator = getattr(data, field.name)

View File

@ -13,8 +13,8 @@ from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RadarrConfigEntry
from .const import HEALTH_ISSUES from .const import HEALTH_ISSUES
from .coordinator import RadarrConfigEntry
from .entity import RadarrEntity from .entity import RadarrEntity
BINARY_SENSOR_TYPE = BinarySensorEntityDescription( 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 import EntityDescription
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import RadarrConfigEntry from .coordinator import CalendarUpdateCoordinator, RadarrConfigEntry, RadarrEvent
from .coordinator import CalendarUpdateCoordinator, RadarrEvent
from .entity import RadarrEntity from .entity import RadarrEntity
CALENDAR_TYPE = EntityDescription( CALENDAR_TYPE = EntityDescription(

View File

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

View File

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