diff --git a/homeassistant/components/fan/__init__.py b/homeassistant/components/fan/__init__.py index 20a11fd89f1..248e7d095d0 100644 --- a/homeassistant/components/fan/__init__.py +++ b/homeassistant/components/fan/__init__.py @@ -246,7 +246,7 @@ class FanEntity(ToggleEntity): await self.async_turn_off() 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): await self.async_set_preset_mode(speed) return @@ -375,7 +375,7 @@ class FanEntity(ToggleEntity): _LOGGER.warning( "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 percentage = None else: @@ -463,9 +463,13 @@ class FanEntity(ToggleEntity): @property def percentage(self) -> int | None: """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 - if not self._implemented_percentage: + if self.speed is not None and not self._implemented_percentage: return self.speed_to_percentage(self.speed) return 0 @@ -488,7 +492,7 @@ class FanEntity(ToggleEntity): speeds = [] if self._implemented_percentage: speeds += [SPEED_OFF, *LEGACY_SPEED_LIST] - if self._implemented_preset_mode: + if self._implemented_preset_mode and self.preset_modes: speeds += self.preset_modes return speeds @@ -594,7 +598,7 @@ class FanEntity(ToggleEntity): @property def state_attributes(self) -> dict: """Return optional state attributes.""" - data = {} + data: dict[str, float | str | None] = {} supported_features = self.supported_features if supported_features & SUPPORT_DIRECTION: @@ -628,7 +632,7 @@ class FanEntity(ToggleEntity): Requires SUPPORT_SET_SPEED. """ speed = self.speed - if speed in self.preset_modes: + if self.preset_modes and speed in self.preset_modes: return speed return None diff --git a/mypy.ini b/mypy.ini index cb3bf6ec698..4c693dcc5ee 100644 --- a/mypy.ini +++ b/mypy.ini @@ -1159,9 +1159,6 @@ ignore_errors = true [mypy-homeassistant.components.evohome.*] ignore_errors = true -[mypy-homeassistant.components.fan.*] -ignore_errors = true - [mypy-homeassistant.components.filter.*] ignore_errors = true diff --git a/script/hassfest/mypy_config.py b/script/hassfest/mypy_config.py index d234f96589a..1873ebd46c1 100644 --- a/script/hassfest/mypy_config.py +++ b/script/hassfest/mypy_config.py @@ -52,7 +52,6 @@ IGNORED_MODULES: Final[list[str]] = [ "homeassistant.components.entur_public_transport.*", "homeassistant.components.esphome.*", "homeassistant.components.evohome.*", - "homeassistant.components.fan.*", "homeassistant.components.filter.*", "homeassistant.components.fints.*", "homeassistant.components.fireservicerota.*",