From e4b43680e15aaf58f01142e11ee8ee5732d3bfdb Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Mon, 11 Mar 2024 11:18:01 +0100 Subject: [PATCH] Remove entity description mixin in Starlink (#112943) --- homeassistant/components/starlink/binary_sensor.py | 13 +++---------- homeassistant/components/starlink/button.py | 13 +++---------- homeassistant/components/starlink/device_tracker.py | 13 +++---------- homeassistant/components/starlink/sensor.py | 13 +++---------- homeassistant/components/starlink/switch.py | 13 +++---------- 5 files changed, 15 insertions(+), 50 deletions(-) diff --git a/homeassistant/components/starlink/binary_sensor.py b/homeassistant/components/starlink/binary_sensor.py index d346c19fec4..e48d28dcc44 100644 --- a/homeassistant/components/starlink/binary_sensor.py +++ b/homeassistant/components/starlink/binary_sensor.py @@ -32,20 +32,13 @@ async def async_setup_entry( ) -@dataclass(frozen=True) -class StarlinkBinarySensorEntityDescriptionMixin: - """Mixin for required keys.""" +@dataclass(frozen=True, kw_only=True) +class StarlinkBinarySensorEntityDescription(BinarySensorEntityDescription): + """Describes a Starlink binary sensor entity.""" value_fn: Callable[[StarlinkData], bool | None] -@dataclass(frozen=True) -class StarlinkBinarySensorEntityDescription( - BinarySensorEntityDescription, StarlinkBinarySensorEntityDescriptionMixin -): - """Describes a Starlink binary sensor entity.""" - - class StarlinkBinarySensorEntity(StarlinkEntity, BinarySensorEntity): """A BinarySensorEntity for Starlink devices. Handles creating unique IDs.""" diff --git a/homeassistant/components/starlink/button.py b/homeassistant/components/starlink/button.py index daf3122a00d..f8f18763d30 100644 --- a/homeassistant/components/starlink/button.py +++ b/homeassistant/components/starlink/button.py @@ -31,20 +31,13 @@ async def async_setup_entry( ) -@dataclass(frozen=True) -class StarlinkButtonEntityDescriptionMixin: - """Mixin for required keys.""" +@dataclass(frozen=True, kw_only=True) +class StarlinkButtonEntityDescription(ButtonEntityDescription): + """Describes a Starlink button entity.""" press_fn: Callable[[StarlinkUpdateCoordinator], Awaitable[None]] -@dataclass(frozen=True) -class StarlinkButtonEntityDescription( - ButtonEntityDescription, StarlinkButtonEntityDescriptionMixin -): - """Describes a Starlink button entity.""" - - class StarlinkButtonEntity(StarlinkEntity, ButtonEntity): """A ButtonEntity for Starlink devices. Handles creating unique IDs.""" diff --git a/homeassistant/components/starlink/device_tracker.py b/homeassistant/components/starlink/device_tracker.py index f260a7d1c32..84c0a4cac24 100644 --- a/homeassistant/components/starlink/device_tracker.py +++ b/homeassistant/components/starlink/device_tracker.py @@ -26,21 +26,14 @@ async def async_setup_entry( ) -@dataclass(frozen=True) -class StarlinkDeviceTrackerEntityDescriptionMixin: - """Describes a Starlink device tracker.""" +@dataclass(frozen=True, kw_only=True) +class StarlinkDeviceTrackerEntityDescription(EntityDescription): + """Describes a Starlink button entity.""" latitude_fn: Callable[[StarlinkData], float] longitude_fn: Callable[[StarlinkData], float] -@dataclass(frozen=True) -class StarlinkDeviceTrackerEntityDescription( - EntityDescription, StarlinkDeviceTrackerEntityDescriptionMixin -): - """Describes a Starlink button entity.""" - - DEVICE_TRACKERS = [ StarlinkDeviceTrackerEntityDescription( key="device_location", diff --git a/homeassistant/components/starlink/sensor.py b/homeassistant/components/starlink/sensor.py index 3f3b855ca63..21f2400022c 100644 --- a/homeassistant/components/starlink/sensor.py +++ b/homeassistant/components/starlink/sensor.py @@ -41,20 +41,13 @@ async def async_setup_entry( ) -@dataclass(frozen=True) -class StarlinkSensorEntityDescriptionMixin: - """Mixin for required keys.""" +@dataclass(frozen=True, kw_only=True) +class StarlinkSensorEntityDescription(SensorEntityDescription): + """Describes a Starlink sensor entity.""" value_fn: Callable[[StarlinkData], datetime | StateType] -@dataclass(frozen=True) -class StarlinkSensorEntityDescription( - SensorEntityDescription, StarlinkSensorEntityDescriptionMixin -): - """Describes a Starlink sensor entity.""" - - class StarlinkSensorEntity(StarlinkEntity, SensorEntity): """A SensorEntity for Starlink devices. Handles creating unique IDs.""" diff --git a/homeassistant/components/starlink/switch.py b/homeassistant/components/starlink/switch.py index 551afa8e73c..af773a39f79 100644 --- a/homeassistant/components/starlink/switch.py +++ b/homeassistant/components/starlink/switch.py @@ -31,22 +31,15 @@ async def async_setup_entry( ) -@dataclass(frozen=True) -class StarlinkSwitchEntityDescriptionMixin: - """Mixin for required keys.""" +@dataclass(frozen=True, kw_only=True) +class StarlinkSwitchEntityDescription(SwitchEntityDescription): + """Describes a Starlink switch entity.""" value_fn: Callable[[StarlinkData], bool | None] turn_on_fn: Callable[[StarlinkUpdateCoordinator], Awaitable[None]] turn_off_fn: Callable[[StarlinkUpdateCoordinator], Awaitable[None]] -@dataclass(frozen=True) -class StarlinkSwitchEntityDescription( - SwitchEntityDescription, StarlinkSwitchEntityDescriptionMixin -): - """Describes a Starlink switch entity.""" - - class StarlinkSwitchEntity(StarlinkEntity, SwitchEntity): """A SwitchEntity for Starlink devices. Handles creating unique IDs."""