From a75a513531d668c10984d44183ac1623578a30e6 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 23 Sep 2024 12:42:00 +0200 Subject: [PATCH] Move radarr base entity to separate module (#126514) --- homeassistant/components/radarr/__init__.py | 47 +------------------ .../components/radarr/binary_sensor.py | 3 +- homeassistant/components/radarr/calendar.py | 3 +- homeassistant/components/radarr/entity.py | 46 ++++++++++++++++++ homeassistant/components/radarr/sensor.py | 3 +- 5 files changed, 53 insertions(+), 49 deletions(-) create mode 100644 homeassistant/components/radarr/entity.py diff --git a/homeassistant/components/radarr/__init__.py b/homeassistant/components/radarr/__init__.py index 1023bf10659..5c225697f98 100644 --- a/homeassistant/components/radarr/__init__.py +++ b/homeassistant/components/radarr/__init__.py @@ -3,26 +3,15 @@ from __future__ import annotations from dataclasses import dataclass, fields -from typing import cast from aiopyarr.models.host_configuration import PyArrHostConfiguration from aiopyarr.radarr_client import RadarrClient from homeassistant.config_entries import ConfigEntry -from homeassistant.const import ( - ATTR_SW_VERSION, - 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.helpers.aiohttp_client import async_get_clientsession -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo -from homeassistant.helpers.entity import EntityDescription -from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import DEFAULT_NAME, DOMAIN from .coordinator import ( CalendarUpdateCoordinator, DiskSpaceDataUpdateCoordinator, @@ -31,7 +20,6 @@ from .coordinator import ( QueueDataUpdateCoordinator, RadarrDataUpdateCoordinator, StatusDataUpdateCoordinator, - T, ) PLATFORMS = [Platform.BINARY_SENSOR, Platform.CALENDAR, Platform.SENSOR] @@ -89,36 +77,3 @@ async def async_setup_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bo async def async_unload_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bool: """Unload a config entry.""" return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) - - -class RadarrEntity(CoordinatorEntity[RadarrDataUpdateCoordinator[T]]): - """Defines a base Radarr entity.""" - - _attr_has_entity_name = True - coordinator: RadarrDataUpdateCoordinator[T] - - def __init__( - self, - coordinator: RadarrDataUpdateCoordinator[T], - description: EntityDescription, - ) -> None: - """Create Radarr entity.""" - super().__init__(coordinator) - self.entity_description = description - self._attr_unique_id = f"{coordinator.config_entry.entry_id}_{description.key}" - - @property - def device_info(self) -> DeviceInfo: - """Return device information about the Radarr instance.""" - device_info = DeviceInfo( - configuration_url=self.coordinator.host_configuration.url, - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, self.coordinator.config_entry.entry_id)}, - manufacturer=DEFAULT_NAME, - name=self.coordinator.config_entry.title, - ) - if isinstance(self.coordinator, StatusDataUpdateCoordinator): - device_info[ATTR_SW_VERSION] = cast( - StatusDataUpdateCoordinator, self.coordinator - ).data.version - return device_info diff --git a/homeassistant/components/radarr/binary_sensor.py b/homeassistant/components/radarr/binary_sensor.py index 6c0468cff58..953c7dead18 100644 --- a/homeassistant/components/radarr/binary_sensor.py +++ b/homeassistant/components/radarr/binary_sensor.py @@ -13,8 +13,9 @@ from homeassistant.const import EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RadarrConfigEntry, RadarrEntity +from . import RadarrConfigEntry from .const import HEALTH_ISSUES +from .entity import RadarrEntity BINARY_SENSOR_TYPE = BinarySensorEntityDescription( key="health", diff --git a/homeassistant/components/radarr/calendar.py b/homeassistant/components/radarr/calendar.py index 4f866123a1a..c741c178862 100644 --- a/homeassistant/components/radarr/calendar.py +++ b/homeassistant/components/radarr/calendar.py @@ -9,8 +9,9 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RadarrConfigEntry, RadarrEntity +from . import RadarrConfigEntry from .coordinator import CalendarUpdateCoordinator, RadarrEvent +from .entity import RadarrEntity CALENDAR_TYPE = EntityDescription( key="calendar", diff --git a/homeassistant/components/radarr/entity.py b/homeassistant/components/radarr/entity.py new file mode 100644 index 00000000000..bc2c17821cc --- /dev/null +++ b/homeassistant/components/radarr/entity.py @@ -0,0 +1,46 @@ +"""The Radarr component.""" + +from __future__ import annotations + +from typing import cast + +from homeassistant.const import ATTR_SW_VERSION +from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo +from homeassistant.helpers.entity import EntityDescription +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .const import DEFAULT_NAME, DOMAIN +from .coordinator import RadarrDataUpdateCoordinator, StatusDataUpdateCoordinator, T + + +class RadarrEntity(CoordinatorEntity[RadarrDataUpdateCoordinator[T]]): + """Defines a base Radarr entity.""" + + _attr_has_entity_name = True + coordinator: RadarrDataUpdateCoordinator[T] + + def __init__( + self, + coordinator: RadarrDataUpdateCoordinator[T], + description: EntityDescription, + ) -> None: + """Create Radarr entity.""" + super().__init__(coordinator) + self.entity_description = description + self._attr_unique_id = f"{coordinator.config_entry.entry_id}_{description.key}" + + @property + def device_info(self) -> DeviceInfo: + """Return device information about the Radarr instance.""" + device_info = DeviceInfo( + configuration_url=self.coordinator.host_configuration.url, + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, self.coordinator.config_entry.entry_id)}, + manufacturer=DEFAULT_NAME, + name=self.coordinator.config_entry.title, + ) + if isinstance(self.coordinator, StatusDataUpdateCoordinator): + device_info[ATTR_SW_VERSION] = cast( + StatusDataUpdateCoordinator, self.coordinator + ).data.version + return device_info diff --git a/homeassistant/components/radarr/sensor.py b/homeassistant/components/radarr/sensor.py index 441c44de781..df1a0686e00 100644 --- a/homeassistant/components/radarr/sensor.py +++ b/homeassistant/components/radarr/sensor.py @@ -19,8 +19,9 @@ from homeassistant.const import EntityCategory, UnitOfInformation from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback -from . import RadarrConfigEntry, RadarrEntity +from . import RadarrConfigEntry from .coordinator import RadarrDataUpdateCoordinator, T +from .entity import RadarrEntity def get_space(data: list[Diskspace], name: str) -> str: