diff --git a/homeassistant/components/lg_netcast/media_player.py b/homeassistant/components/lg_netcast/media_player.py index d7f2e5ca3a2..a36ac83d37c 100644 --- a/homeassistant/components/lg_netcast/media_player.py +++ b/homeassistant/components/lg_netcast/media_player.py @@ -11,21 +11,9 @@ from homeassistant.components.media_player import ( PLATFORM_SCHEMA, 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_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.const import ( CONF_ACCESS_TOKEN, CONF_HOST, @@ -47,16 +35,16 @@ DEFAULT_NAME = "LG TV Remote" CONF_ON_ACTION = "turn_on_action" SUPPORT_LGTV = ( - SUPPORT_PAUSE - | SUPPORT_VOLUME_STEP - | SUPPORT_VOLUME_SET - | SUPPORT_VOLUME_MUTE - | SUPPORT_PREVIOUS_TRACK - | SUPPORT_NEXT_TRACK - | SUPPORT_TURN_OFF - | SUPPORT_SELECT_SOURCE - | SUPPORT_PLAY - | SUPPORT_PLAY_MEDIA + MediaPlayerEntityFeature.PAUSE + | MediaPlayerEntityFeature.VOLUME_STEP + | MediaPlayerEntityFeature.VOLUME_SET + | MediaPlayerEntityFeature.VOLUME_MUTE + | MediaPlayerEntityFeature.PREVIOUS_TRACK + | MediaPlayerEntityFeature.NEXT_TRACK + | MediaPlayerEntityFeature.TURN_OFF + | MediaPlayerEntityFeature.SELECT_SOURCE + | MediaPlayerEntityFeature.PLAY + | MediaPlayerEntityFeature.PLAY_MEDIA ) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( @@ -221,7 +209,7 @@ class LgTVDevice(MediaPlayerEntity): def supported_features(self): """Flag media player features that are supported.""" if self._on_action_script: - return SUPPORT_LGTV | SUPPORT_TURN_ON + return SUPPORT_LGTV | MediaPlayerEntityFeature.TURN_ON return SUPPORT_LGTV @property diff --git a/homeassistant/components/lg_soundbar/media_player.py b/homeassistant/components/lg_soundbar/media_player.py index cee8e5114c1..569678c8c15 100644 --- a/homeassistant/components/lg_soundbar/media_player.py +++ b/homeassistant/components/lg_soundbar/media_player.py @@ -3,25 +3,15 @@ from __future__ import annotations import temescal -from homeassistant.components.media_player import MediaPlayerEntity -from homeassistant.components.media_player.const import ( - SUPPORT_SELECT_SOUND_MODE, - SUPPORT_SELECT_SOURCE, - SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_SET, +from homeassistant.components.media_player import ( + MediaPlayerEntity, + MediaPlayerEntityFeature, ) from homeassistant.const import STATE_ON from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType -SUPPORT_LG = ( - SUPPORT_VOLUME_SET - | SUPPORT_VOLUME_MUTE - | SUPPORT_SELECT_SOURCE - | SUPPORT_SELECT_SOUND_MODE -) - def setup_platform( hass: HomeAssistant, @@ -37,6 +27,13 @@ def setup_platform( class LGDevice(MediaPlayerEntity): """Representation of an LG soundbar device.""" + _attr_supported_features = ( + MediaPlayerEntityFeature.VOLUME_SET + | MediaPlayerEntityFeature.VOLUME_MUTE + | MediaPlayerEntityFeature.SELECT_SOURCE + | MediaPlayerEntityFeature.SELECT_SOUND_MODE + ) + def __init__(self, discovery_info): """Initialize the LG speakers.""" self._host = discovery_info["host"] @@ -189,11 +186,6 @@ class LGDevice(MediaPlayerEntity): sources.append(temescal.functions[function]) return sorted(sources) - @property - def supported_features(self): - """Flag media player features that are supported.""" - return SUPPORT_LG - def set_volume_level(self, volume): """Set volume level, range 0..1.""" volume = volume * self._volume_max diff --git a/homeassistant/components/lightwave/climate.py b/homeassistant/components/lightwave/climate.py index d2b0c789441..beb19d48adf 100644 --- a/homeassistant/components/lightwave/climate.py +++ b/homeassistant/components/lightwave/climate.py @@ -6,8 +6,8 @@ from homeassistant.components.climate import ( DEFAULT_MIN_TEMP, HVAC_MODE_HEAT, HVAC_MODE_OFF, - SUPPORT_TARGET_TEMPERATURE, ClimateEntity, + ClimateEntityFeature, ) from homeassistant.components.climate.const import CURRENT_HVAC_HEAT, CURRENT_HVAC_OFF from homeassistant.const import ATTR_TEMPERATURE, CONF_NAME, TEMP_CELSIUS @@ -46,7 +46,7 @@ class LightwaveTrv(ClimateEntity): _attr_hvac_modes = [HVAC_MODE_HEAT, HVAC_MODE_OFF] _attr_min_temp = DEFAULT_MIN_TEMP _attr_max_temp = DEFAULT_MAX_TEMP - _attr_supported_features = SUPPORT_TARGET_TEMPERATURE + _attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE _attr_target_temperature_step = 0.5 _attr_temperature_unit = TEMP_CELSIUS diff --git a/homeassistant/components/logi_circle/camera.py b/homeassistant/components/logi_circle/camera.py index 896d58753fd..097b64ac208 100644 --- a/homeassistant/components/logi_circle/camera.py +++ b/homeassistant/components/logi_circle/camera.py @@ -4,7 +4,7 @@ from __future__ import annotations from datetime import timedelta import logging -from homeassistant.components.camera import SUPPORT_ON_OFF, Camera +from homeassistant.components.camera import Camera, CameraEntityFeature from homeassistant.components.ffmpeg import get_ffmpeg_manager from homeassistant.config_entries import ConfigEntry from homeassistant.const import ( @@ -62,6 +62,8 @@ async def async_setup_entry( class LogiCam(Camera): """An implementation of a Logi Circle camera.""" + _attr_supported_features = CameraEntityFeature.ON_OFF + def __init__(self, camera, device_info, ffmpeg): """Initialize Logi Circle camera.""" super().__init__() @@ -123,11 +125,6 @@ class LogiCam(Camera): """Return the name of this camera.""" return self._name - @property - def supported_features(self): - """Logi Circle camera's support turning on and off ("soft" switch).""" - return SUPPORT_ON_OFF - @property def device_info(self) -> DeviceInfo: """Return information about the device.""" diff --git a/homeassistant/components/lookin/climate.py b/homeassistant/components/lookin/climate.py index 79cac79cb17..dd6e7c8cffa 100644 --- a/homeassistant/components/lookin/climate.py +++ b/homeassistant/components/lookin/climate.py @@ -7,7 +7,7 @@ from typing import Any, Final, cast from aiolookin import Climate, MeteoSensor from aiolookin.models import UDPCommandType, UDPEvent -from homeassistant.components.climate import ClimateEntity +from homeassistant.components.climate import ClimateEntity, ClimateEntityFeature from homeassistant.components.climate.const import ( ATTR_HVAC_MODE, FAN_AUTO, @@ -20,9 +20,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_BOTH, SWING_OFF, ) @@ -41,8 +38,6 @@ from .coordinator import LookinDataUpdateCoordinator from .entity import LookinCoordinatorEntity from .models import LookinData -SUPPORT_FLAGS: int = SUPPORT_TARGET_TEMPERATURE | SUPPORT_FAN_MODE | SUPPORT_SWING_MODE - LOOKIN_FAN_MODE_IDX_TO_HASS: Final = [FAN_AUTO, FAN_LOW, FAN_MIDDLE, FAN_HIGH] LOOKIN_SWING_MODE_IDX_TO_HASS: Final = [SWING_OFF, SWING_BOTH] LOOKIN_HVAC_MODE_IDX_TO_HASS: Final = [ @@ -102,7 +97,11 @@ class ConditionerEntity(LookinCoordinatorEntity, ClimateEntity): _attr_current_humidity: float | None = None # type: ignore[assignment] _attr_temperature_unit = TEMP_CELSIUS - _attr_supported_features: int = SUPPORT_FLAGS + _attr_supported_features: int = ( + ClimateEntityFeature.TARGET_TEMPERATURE + | ClimateEntityFeature.FAN_MODE + | ClimateEntityFeature.SWING_MODE + ) _attr_fan_modes: list[str] = LOOKIN_FAN_MODE_IDX_TO_HASS _attr_swing_modes: list[str] = LOOKIN_SWING_MODE_IDX_TO_HASS _attr_hvac_modes: list[str] = LOOKIN_HVAC_MODE_IDX_TO_HASS diff --git a/homeassistant/components/lookin/media_player.py b/homeassistant/components/lookin/media_player.py index 9d689b1d241..fa3a3622a31 100644 --- a/homeassistant/components/lookin/media_player.py +++ b/homeassistant/components/lookin/media_player.py @@ -8,14 +8,7 @@ from aiolookin import Remote from homeassistant.components.media_player import ( MediaPlayerDeviceClass, MediaPlayerEntity, -) -from homeassistant.components.media_player.const import ( - SUPPORT_NEXT_TRACK, - SUPPORT_PREVIOUS_TRACK, - SUPPORT_TURN_OFF, - SUPPORT_TURN_ON, - SUPPORT_VOLUME_MUTE, - SUPPORT_VOLUME_STEP, + MediaPlayerEntityFeature, ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import STATE_ON, STATE_STANDBY, Platform @@ -35,13 +28,13 @@ _TYPE_TO_DEVICE_CLASS = { } _FUNCTION_NAME_TO_FEATURE = { - "power": SUPPORT_TURN_OFF, - "poweron": SUPPORT_TURN_ON, - "poweroff": SUPPORT_TURN_OFF, - "mute": SUPPORT_VOLUME_MUTE, - "volup": SUPPORT_VOLUME_STEP, - "chup": SUPPORT_NEXT_TRACK, - "chdown": SUPPORT_PREVIOUS_TRACK, + "power": MediaPlayerEntityFeature.TURN_OFF, + "poweron": MediaPlayerEntityFeature.TURN_ON, + "poweroff": MediaPlayerEntityFeature.TURN_OFF, + "mute": MediaPlayerEntityFeature.VOLUME_MUTE, + "volup": MediaPlayerEntityFeature.VOLUME_STEP, + "chup": MediaPlayerEntityFeature.NEXT_TRACK, + "chdown": MediaPlayerEntityFeature.PREVIOUS_TRACK, } diff --git a/homeassistant/components/lupusec/alarm_control_panel.py b/homeassistant/components/lupusec/alarm_control_panel.py index 3a36795db2f..812225ea407 100644 --- a/homeassistant/components/lupusec/alarm_control_panel.py +++ b/homeassistant/components/lupusec/alarm_control_panel.py @@ -3,10 +3,9 @@ from __future__ import annotations from datetime import timedelta -from homeassistant.components.alarm_control_panel import AlarmControlPanelEntity -from homeassistant.components.alarm_control_panel.const import ( - SUPPORT_ALARM_ARM_AWAY, - SUPPORT_ALARM_ARM_HOME, +from homeassistant.components.alarm_control_panel import ( + AlarmControlPanelEntity, + AlarmControlPanelEntityFeature, ) from homeassistant.const import ( STATE_ALARM_ARMED_AWAY, @@ -45,6 +44,11 @@ def setup_platform( class LupusecAlarm(LupusecDevice, AlarmControlPanelEntity): """An alarm_control_panel implementation for Lupusec.""" + _attr_supported_features = ( + AlarmControlPanelEntityFeature.ARM_HOME + | AlarmControlPanelEntityFeature.ARM_AWAY + ) + @property def icon(self): """Return the icon.""" @@ -65,11 +69,6 @@ class LupusecAlarm(LupusecDevice, AlarmControlPanelEntity): state = None return state - @property - def supported_features(self) -> int: - """Return the list of supported features.""" - return SUPPORT_ALARM_ARM_HOME | SUPPORT_ALARM_ARM_AWAY - def alarm_arm_away(self, code=None): """Send arm away command.""" self._device.set_away() diff --git a/homeassistant/components/lutron/cover.py b/homeassistant/components/lutron/cover.py index 701cbfbafaa..45b7751aa7c 100644 --- a/homeassistant/components/lutron/cover.py +++ b/homeassistant/components/lutron/cover.py @@ -5,10 +5,8 @@ import logging from homeassistant.components.cover import ( ATTR_POSITION, - SUPPORT_CLOSE, - SUPPORT_OPEN, - SUPPORT_SET_POSITION, CoverEntity, + CoverEntityFeature, ) from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -37,10 +35,11 @@ def setup_platform( class LutronCover(LutronDevice, CoverEntity): """Representation of a Lutron shade.""" - @property - def supported_features(self): - """Flag supported features.""" - return SUPPORT_OPEN | SUPPORT_CLOSE | SUPPORT_SET_POSITION + _attr_supported_features = ( + CoverEntityFeature.OPEN + | CoverEntityFeature.CLOSE + | CoverEntityFeature.SET_POSITION + ) @property def is_closed(self): diff --git a/homeassistant/components/lyric/climate.py b/homeassistant/components/lyric/climate.py index 56b5b6fd022..77cc042a0ae 100644 --- a/homeassistant/components/lyric/climate.py +++ b/homeassistant/components/lyric/climate.py @@ -9,7 +9,11 @@ from aiolyric.objects.device import LyricDevice from aiolyric.objects.location import LyricLocation import voluptuous as vol -from homeassistant.components.climate import ClimateEntity, ClimateEntityDescription +from homeassistant.components.climate import ( + ClimateEntity, + ClimateEntityDescription, + ClimateEntityFeature, +) from homeassistant.components.climate.const import ( ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_LOW, @@ -21,9 +25,6 @@ from homeassistant.components.climate.const import ( HVAC_MODE_HEAT, HVAC_MODE_HEAT_COOL, HVAC_MODE_OFF, - SUPPORT_PRESET_MODE, - SUPPORT_TARGET_TEMPERATURE, - SUPPORT_TARGET_TEMPERATURE_RANGE, ) from homeassistant.config_entries import ConfigEntry from homeassistant.const import ATTR_TEMPERATURE @@ -49,9 +50,14 @@ _LOGGER = logging.getLogger(__name__) # Only LCC models support presets SUPPORT_FLAGS_LCC = ( - SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE | SUPPORT_TARGET_TEMPERATURE_RANGE + ClimateEntityFeature.TARGET_TEMPERATURE + | ClimateEntityFeature.PRESET_MODE + | ClimateEntityFeature.TARGET_TEMPERATURE_RANGE +) +SUPPORT_FLAGS_TCC = ( + ClimateEntityFeature.TARGET_TEMPERATURE + | ClimateEntityFeature.TARGET_TEMPERATURE_RANGE ) -SUPPORT_FLAGS_TCC = SUPPORT_TARGET_TEMPERATURE | SUPPORT_TARGET_TEMPERATURE_RANGE LYRIC_HVAC_ACTION_OFF = "EquipmentOff" LYRIC_HVAC_ACTION_HEAT = "Heat"