Enable types from aiohomekit to be used by mypy for homekit_controller (#65433)

This commit is contained in:
Jc2k
2022-02-03 16:18:03 +00:00
committed by GitHub
parent 6c38a6b569
commit 714a952d73
13 changed files with 200 additions and 90 deletions

View File

@@ -2,7 +2,7 @@
from __future__ import annotations
import logging
from typing import Any
from typing import Any, Final
from aiohomekit.model.characteristics import (
ActivationStateValues,
@@ -16,7 +16,11 @@ from aiohomekit.model.characteristics import (
from aiohomekit.model.services import Service, ServicesTypes
from aiohomekit.utils import clamp_enum_to_char
from homeassistant.components.climate import ClimateEntity
from homeassistant.components.climate import (
DEFAULT_MAX_TEMP,
DEFAULT_MIN_TEMP,
ClimateEntity,
)
from homeassistant.components.climate.const import (
ATTR_HVAC_MODE,
ATTR_TARGET_TEMP_HIGH,
@@ -86,6 +90,8 @@ TARGET_HEATER_COOLER_STATE_HASS_TO_HOMEKIT = {
SWING_MODE_HASS_TO_HOMEKIT = {v: k for k, v in SWING_MODE_HOMEKIT_TO_HASS.items()}
DEFAULT_MIN_STEP: Final = 1.0
async def async_setup_entry(
hass: HomeAssistant,
@@ -185,22 +191,24 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
return None
@property
def target_temperature_step(self) -> float | None:
def target_temperature_step(self) -> float:
"""Return the supported step of target temperature."""
state = self.service.value(CharacteristicsTypes.TARGET_HEATER_COOLER_STATE)
if state == TargetHeaterCoolerStateValues.COOL and self.service.has(
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
):
return self.service[
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
].minStep
return (
self.service[CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD].minStep
or DEFAULT_MIN_STEP
)
if state == TargetHeaterCoolerStateValues.HEAT and self.service.has(
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
):
return self.service[
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
].minStep
return None
return (
self.service[CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD].minStep
or DEFAULT_MIN_STEP
)
return DEFAULT_MIN_STEP
@property
def min_temp(self) -> float:
@@ -209,15 +217,21 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
if state == TargetHeaterCoolerStateValues.COOL and self.service.has(
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
):
return self.service[
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
].minValue
return (
self.service[
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
].minValue
or DEFAULT_MIN_TEMP
)
if state == TargetHeaterCoolerStateValues.HEAT and self.service.has(
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
):
return self.service[
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
].minValue
return (
self.service[
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
].minValue
or DEFAULT_MIN_TEMP
)
return super().min_temp
@property
@@ -227,15 +241,21 @@ class HomeKitHeaterCoolerEntity(HomeKitEntity, ClimateEntity):
if state == TargetHeaterCoolerStateValues.COOL and self.service.has(
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
):
return self.service[
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
].maxValue
return (
self.service[
CharacteristicsTypes.TEMPERATURE_COOLING_THRESHOLD
].maxValue
or DEFAULT_MAX_TEMP
)
if state == TargetHeaterCoolerStateValues.HEAT and self.service.has(
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
):
return self.service[
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
].maxValue
return (
self.service[
CharacteristicsTypes.TEMPERATURE_HEATING_THRESHOLD
].maxValue
or DEFAULT_MAX_TEMP
)
return super().max_temp
@property
@@ -345,9 +365,9 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET,
]
async def async_set_temperature(self, **kwargs) -> None:
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperature."""
chars = {}
chars: dict[str, Any] = {}
value = self.service.value(CharacteristicsTypes.HEATING_COOLING_TARGET)
mode = MODE_HOMEKIT_TO_HASS[value]
@@ -499,7 +519,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET
].minValue
if min_humidity is not None:
return min_humidity
return int(min_humidity)
return super().min_humidity
@property
@@ -509,7 +529,7 @@ class HomeKitClimateEntity(HomeKitEntity, ClimateEntity):
CharacteristicsTypes.RELATIVE_HUMIDITY_TARGET
].maxValue
if max_humidity is not None:
return max_humidity
return int(max_humidity)
return super().max_humidity
@property