Improve typing of deCONZ binary_sensor platform (#70003)

This commit is contained in:
Robert Svensson 2022-04-13 22:08:20 +02:00 committed by GitHub
parent d704d4f853
commit 5258022e45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -11,7 +11,7 @@ from pydeconz.sensor import (
GenericFlag,
OpenClose,
Presence,
SensorBase as PydeconzSensor,
SensorResources,
Vibration,
Water,
)
@ -55,7 +55,7 @@ class DeconzBinarySensorDescriptionMixin:
suffix: str
update_key: str
value_fn: Callable[[PydeconzSensor], bool | None]
value_fn: Callable[[SensorResources], bool | None]
@dataclass
@ -70,7 +70,7 @@ ENTITY_DESCRIPTIONS = {
Alarm: [
DeconzBinarySensorDescription(
key="alarm",
value_fn=lambda device: device.alarm, # type: ignore[no-any-return]
value_fn=lambda device: device.alarm if isinstance(device, Alarm) else None,
suffix="",
update_key="alarm",
device_class=BinarySensorDeviceClass.SAFETY,
@ -79,7 +79,9 @@ ENTITY_DESCRIPTIONS = {
CarbonMonoxide: [
DeconzBinarySensorDescription(
key="carbon_monoxide",
value_fn=lambda device: device.carbon_monoxide, # type: ignore[no-any-return]
value_fn=lambda device: device.carbon_monoxide
if isinstance(device, CarbonMonoxide)
else None,
suffix="",
update_key="carbonmonoxide",
device_class=BinarySensorDeviceClass.CO,
@ -88,14 +90,16 @@ ENTITY_DESCRIPTIONS = {
Fire: [
DeconzBinarySensorDescription(
key="fire",
value_fn=lambda device: device.fire, # type: ignore[no-any-return]
value_fn=lambda device: device.fire if isinstance(device, Fire) else None,
suffix="",
update_key="fire",
device_class=BinarySensorDeviceClass.SMOKE,
),
DeconzBinarySensorDescription(
key="in_test_mode",
value_fn=lambda device: device.in_test_mode, # type: ignore[no-any-return]
value_fn=lambda device: device.in_test_mode
if isinstance(device, Fire)
else None,
suffix="Test Mode",
update_key="test",
device_class=BinarySensorDeviceClass.SMOKE,
@ -105,7 +109,9 @@ ENTITY_DESCRIPTIONS = {
GenericFlag: [
DeconzBinarySensorDescription(
key="flag",
value_fn=lambda device: device.flag, # type: ignore[no-any-return]
value_fn=lambda device: device.flag
if isinstance(device, GenericFlag)
else None,
suffix="",
update_key="flag",
)
@ -113,7 +119,9 @@ ENTITY_DESCRIPTIONS = {
OpenClose: [
DeconzBinarySensorDescription(
key="open",
value_fn=lambda device: device.open, # type: ignore[no-any-return]
value_fn=lambda device: device.open
if isinstance(device, OpenClose)
else None,
suffix="",
update_key="open",
device_class=BinarySensorDeviceClass.OPENING,
@ -122,7 +130,9 @@ ENTITY_DESCRIPTIONS = {
Presence: [
DeconzBinarySensorDescription(
key="presence",
value_fn=lambda device: device.presence, # type: ignore[no-any-return]
value_fn=lambda device: device.presence
if isinstance(device, Presence)
else None,
suffix="",
update_key="presence",
device_class=BinarySensorDeviceClass.MOTION,
@ -131,7 +141,9 @@ ENTITY_DESCRIPTIONS = {
Vibration: [
DeconzBinarySensorDescription(
key="vibration",
value_fn=lambda device: device.vibration, # type: ignore[no-any-return]
value_fn=lambda device: device.vibration
if isinstance(device, Vibration)
else None,
suffix="",
update_key="vibration",
device_class=BinarySensorDeviceClass.VIBRATION,
@ -140,7 +152,7 @@ ENTITY_DESCRIPTIONS = {
Water: [
DeconzBinarySensorDescription(
key="water",
value_fn=lambda device: device.water, # type: ignore[no-any-return]
value_fn=lambda device: device.water if isinstance(device, Water) else None,
suffix="",
update_key="water",
device_class=BinarySensorDeviceClass.MOISTURE,
@ -178,7 +190,7 @@ async def async_setup_entry(
gateway.entities[DOMAIN] = set()
@callback
def async_add_sensor(sensors: list[PydeconzSensor] | None = None) -> None:
def async_add_sensor(sensors: list[SensorResources] | None = None) -> None:
"""Add binary sensor from deCONZ."""
entities: list[DeconzBinarySensor] = []
@ -225,12 +237,12 @@ class DeconzBinarySensor(DeconzDevice, BinarySensorEntity):
"""Representation of a deCONZ binary sensor."""
TYPE = DOMAIN
_device: PydeconzSensor
_device: SensorResources
entity_description: DeconzBinarySensorDescription
def __init__(
self,
device: PydeconzSensor,
device: SensorResources,
gateway: DeconzGateway,
description: DeconzBinarySensorDescription,
) -> None: