Skip to content

Commit 7f84363

Browse files
Transmission create a common base entity (home-assistant#155213)
1 parent 0980c3a commit 7f84363

File tree

3 files changed

+34
-48
lines changed

3 files changed

+34
-48
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"""Base class for Transmission entities."""
2+
3+
from homeassistant.helpers.device_registry import DeviceInfo
4+
from homeassistant.helpers.entity import EntityDescription
5+
from homeassistant.helpers.update_coordinator import CoordinatorEntity
6+
7+
from .const import DOMAIN
8+
from .coordinator import TransmissionDataUpdateCoordinator
9+
10+
11+
class TransmissionEntity(CoordinatorEntity[TransmissionDataUpdateCoordinator]):
12+
"""Defines a base Transmission entity."""
13+
14+
_attr_has_entity_name = True
15+
16+
def __init__(
17+
self,
18+
coordinator: TransmissionDataUpdateCoordinator,
19+
entity_description: EntityDescription,
20+
) -> None:
21+
"""Initialize Transmission entity."""
22+
super().__init__(coordinator)
23+
self.entity_description = entity_description
24+
self._attr_unique_id = (
25+
f"{coordinator.config_entry.entry_id}-{entity_description.key}"
26+
)
27+
self._attr_device_info = DeviceInfo(
28+
identifiers={(DOMAIN, coordinator.config_entry.entry_id)},
29+
manufacturer="Transmission",
30+
)

homeassistant/components/transmission/sensor.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,18 @@
1616
)
1717
from homeassistant.const import STATE_IDLE, UnitOfDataRate
1818
from homeassistant.core import HomeAssistant
19-
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
2019
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
2120
from homeassistant.helpers.typing import StateType
22-
from homeassistant.helpers.update_coordinator import CoordinatorEntity
2321

2422
from .const import (
25-
DOMAIN,
2623
STATE_ATTR_TORRENT_INFO,
2724
STATE_DOWNLOADING,
2825
STATE_SEEDING,
2926
STATE_UP_DOWN,
3027
SUPPORTED_ORDER_MODES,
3128
)
3229
from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator
30+
from .entity import TransmissionEntity
3331

3432
MODES: dict[str, list[str] | None] = {
3533
"started_torrents": ["downloading"],
@@ -140,30 +138,10 @@ async def async_setup_entry(
140138
)
141139

142140

143-
class TransmissionSensor(
144-
CoordinatorEntity[TransmissionDataUpdateCoordinator], SensorEntity
145-
):
141+
class TransmissionSensor(TransmissionEntity, SensorEntity):
146142
"""A base class for all Transmission sensors."""
147143

148144
entity_description: TransmissionSensorEntityDescription
149-
_attr_has_entity_name = True
150-
151-
def __init__(
152-
self,
153-
coordinator: TransmissionDataUpdateCoordinator,
154-
entity_description: TransmissionSensorEntityDescription,
155-
) -> None:
156-
"""Initialize the sensor."""
157-
super().__init__(coordinator)
158-
self.entity_description = entity_description
159-
self._attr_unique_id = (
160-
f"{coordinator.config_entry.entry_id}-{entity_description.key}"
161-
)
162-
self._attr_device_info = DeviceInfo(
163-
entry_type=DeviceEntryType.SERVICE,
164-
identifiers={(DOMAIN, coordinator.config_entry.entry_id)},
165-
manufacturer="Transmission",
166-
)
167145

168146
@property
169147
def native_value(self) -> StateType:

homeassistant/components/transmission/switch.py

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66

77
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
88
from homeassistant.core import HomeAssistant
9-
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
109
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
11-
from homeassistant.helpers.update_coordinator import CoordinatorEntity
1210

13-
from .const import DOMAIN
1411
from .coordinator import TransmissionConfigEntry, TransmissionDataUpdateCoordinator
12+
from .entity import TransmissionEntity
1513

1614

1715
@dataclass(frozen=True, kw_only=True)
@@ -55,30 +53,10 @@ async def async_setup_entry(
5553
)
5654

5755

58-
class TransmissionSwitch(
59-
CoordinatorEntity[TransmissionDataUpdateCoordinator], SwitchEntity
60-
):
56+
class TransmissionSwitch(TransmissionEntity, SwitchEntity):
6157
"""Representation of a Transmission switch."""
6258

6359
entity_description: TransmissionSwitchEntityDescription
64-
_attr_has_entity_name = True
65-
66-
def __init__(
67-
self,
68-
coordinator: TransmissionDataUpdateCoordinator,
69-
entity_description: TransmissionSwitchEntityDescription,
70-
) -> None:
71-
"""Initialize the Transmission switch."""
72-
super().__init__(coordinator)
73-
self.entity_description = entity_description
74-
self._attr_unique_id = (
75-
f"{coordinator.config_entry.entry_id}-{entity_description.key}"
76-
)
77-
self._attr_device_info = DeviceInfo(
78-
entry_type=DeviceEntryType.SERVICE,
79-
identifiers={(DOMAIN, coordinator.config_entry.entry_id)},
80-
manufacturer="Transmission",
81-
)
8260

8361
@property
8462
def is_on(self) -> bool:

0 commit comments

Comments
 (0)