From a0feee083cc17dfc47e194af146f726e89999166 Mon Sep 17 00:00:00 2001 From: Milan Meulemans Date: Tue, 4 May 2021 14:47:17 +0200 Subject: [PATCH] Fix and enable type checks in Rituals Perfume Genie (#49947) --- .../rituals_perfume_genie/__init__.py | 4 ++-- .../rituals_perfume_genie/binary_sensor.py | 6 +++-- .../rituals_perfume_genie/entity.py | 13 +++++++---- .../rituals_perfume_genie/sensor.py | 22 ++++++++++++++----- .../rituals_perfume_genie/switch.py | 6 +++-- mypy.ini | 3 --- script/hassfest/mypy_config.py | 1 - 7 files changed, 35 insertions(+), 20 deletions(-) diff --git a/homeassistant/components/rituals_perfume_genie/__init__.py b/homeassistant/components/rituals_perfume_genie/__init__.py index a06c9acdd7d6..1906478cbd20 100644 --- a/homeassistant/components/rituals_perfume_genie/__init__.py +++ b/homeassistant/components/rituals_perfume_genie/__init__.py @@ -41,7 +41,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry): for device in account_devices: hublot = device.hub_data[HUBLOT] - coordinator = RitualsPerufmeGenieDataUpdateCoordinator(hass, device) + coordinator = RitualsDataUpdateCoordinator(hass, device) await coordinator.async_refresh() hass.data[DOMAIN][entry.entry_id][DEVICES][hublot] = device @@ -61,7 +61,7 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry): return unload_ok -class RitualsPerufmeGenieDataUpdateCoordinator(DataUpdateCoordinator): +class RitualsDataUpdateCoordinator(DataUpdateCoordinator): """Class to manage fetching Rituals Perufme Genie device data from single endpoint.""" def __init__(self, hass: HomeAssistant, device: Diffuser): diff --git a/homeassistant/components/rituals_perfume_genie/binary_sensor.py b/homeassistant/components/rituals_perfume_genie/binary_sensor.py index a73595dfdcf7..ffeceb079bb5 100644 --- a/homeassistant/components/rituals_perfume_genie/binary_sensor.py +++ b/homeassistant/components/rituals_perfume_genie/binary_sensor.py @@ -11,8 +11,8 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant -from homeassistant.helpers.update_coordinator import CoordinatorEntity +from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN from .entity import DiffuserEntity @@ -38,7 +38,9 @@ async def async_setup_entry( class DiffuserBatteryChargingBinarySensor(DiffuserEntity, BinarySensorEntity): """Representation of a diffuser battery charging binary sensor.""" - def __init__(self, diffuser: Diffuser, coordinator: CoordinatorEntity) -> None: + def __init__( + self, diffuser: Diffuser, coordinator: RitualsDataUpdateCoordinator + ) -> None: """Initialize the battery charging binary sensor.""" super().__init__(diffuser, coordinator, CHARGING_SUFFIX) diff --git a/homeassistant/components/rituals_perfume_genie/entity.py b/homeassistant/components/rituals_perfume_genie/entity.py index 1253a38e9622..1c1f3912c68b 100644 --- a/homeassistant/components/rituals_perfume_genie/entity.py +++ b/homeassistant/components/rituals_perfume_genie/entity.py @@ -1,12 +1,12 @@ """Base class for Rituals Perfume Genie diffuser entity.""" from __future__ import annotations -from typing import Any - from pyrituals import Diffuser +from homeassistant.helpers.entity import DeviceInfo from homeassistant.helpers.update_coordinator import CoordinatorEntity +from . import RitualsDataUpdateCoordinator from .const import ATTRIBUTES, DOMAIN, HUBLOT, SENSORS MANUFACTURER = "Rituals Cosmetics" @@ -23,8 +23,13 @@ AVAILABLE_STATE = 1 class DiffuserEntity(CoordinatorEntity): """Representation of a diffuser entity.""" + coordinator: RitualsDataUpdateCoordinator + def __init__( - self, diffuser: Diffuser, coordinator: CoordinatorEntity, entity_suffix: str + self, + diffuser: Diffuser, + coordinator: RitualsDataUpdateCoordinator, + entity_suffix: str, ) -> None: """Init from config, hookup diffuser and coordinator.""" super().__init__(coordinator) @@ -49,7 +54,7 @@ class DiffuserEntity(CoordinatorEntity): return super().available and self._diffuser.hub_data[STATUS] == AVAILABLE_STATE @property - def device_info(self) -> dict[str, Any]: + def device_info(self) -> DeviceInfo: """Return information about the device.""" return { "name": self._hubname, diff --git a/homeassistant/components/rituals_perfume_genie/sensor.py b/homeassistant/components/rituals_perfume_genie/sensor.py index 1c12b305d48c..5982678e9c6d 100644 --- a/homeassistant/components/rituals_perfume_genie/sensor.py +++ b/homeassistant/components/rituals_perfume_genie/sensor.py @@ -1,4 +1,6 @@ """Support for Rituals Perfume Genie sensors.""" +from __future__ import annotations + from typing import Callable from pyrituals import Diffuser @@ -10,8 +12,8 @@ from homeassistant.const import ( PERCENTAGE, ) from homeassistant.core import HomeAssistant -from homeassistant.helpers.update_coordinator import CoordinatorEntity +from . import RitualsDataUpdateCoordinator from .const import COORDINATORS, DEVICES, DOMAIN, ID, SENSORS from .entity import DiffuserEntity @@ -38,7 +40,7 @@ async def async_setup_entry( """Set up the diffuser sensors.""" diffusers = hass.data[DOMAIN][config_entry.entry_id][DEVICES] coordinators = hass.data[DOMAIN][config_entry.entry_id][COORDINATORS] - entities = [] + entities: list[DiffuserEntity] = [] for hublot, diffuser in diffusers.items(): coordinator = coordinators[hublot] entities.append(DiffuserPerfumeSensor(diffuser, coordinator)) @@ -53,7 +55,9 @@ async def async_setup_entry( class DiffuserPerfumeSensor(DiffuserEntity): """Representation of a diffuser perfume sensor.""" - def __init__(self, diffuser: Diffuser, coordinator: CoordinatorEntity) -> None: + def __init__( + self, diffuser: Diffuser, coordinator: RitualsDataUpdateCoordinator + ) -> None: """Initialize the perfume sensor.""" super().__init__(diffuser, coordinator, PERFUME_SUFFIX) @@ -73,7 +77,9 @@ class DiffuserPerfumeSensor(DiffuserEntity): class DiffuserFillSensor(DiffuserEntity): """Representation of a diffuser fill sensor.""" - def __init__(self, diffuser: Diffuser, coordinator: CoordinatorEntity) -> None: + def __init__( + self, diffuser: Diffuser, coordinator: RitualsDataUpdateCoordinator + ) -> None: """Initialize the fill sensor.""" super().__init__(diffuser, coordinator, FILL_SUFFIX) @@ -93,7 +99,9 @@ class DiffuserFillSensor(DiffuserEntity): class DiffuserBatterySensor(DiffuserEntity): """Representation of a diffuser battery sensor.""" - def __init__(self, diffuser: Diffuser, coordinator: CoordinatorEntity) -> None: + def __init__( + self, diffuser: Diffuser, coordinator: RitualsDataUpdateCoordinator + ) -> None: """Initialize the battery sensor.""" super().__init__(diffuser, coordinator, BATTERY_SUFFIX) @@ -116,7 +124,9 @@ class DiffuserBatterySensor(DiffuserEntity): class DiffuserWifiSensor(DiffuserEntity): """Representation of a diffuser wifi sensor.""" - def __init__(self, diffuser: Diffuser, coordinator: CoordinatorEntity) -> None: + def __init__( + self, diffuser: Diffuser, coordinator: RitualsDataUpdateCoordinator + ) -> None: """Initialize the wifi sensor.""" super().__init__(diffuser, coordinator, WIFI_SUFFIX) diff --git a/homeassistant/components/rituals_perfume_genie/switch.py b/homeassistant/components/rituals_perfume_genie/switch.py index a564a04c6983..83e392f7badd 100644 --- a/homeassistant/components/rituals_perfume_genie/switch.py +++ b/homeassistant/components/rituals_perfume_genie/switch.py @@ -8,8 +8,8 @@ from pyrituals import Diffuser from homeassistant.components.switch import SwitchEntity from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback -from homeassistant.helpers.update_coordinator import CoordinatorEntity +from . import RitualsDataUpdateCoordinator from .const import ATTRIBUTES, COORDINATORS, DEVICES, DOMAIN from .entity import DiffuserEntity @@ -37,7 +37,9 @@ async def async_setup_entry( class DiffuserSwitch(SwitchEntity, DiffuserEntity): """Representation of a diffuser switch.""" - def __init__(self, diffuser: Diffuser, coordinator: CoordinatorEntity) -> None: + def __init__( + self, diffuser: Diffuser, coordinator: RitualsDataUpdateCoordinator + ) -> None: """Initialize the diffuser switch.""" super().__init__(diffuser, coordinator, "") self._is_on = self._diffuser.is_on diff --git a/mypy.ini b/mypy.ini index 68afb4d97867..948b2de0e116 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1125,9 +1125,6 @@ ignore_errors = true [mypy-homeassistant.components.ring.*] ignore_errors = true -[mypy-homeassistant.components.rituals_perfume_genie.*] -ignore_errors = true - [mypy-homeassistant.components.roku.*] ignore_errors = true diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index 91752c0acdf7..dc4485864f97 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -178,7 +178,6 @@ IGNORED_MODULES: Final[list[str]] = [ "homeassistant.components.recorder.*", "homeassistant.components.reddit.*", "homeassistant.components.ring.*", - "homeassistant.components.rituals_perfume_genie.*", "homeassistant.components.roku.*", "homeassistant.components.rpi_power.*", "homeassistant.components.ruckus_unleashed.*",