From a6f112df80c2aaac03ec36ea48ea6862ded88f06 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Thu, 7 Apr 2022 07:12:39 +0200 Subject: [PATCH] Use EntityFeature enum in components (w**) (#69468) * Use EntityFeature enum in webostv * Use EntityFeature enum in wemo * Use EntityFeature enum in whirlpool * Use EntityFeature enum in wilight --- .../components/webostv/media_player.py | 48 ++++++++----------- homeassistant/components/wemo/fan.py | 11 +---- homeassistant/components/whirlpool/climate.py | 9 ++-- homeassistant/components/wilight/fan.py | 16 ++----- 4 files changed, 30 insertions(+), 54 deletions(-) diff --git a/homeassistant/components/webostv/media_player.py b/homeassistant/components/webostv/media_player.py index 67125c45ef5..49f9a29052b 100644 --- a/homeassistant/components/webostv/media_player.py +++ b/homeassistant/components/webostv/media_player.py @@ -15,22 +15,9 @@ from homeassistant import util from homeassistant.components.media_player import ( MediaPlayerDeviceClass, MediaPlayerEntity, + MediaPlayerEntityFeature, ) -from homeassistant.components.media_player.const import ( - MEDIA_TYPE_CHANNEL, - SUPPORT_NEXT_TRACK, - SUPPORT_PAUSE, - SUPPORT_PLAY, - SUPPORT_PLAY_MEDIA, - SUPPORT_PREVIOUS_TRACK, - SUPPORT_SELECT_SOURCE, - SUPPORT_STOP, - SUPPORT_TURN_OFF, - SUPPORT_TURN_ON, - SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_SET, - SUPPORT_VOLUME_STEP, -) +from homeassistant.components.media_player.const import MEDIA_TYPE_CHANNEL from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( ATTR_ENTITY_ID, @@ -61,17 +48,19 @@ from .const import ( _LOGGER = logging.getLogger(__name__) SUPPORT_WEBOSTV = ( - SUPPORT_TURN_OFF - | SUPPORT_NEXT_TRACK - | SUPPORT_PAUSE - | SUPPORT_PREVIOUS_TRACK - | SUPPORT_SELECT_SOURCE - | SUPPORT_PLAY_MEDIA - | SUPPORT_PLAY - | SUPPORT_STOP + MediaPlayerEntityFeature.TURN_OFF + | MediaPlayerEntityFeature.NEXT_TRACK + | MediaPlayerEntityFeature.PAUSE + | MediaPlayerEntityFeature.PREVIOUS_TRACK + | MediaPlayerEntityFeature.SELECT_SOURCE + | MediaPlayerEntityFeature.PLAY_MEDIA + | MediaPlayerEntityFeature.PLAY + | MediaPlayerEntityFeature.STOP ) -SUPPORT_WEBOSTV_VOLUME = SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_STEP +SUPPORT_WEBOSTV_VOLUME = ( + MediaPlayerEntityFeature.VOLUME_MUTE | MediaPlayerEntityFeature.VOLUME_STEP +) MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(seconds=1) @@ -169,7 +158,8 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity): and (state := await self.async_get_last_state()) is not None ): self._supported_features = ( - state.attributes.get(ATTR_SUPPORTED_FEATURES, 0) & ~SUPPORT_TURN_ON + state.attributes.get(ATTR_SUPPORTED_FEATURES, 0) + & ~MediaPlayerEntityFeature.TURN_ON ) async def async_will_remove_from_hass(self) -> None: @@ -232,7 +222,11 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity): if self._client.sound_output in ("external_arc", "external_speaker"): supported = supported | SUPPORT_WEBOSTV_VOLUME elif self._client.sound_output != "lineout": - supported = supported | SUPPORT_WEBOSTV_VOLUME | SUPPORT_VOLUME_SET + supported = ( + supported + | SUPPORT_WEBOSTV_VOLUME + | MediaPlayerEntityFeature.VOLUME_SET + ) self._supported_features = supported @@ -322,7 +316,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity): def supported_features(self) -> int: """Flag media player features that are supported.""" if self._wrapper.turn_on: - return self._supported_features | SUPPORT_TURN_ON + return self._supported_features | MediaPlayerEntityFeature.TURN_ON return self._supported_features diff --git a/homeassistant/components/wemo/fan.py b/homeassistant/components/wemo/fan.py index 253ff34213e..d62a7a3b7e3 100644 --- a/homeassistant/components/wemo/fan.py +++ b/homeassistant/components/wemo/fan.py @@ -9,7 +9,7 @@ from typing import Any from pywemo.ouimeaux_device.humidifier import DesiredHumidity, FanMode, Humidifier import voluptuous as vol -from homeassistant.components.fan import SUPPORT_SET_SPEED, FanEntity +from homeassistant.components.fan import FanEntity, FanEntityFeature from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant, callback from homeassistant.helpers import entity_platform @@ -41,9 +41,6 @@ ATTR_WATER_LEVEL = "water_level" SPEED_RANGE = (FanMode.Minimum, FanMode.Maximum) # off is not included -SUPPORTED_FEATURES = SUPPORT_SET_SPEED - - SET_HUMIDITY_SCHEMA = { vol.Required(ATTR_TARGET_HUMIDITY): vol.All( vol.Coerce(float), vol.Range(min=0, max=100) @@ -87,6 +84,7 @@ async def async_setup_entry( class WemoHumidifier(WemoBinaryStateEntity, FanEntity): """Representation of a WeMo humidifier.""" + _attr_supported_features = FanEntityFeature.SET_SPEED wemo: Humidifier def __init__(self, coordinator: DeviceCoordinator) -> None: @@ -124,11 +122,6 @@ class WemoHumidifier(WemoBinaryStateEntity, FanEntity): """Return the number of speeds the fan supports.""" return int_states_in_range(SPEED_RANGE) - @property - def supported_features(self) -> int: - """Flag supported features.""" - return SUPPORTED_FEATURES - @callback def _handle_coordinator_update(self) -> None: """Handle updated data from the coordinator.""" diff --git a/homeassistant/components/whirlpool/climate.py b/homeassistant/components/whirlpool/climate.py index 40d3e80d353..8d6578d2e23 100644 --- a/homeassistant/components/whirlpool/climate.py +++ b/homeassistant/components/whirlpool/climate.py @@ -6,7 +6,7 @@ import aiohttp from whirlpool.aircon import Aircon, FanSpeed as AirconFanSpeed, Mode as AirconMode from whirlpool.auth import Auth -from homeassistant.components.climate import ClimateEntity +from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature from homeassistant.components.climate.const import ( FAN_AUTO, FAN_HIGH, @@ -17,9 +17,6 @@ from homeassistant.components.climate.const import ( HVAC_MODE_FAN_ONLY, HVAC_MODE_HEAT, HVAC_MODE_OFF, - SUPPORT_FAN_MODE, - SUPPORT_SWING_MODE, - SUPPORT_TARGET_TEMPERATURE, SWING_HORIZONTAL, SWING_OFF, ) @@ -89,7 +86,9 @@ class AirConEntity(ClimateEntity): _attr_max_temp = SUPPORTED_MAX_TEMP _attr_min_temp = SUPPORTED_MIN_TEMP _attr_supported_features = ( - SUPPORT_TARGET_TEMPERATURE | SUPPORT_FAN_MODE | SUPPORT_SWING_MODE + ClimateEntityFeature.TARGET_TEMPERATURE + | ClimateEntityFeature.FAN_MODE + | ClimateEntityFeature.SWING_MODE ) _attr_swing_modes = SUPPORTED_SWING_MODES _attr_target_temperature_step = SUPPORTED_TARGET_TEMPERATURE_STEP diff --git a/homeassistant/components/wilight/fan.py b/homeassistant/components/wilight/fan.py index fbf5b0858a7..b96b4b89c61 100644 --- a/homeassistant/components/wilight/fan.py +++ b/homeassistant/components/wilight/fan.py @@ -12,12 +12,7 @@ from pywilight.const import ( WL_SPEED_MEDIUM, ) -from homeassistant.components.fan import ( - DIRECTION_FORWARD, - SUPPORT_DIRECTION, - SUPPORT_SET_SPEED, - FanEntity, -) +from homeassistant.components.fan import DIRECTION_FORWARD, FanEntity, FanEntityFeature from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -30,8 +25,6 @@ from . import DOMAIN, WiLightDevice ORDERED_NAMED_FAN_SPEEDS = [WL_SPEED_LOW, WL_SPEED_MEDIUM, WL_SPEED_HIGH] -SUPPORTED_FEATURES = SUPPORT_SET_SPEED | SUPPORT_DIRECTION - async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback @@ -57,17 +50,14 @@ async def async_setup_entry( class WiLightFan(WiLightDevice, FanEntity): """Representation of a WiLights fan.""" + _attr_supported_features = FanEntityFeature.SET_SPEED | FanEntityFeature.DIRECTION + def __init__(self, api_device, index, item_name): """Initialize the device.""" super().__init__(api_device, index, item_name) # Initialize the WiLights fan. self._direction = WL_DIRECTION_FORWARD - @property - def supported_features(self): - """Flag supported features.""" - return SUPPORTED_FEATURES - @property def icon(self): """Return the icon of device based on its type."""