diff --git a/homeassistant/components/transmission/entity.py b/homeassistant/components/transmission/entity.py new file mode 100644 index 00000000000..0fe4058ad1d --- /dev/null +++ b/homeassistant/components/transmission/entity.py @@ -0,0 +1,30 @@ +"""Base class for Transmission entities.""" + +from homeassistant.helpers.device_registry import DeviceInfo +from homeassistant.helpers.entity import EntityDescription +from homeassistant.helpers.update_coordinator import CoordinatorEntity + +from .const import DOMAIN +from .coordinator import TransmissionDataUpdateCoordinator + + +class TransmissionEntity(CoordinatorEntity[TransmissionDataUpdateCoordinator]): + """Defines a base Transmission entity.""" + + _attr_has_entity_name = True + + def __init__( + self, + coordinator: TransmissionDataUpdateCoordinator, + entity_description: EntityDescription, + ) -> None: + """Initialize Transmission entity.""" + super().__init__(coordinator) + self.entity_description = entity_description + self._attr_unique_id = ( + f"{coordinator.config_entry.entry_id}-{entity_description.key}" + ) + self._attr_device_info = DeviceInfo( + identifiers={(DOMAIN, coordinator.config_entry.entry_id)}, + manufacturer="Transmission", + ) diff --git a/homeassistant/components/transmission/sensor.py b/homeassistant/components/transmission/sensor.py index feb84f09fa8..e8e8bb389ab 100644 --- a/homeassistant/components/transmission/sensor.py +++ b/homeassistant/components/transmission/sensor.py @@ -16,13 +16,10 @@ from homeassistant.components.sensor import ( ) from homeassistant.const import STATE_IDLE, UnitOfDataRate from homeassistant.core import HomeAssistant -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback from homeassistant.helpers.typing import StateType -from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import ( - DOMAIN, STATE_ATTR_TORRENT_INFO, STATE_DOWNLOADING, STATE_SEEDING, @@ -30,6 +27,7 @@ from .const import ( SUPPORTED_ORDER_MODES, ) from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator +from .entity import TransmissionEntity MODES: dict[str, list[str] | None] = { "started_torrents": ["downloading"], @@ -140,30 +138,10 @@ async def async_setup_entry( ) -class TransmissionSensor( - CoordinatorEntity[TransmissionDataUpdateCoordinator], SensorEntity -): +class TransmissionSensor(TransmissionEntity, SensorEntity): """A base class for all Transmission sensors.""" entity_description: TransmissionSensorEntityDescription - _attr_has_entity_name = True - - def __init__( - self, - coordinator: TransmissionDataUpdateCoordinator, - entity_description: TransmissionSensorEntityDescription, - ) -> None: - """Initialize the sensor.""" - super().__init__(coordinator) - self.entity_description = entity_description - self._attr_unique_id = ( - f"{coordinator.config_entry.entry_id}-{entity_description.key}" - ) - self._attr_device_info = DeviceInfo( - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, coordinator.config_entry.entry_id)}, - manufacturer="Transmission", - ) @property def native_value(self) -> StateType: diff --git a/homeassistant/components/transmission/switch.py b/homeassistant/components/transmission/switch.py index 9ca8a197344..79141ef0e5f 100644 --- a/homeassistant/components/transmission/switch.py +++ b/homeassistant/components/transmission/switch.py @@ -6,12 +6,10 @@ from typing import Any from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription from homeassistant.core import HomeAssistant -from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback -from homeassistant.helpers.update_coordinator import CoordinatorEntity -from .const import DOMAIN from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator +from .entity import TransmissionEntity @dataclass(frozen=True, kw_only=True) @@ -55,30 +53,10 @@ async def async_setup_entry( ) -class TransmissionSwitch( - CoordinatorEntity[TransmissionDataUpdateCoordinator], SwitchEntity -): +class TransmissionSwitch(TransmissionEntity, SwitchEntity): """Representation of a Transmission switch.""" entity_description: TransmissionSwitchEntityDescription - _attr_has_entity_name = True - - def __init__( - self, - coordinator: TransmissionDataUpdateCoordinator, - entity_description: TransmissionSwitchEntityDescription, - ) -> None: - """Initialize the Transmission switch.""" - super().__init__(coordinator) - self.entity_description = entity_description - self._attr_unique_id = ( - f"{coordinator.config_entry.entry_id}-{entity_description.key}" - ) - self._attr_device_info = DeviceInfo( - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, coordinator.config_entry.entry_id)}, - manufacturer="Transmission", - ) @property def is_on(self) -> bool: