Fix and enable type checks in Rituals Perfume Genie (#49947)

This commit is contained in:
Milan Meulemans 2021-05-04 14:47:17 +02:00 committed by GitHub
parent c063f14c24
commit a0feee083c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 35 additions and 20 deletions

View file

@ -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):

View file

@ -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)

View file

@ -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,

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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.*",