From 129c9e42f11e935eff6a3d464b4a1cb7dc06b816 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Mon, 21 Mar 2022 15:29:11 +0100 Subject: [PATCH] Update coordinator typing (7) [w-z] (#68467) --- homeassistant/components/wallbox/__init__.py | 4 +--- homeassistant/components/wallbox/number.py | 1 - homeassistant/components/wallbox/sensor.py | 1 - homeassistant/components/wemo/entity.py | 4 +--- homeassistant/components/wled/models.py | 4 +--- homeassistant/components/xbox/base_sensor.py | 2 +- homeassistant/components/xbox/media_player.py | 2 +- homeassistant/components/xbox/remote.py | 2 +- homeassistant/components/xiaomi_miio/device.py | 10 ++++++++-- homeassistant/components/xiaomi_miio/vacuum.py | 14 ++++++++++---- .../yale_smart_alarm/alarm_control_panel.py | 2 -- .../components/yale_smart_alarm/entity.py | 8 ++------ .../components/yamaha_musiccast/__init__.py | 4 +--- 13 files changed, 27 insertions(+), 31 deletions(-) diff --git a/homeassistant/components/wallbox/__init__.py b/homeassistant/components/wallbox/__init__.py index f1ce91a5bdf..2a3da958cb9 100644 --- a/homeassistant/components/wallbox/__init__.py +++ b/homeassistant/components/wallbox/__init__.py @@ -148,11 +148,9 @@ class InvalidAuth(HomeAssistantError): """Error to indicate there is invalid auth.""" -class WallboxEntity(CoordinatorEntity): +class WallboxEntity(CoordinatorEntity[WallboxCoordinator]): """Defines a base Wallbox entity.""" - coordinator: WallboxCoordinator - @property def device_info(self) -> DeviceInfo: """Return device information about this Wallbox device.""" diff --git a/homeassistant/components/wallbox/number.py b/homeassistant/components/wallbox/number.py index 2bea3b1ef70..5822e7d45d9 100644 --- a/homeassistant/components/wallbox/number.py +++ b/homeassistant/components/wallbox/number.py @@ -59,7 +59,6 @@ class WallboxNumber(WallboxEntity, NumberEntity): """Representation of the Wallbox portal.""" entity_description: WallboxNumberEntityDescription - coordinator: WallboxCoordinator def __init__( self, diff --git a/homeassistant/components/wallbox/sensor.py b/homeassistant/components/wallbox/sensor.py index d19ea7347ca..57f2176febb 100644 --- a/homeassistant/components/wallbox/sensor.py +++ b/homeassistant/components/wallbox/sensor.py @@ -152,7 +152,6 @@ class WallboxSensor(WallboxEntity, SensorEntity): """Representation of the Wallbox portal.""" entity_description: WallboxSensorEntityDescription - coordinator: WallboxCoordinator def __init__( self, diff --git a/homeassistant/components/wemo/entity.py b/homeassistant/components/wemo/entity.py index 9884b5b340c..6d94e203932 100644 --- a/homeassistant/components/wemo/entity.py +++ b/homeassistant/components/wemo/entity.py @@ -16,11 +16,9 @@ from .wemo_device import DeviceCoordinator _LOGGER = logging.getLogger(__name__) -class WemoEntity(CoordinatorEntity): +class WemoEntity(CoordinatorEntity[DeviceCoordinator]): """Common methods for Wemo entities.""" - coordinator: DeviceCoordinator # Override CoordinatorEntity.coordinator type. - # Most pyWeMo devices are associated with a single Home Assistant entity. When # that is not the case, name_suffix & unique_id_suffix can be used to provide # names and unique ids for additional Home Assistant entities. diff --git a/homeassistant/components/wled/models.py b/homeassistant/components/wled/models.py index c6f10daeff4..b5fc0855e04 100644 --- a/homeassistant/components/wled/models.py +++ b/homeassistant/components/wled/models.py @@ -7,11 +7,9 @@ from .const import DOMAIN from .coordinator import WLEDDataUpdateCoordinator -class WLEDEntity(CoordinatorEntity): +class WLEDEntity(CoordinatorEntity[WLEDDataUpdateCoordinator]): """Defines a base WLED entity.""" - coordinator: WLEDDataUpdateCoordinator - @property def device_info(self) -> DeviceInfo: """Return device information about this WLED device.""" diff --git a/homeassistant/components/xbox/base_sensor.py b/homeassistant/components/xbox/base_sensor.py index 100685b6c34..024feb294b5 100644 --- a/homeassistant/components/xbox/base_sensor.py +++ b/homeassistant/components/xbox/base_sensor.py @@ -11,7 +11,7 @@ from . import PresenceData, XboxUpdateCoordinator from .const import DOMAIN -class XboxBaseSensorEntity(CoordinatorEntity): +class XboxBaseSensorEntity(CoordinatorEntity[XboxUpdateCoordinator]): """Base Sensor for the Xbox Integration.""" def __init__( diff --git a/homeassistant/components/xbox/media_player.py b/homeassistant/components/xbox/media_player.py index 4cc7ebda545..edf29c164ee 100644 --- a/homeassistant/components/xbox/media_player.py +++ b/homeassistant/components/xbox/media_player.py @@ -78,7 +78,7 @@ async def async_setup_entry( ) -class XboxMediaPlayer(CoordinatorEntity, MediaPlayerEntity): +class XboxMediaPlayer(CoordinatorEntity[XboxUpdateCoordinator], MediaPlayerEntity): """Representation of an Xbox Media Player.""" def __init__( diff --git a/homeassistant/components/xbox/remote.py b/homeassistant/components/xbox/remote.py index 897836e5c42..75595483608 100644 --- a/homeassistant/components/xbox/remote.py +++ b/homeassistant/components/xbox/remote.py @@ -45,7 +45,7 @@ async def async_setup_entry( ) -class XboxRemote(CoordinatorEntity, RemoteEntity): +class XboxRemote(CoordinatorEntity[XboxUpdateCoordinator], RemoteEntity): """Representation of an Xbox remote.""" def __init__( diff --git a/homeassistant/components/xiaomi_miio/device.py b/homeassistant/components/xiaomi_miio/device.py index 5a186c23570..88f90ada919 100644 --- a/homeassistant/components/xiaomi_miio/device.py +++ b/homeassistant/components/xiaomi_miio/device.py @@ -3,6 +3,7 @@ import datetime from enum import Enum from functools import partial import logging +from typing import Any, TypeVar from construct.core import ChecksumError from miio import Device, DeviceException @@ -10,12 +11,17 @@ from miio import Device, DeviceException from homeassistant.const import ATTR_CONNECTIONS from homeassistant.helpers import device_registry as dr from homeassistant.helpers.entity import DeviceInfo, Entity -from homeassistant.helpers.update_coordinator import CoordinatorEntity +from homeassistant.helpers.update_coordinator import ( + CoordinatorEntity, + DataUpdateCoordinator, +) from .const import CONF_MAC, CONF_MODEL, DOMAIN, AuthException, SetupException _LOGGER = logging.getLogger(__name__) +_T = TypeVar("_T", bound=DataUpdateCoordinator[Any]) + class ConnectXiaomiDevice: """Class to async connect to a Xiaomi Device.""" @@ -101,7 +107,7 @@ class XiaomiMiioEntity(Entity): return device_info -class XiaomiCoordinatedMiioEntity(CoordinatorEntity): +class XiaomiCoordinatedMiioEntity(CoordinatorEntity[_T]): """Representation of a base a coordinated Xiaomi Miio Entity.""" def __init__(self, name, device, entry, unique_id, coordinator): diff --git a/homeassistant/components/xiaomi_miio/vacuum.py b/homeassistant/components/xiaomi_miio/vacuum.py index a6fa6c399eb..555a352a6ce 100644 --- a/homeassistant/components/xiaomi_miio/vacuum.py +++ b/homeassistant/components/xiaomi_miio/vacuum.py @@ -203,13 +203,19 @@ async def async_setup_entry( async_add_entities(entities, update_before_add=True) -class MiroboVacuum(XiaomiCoordinatedMiioEntity, StateVacuumEntity): +class MiroboVacuum( + XiaomiCoordinatedMiioEntity[DataUpdateCoordinator[VacuumCoordinatorData]], + StateVacuumEntity, +): """Representation of a Xiaomi Vacuum cleaner robot.""" - coordinator: DataUpdateCoordinator[VacuumCoordinatorData] - def __init__( - self, name, device, entry, unique_id, coordinator: DataUpdateCoordinator + self, + name, + device, + entry, + unique_id, + coordinator: DataUpdateCoordinator[VacuumCoordinatorData], ): """Initialize the Xiaomi vacuum cleaner robot handler.""" super().__init__(name, device, entry, unique_id, coordinator) diff --git a/homeassistant/components/yale_smart_alarm/alarm_control_panel.py b/homeassistant/components/yale_smart_alarm/alarm_control_panel.py index 27d0ed8b631..7a74b675f0b 100644 --- a/homeassistant/components/yale_smart_alarm/alarm_control_panel.py +++ b/homeassistant/components/yale_smart_alarm/alarm_control_panel.py @@ -81,8 +81,6 @@ async def async_setup_entry( class YaleAlarmDevice(YaleAlarmEntity, AlarmControlPanelEntity): """Represent a Yale Smart Alarm.""" - coordinator: YaleDataUpdateCoordinator - _attr_code_arm_required = False _attr_supported_features = SUPPORT_ALARM_ARM_HOME | SUPPORT_ALARM_ARM_AWAY diff --git a/homeassistant/components/yale_smart_alarm/entity.py b/homeassistant/components/yale_smart_alarm/entity.py index 065d1f4fecb..b9a832f88e8 100644 --- a/homeassistant/components/yale_smart_alarm/entity.py +++ b/homeassistant/components/yale_smart_alarm/entity.py @@ -9,11 +9,9 @@ from .const import DOMAIN, MANUFACTURER, MODEL from .coordinator import YaleDataUpdateCoordinator -class YaleEntity(CoordinatorEntity, Entity): +class YaleEntity(CoordinatorEntity[YaleDataUpdateCoordinator], Entity): """Base implementation for Yale device.""" - coordinator: YaleDataUpdateCoordinator - def __init__(self, coordinator: YaleDataUpdateCoordinator, data: dict) -> None: """Initialize an Yale device.""" super().__init__(coordinator) @@ -28,11 +26,9 @@ class YaleEntity(CoordinatorEntity, Entity): ) -class YaleAlarmEntity(CoordinatorEntity, Entity): +class YaleAlarmEntity(CoordinatorEntity[YaleDataUpdateCoordinator], Entity): """Base implementation for Yale Alarm device.""" - coordinator: YaleDataUpdateCoordinator - def __init__(self, coordinator: YaleDataUpdateCoordinator) -> None: """Initialize an Yale device.""" super().__init__(coordinator) diff --git a/homeassistant/components/yamaha_musiccast/__init__.py b/homeassistant/components/yamaha_musiccast/__init__.py index d984aaceb96..e28712cdf21 100644 --- a/homeassistant/components/yamaha_musiccast/__init__.py +++ b/homeassistant/components/yamaha_musiccast/__init__.py @@ -120,11 +120,9 @@ class MusicCastDataUpdateCoordinator(DataUpdateCoordinator[MusicCastData]): return self.musiccast.data -class MusicCastEntity(CoordinatorEntity): +class MusicCastEntity(CoordinatorEntity[MusicCastDataUpdateCoordinator]): """Defines a base MusicCast entity.""" - coordinator: MusicCastDataUpdateCoordinator - def __init__( self, *,