Enable basic type checking for fan (#52471)

This commit is contained in:
Erik Montnemery 2021-07-06 18:21:00 +02:00 committed by GitHub
parent 8fce858a76
commit 6c8de16fbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 11 deletions

View File

@ -246,7 +246,7 @@ class FanEntity(ToggleEntity):
await self.async_turn_off() await self.async_turn_off()
return return
if speed in self.preset_modes: if self.preset_modes and speed in self.preset_modes:
if not hasattr(self.async_set_preset_mode, _FAN_NATIVE): if not hasattr(self.async_set_preset_mode, _FAN_NATIVE):
await self.async_set_preset_mode(speed) await self.async_set_preset_mode(speed)
return return
@ -375,7 +375,7 @@ class FanEntity(ToggleEntity):
_LOGGER.warning( _LOGGER.warning(
"Calling fan.turn_on with the speed argument is deprecated, use percentage or preset_mode instead" "Calling fan.turn_on with the speed argument is deprecated, use percentage or preset_mode instead"
) )
if speed in self.preset_modes: if self.preset_modes and speed in self.preset_modes:
preset_mode = speed preset_mode = speed
percentage = None percentage = None
else: else:
@ -463,9 +463,13 @@ class FanEntity(ToggleEntity):
@property @property
def percentage(self) -> int | None: def percentage(self) -> int | None:
"""Return the current speed as a percentage.""" """Return the current speed as a percentage."""
if not self._implemented_preset_mode and self.speed in self.preset_modes: if (
not self._implemented_preset_mode
and self.preset_modes
and self.speed in self.preset_modes
):
return None return None
if not self._implemented_percentage: if self.speed is not None and not self._implemented_percentage:
return self.speed_to_percentage(self.speed) return self.speed_to_percentage(self.speed)
return 0 return 0
@ -488,7 +492,7 @@ class FanEntity(ToggleEntity):
speeds = [] speeds = []
if self._implemented_percentage: if self._implemented_percentage:
speeds += [SPEED_OFF, *LEGACY_SPEED_LIST] speeds += [SPEED_OFF, *LEGACY_SPEED_LIST]
if self._implemented_preset_mode: if self._implemented_preset_mode and self.preset_modes:
speeds += self.preset_modes speeds += self.preset_modes
return speeds return speeds
@ -594,7 +598,7 @@ class FanEntity(ToggleEntity):
@property @property
def state_attributes(self) -> dict: def state_attributes(self) -> dict:
"""Return optional state attributes.""" """Return optional state attributes."""
data = {} data: dict[str, float | str | None] = {}
supported_features = self.supported_features supported_features = self.supported_features
if supported_features & SUPPORT_DIRECTION: if supported_features & SUPPORT_DIRECTION:
@ -628,7 +632,7 @@ class FanEntity(ToggleEntity):
Requires SUPPORT_SET_SPEED. Requires SUPPORT_SET_SPEED.
""" """
speed = self.speed speed = self.speed
if speed in self.preset_modes: if self.preset_modes and speed in self.preset_modes:
return speed return speed
return None return None

View File

@ -1159,9 +1159,6 @@ ignore_errors = true
[mypy-homeassistant.components.evohome.*] [mypy-homeassistant.components.evohome.*]
ignore_errors = true ignore_errors = true
[mypy-homeassistant.components.fan.*]
ignore_errors = true
[mypy-homeassistant.components.filter.*] [mypy-homeassistant.components.filter.*]
ignore_errors = true ignore_errors = true

View File

@ -52,7 +52,6 @@ IGNORED_MODULES: Final[list[str]] = [
"homeassistant.components.entur_public_transport.*", "homeassistant.components.entur_public_transport.*",
"homeassistant.components.esphome.*", "homeassistant.components.esphome.*",
"homeassistant.components.evohome.*", "homeassistant.components.evohome.*",
"homeassistant.components.fan.*",
"homeassistant.components.filter.*", "homeassistant.components.filter.*",
"homeassistant.components.fints.*", "homeassistant.components.fints.*",
"homeassistant.components.fireservicerota.*", "homeassistant.components.fireservicerota.*",