From 32409a2c938fddd6e64d9bc4c95a9a2690869172 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 14 Jun 2021 18:04:46 +0200 Subject: [PATCH] Define HumidifierEntity entity attributes as class variables (#51841) --- homeassistant/components/demo/humidifier.py | 84 ++++++------------- .../components/humidifier/__init__.py | 16 ++-- 2 files changed, 36 insertions(+), 64 deletions(-) diff --git a/homeassistant/components/demo/humidifier.py b/homeassistant/components/demo/humidifier.py index 35eb6e18537..7ee5c0fc6ef 100644 --- a/homeassistant/components/demo/humidifier.py +++ b/homeassistant/components/demo/humidifier.py @@ -1,4 +1,6 @@ """Demo platform that offers a fake humidifier device.""" +from __future__ import annotations + from homeassistant.components.humidifier import HumidifierEntity from homeassistant.components.humidifier.const import ( DEVICE_CLASS_DEHUMIDIFIER, @@ -43,82 +45,46 @@ async def async_setup_entry(hass, config_entry, async_add_entities): class DemoHumidifier(HumidifierEntity): """Representation of a demo humidifier device.""" + _attr_should_poll = False + def __init__( self, - name, - mode, - target_humidity, - available_modes=None, - is_on=True, - device_class=None, - ): + name: str, + mode: str | None, + target_humidity: int, + available_modes: list[str] | None = None, + is_on: bool = True, + device_class: str | None = None, + ) -> None: """Initialize the humidifier device.""" - self._name = name - self._state = is_on - self._support_flags = SUPPORT_FLAGS + self._attr_name = name + self._attr_is_on = is_on + self._attr_supported_features = SUPPORT_FLAGS if mode is not None: - self._support_flags = self._support_flags | SUPPORT_MODES - self._target_humidity = target_humidity - self._mode = mode - self._available_modes = available_modes - self._device_class = device_class - - @property - def supported_features(self): - """Return the list of supported features.""" - return self._support_flags - - @property - def should_poll(self): - """Return the polling state.""" - return False - - @property - def name(self): - """Return the name of the humidity device.""" - return self._name - - @property - def target_humidity(self): - """Return the humidity we try to reach.""" - return self._target_humidity - - @property - def mode(self): - """Return current mode.""" - return self._mode - - @property - def available_modes(self): - """Return available modes.""" - return self._available_modes - - @property - def is_on(self): - """Return true if the humidifier is on.""" - return self._state - - @property - def device_class(self): - """Return the device class of the humidifier.""" - return self._device_class + self._attr_supported_features = ( + self._attr_supported_features | SUPPORT_MODES + ) + self._attr_target_humidity = target_humidity + self._attr_mode = mode + self._attr_available_modes = available_modes + self._attr_device_class = device_class async def async_turn_on(self, **kwargs): """Turn the device on.""" - self._state = True + self._attr_is_on = True self.async_write_ha_state() async def async_turn_off(self, **kwargs): """Turn the device off.""" - self._state = False + self._attr_is_on = False self.async_write_ha_state() async def async_set_humidity(self, humidity): """Set new humidity level.""" - self._target_humidity = humidity + self._attr_target_humidity = humidity self.async_write_ha_state() async def async_set_mode(self, mode): """Update mode.""" - self._mode = mode + self._attr_mode = mode self.async_write_ha_state() diff --git a/homeassistant/components/humidifier/__init__.py b/homeassistant/components/humidifier/__init__.py index 9500b74aba6..31bff2fe3f4 100644 --- a/homeassistant/components/humidifier/__init__.py +++ b/homeassistant/components/humidifier/__init__.py @@ -102,6 +102,12 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: class HumidifierEntity(ToggleEntity): """Base class for humidifier entities.""" + _attr_available_modes: list[str] | None + _attr_max_humidity: int = DEFAULT_MAX_HUMIDITY + _attr_min_humidity: int = DEFAULT_MIN_HUMIDITY + _attr_mode: str | None + _attr_target_humidity: int | None = None + @property def capability_attributes(self) -> dict[str, Any]: """Return capability attributes.""" @@ -134,7 +140,7 @@ class HumidifierEntity(ToggleEntity): @property def target_humidity(self) -> int | None: """Return the humidity we try to reach.""" - return None + return self._attr_target_humidity @property def mode(self) -> str | None: @@ -142,7 +148,7 @@ class HumidifierEntity(ToggleEntity): Requires SUPPORT_MODES. """ - raise NotImplementedError + return self._attr_mode @property def available_modes(self) -> list[str] | None: @@ -150,7 +156,7 @@ class HumidifierEntity(ToggleEntity): Requires SUPPORT_MODES. """ - raise NotImplementedError + return self._attr_available_modes def set_humidity(self, humidity: int) -> None: """Set new target humidity.""" @@ -171,9 +177,9 @@ class HumidifierEntity(ToggleEntity): @property def min_humidity(self) -> int: """Return the minimum humidity.""" - return DEFAULT_MIN_HUMIDITY + return self._attr_min_humidity @property def max_humidity(self) -> int: """Return the maximum humidity.""" - return DEFAULT_MAX_HUMIDITY + return self._attr_max_humidity