Use EntityFeature enum in components (l**) (#69412)

This commit is contained in:
epenet 2022-04-07 09:34:58 +02:00 committed by GitHub
parent 96819fff74
commit 95fb4695e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 68 additions and 95 deletions

View File

@ -11,21 +11,9 @@ from homeassistant.components.media_player import (
PLATFORM_SCHEMA, PLATFORM_SCHEMA,
MediaPlayerDeviceClass, MediaPlayerDeviceClass,
MediaPlayerEntity, MediaPlayerEntity,
MediaPlayerEntityFeature,
) )
from homeassistant.components.media_player.const import ( from homeassistant.components.media_player.const import MEDIA_TYPE_CHANNEL
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.const import ( from homeassistant.const import (
CONF_ACCESS_TOKEN, CONF_ACCESS_TOKEN,
CONF_HOST, CONF_HOST,
@ -47,16 +35,16 @@ DEFAULT_NAME = "LG TV Remote"
CONF_ON_ACTION = "turn_on_action" CONF_ON_ACTION = "turn_on_action"
SUPPORT_LGTV = ( SUPPORT_LGTV = (
SUPPORT_PAUSE MediaPlayerEntityFeature.PAUSE
| SUPPORT_VOLUME_STEP | MediaPlayerEntityFeature.VOLUME_STEP
| SUPPORT_VOLUME_SET | MediaPlayerEntityFeature.VOLUME_SET
| SUPPORT_VOLUME_MUTE | MediaPlayerEntityFeature.VOLUME_MUTE
| SUPPORT_PREVIOUS_TRACK | MediaPlayerEntityFeature.PREVIOUS_TRACK
| SUPPORT_NEXT_TRACK | MediaPlayerEntityFeature.NEXT_TRACK
| SUPPORT_TURN_OFF | MediaPlayerEntityFeature.TURN_OFF
| SUPPORT_SELECT_SOURCE | MediaPlayerEntityFeature.SELECT_SOURCE
| SUPPORT_PLAY | MediaPlayerEntityFeature.PLAY
| SUPPORT_PLAY_MEDIA | MediaPlayerEntityFeature.PLAY_MEDIA
) )
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
@ -221,7 +209,7 @@ class LgTVDevice(MediaPlayerEntity):
def supported_features(self): def supported_features(self):
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
if self._on_action_script: if self._on_action_script:
return SUPPORT_LGTV | SUPPORT_TURN_ON return SUPPORT_LGTV | MediaPlayerEntityFeature.TURN_ON
return SUPPORT_LGTV return SUPPORT_LGTV
@property @property

View File

@ -3,25 +3,15 @@ from __future__ import annotations
import temescal import temescal
from homeassistant.components.media_player import MediaPlayerEntity from homeassistant.components.media_player import (
from homeassistant.components.media_player.const import ( MediaPlayerEntity,
SUPPORT_SELECT_SOUND_MODE, MediaPlayerEntityFeature,
SUPPORT_SELECT_SOURCE,
SUPPORT_VOLUME_MUTE,
SUPPORT_VOLUME_SET,
) )
from homeassistant.const import STATE_ON from homeassistant.const import STATE_ON
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType 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( def setup_platform(
hass: HomeAssistant, hass: HomeAssistant,
@ -37,6 +27,13 @@ def setup_platform(
class LGDevice(MediaPlayerEntity): class LGDevice(MediaPlayerEntity):
"""Representation of an LG soundbar device.""" """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): def __init__(self, discovery_info):
"""Initialize the LG speakers.""" """Initialize the LG speakers."""
self._host = discovery_info["host"] self._host = discovery_info["host"]
@ -189,11 +186,6 @@ class LGDevice(MediaPlayerEntity):
sources.append(temescal.functions[function]) sources.append(temescal.functions[function])
return sorted(sources) return sorted(sources)
@property
def supported_features(self):
"""Flag media player features that are supported."""
return SUPPORT_LG
def set_volume_level(self, volume): def set_volume_level(self, volume):
"""Set volume level, range 0..1.""" """Set volume level, range 0..1."""
volume = volume * self._volume_max volume = volume * self._volume_max

View File

@ -6,8 +6,8 @@ from homeassistant.components.climate import (
DEFAULT_MIN_TEMP, DEFAULT_MIN_TEMP,
HVAC_MODE_HEAT, HVAC_MODE_HEAT,
HVAC_MODE_OFF, HVAC_MODE_OFF,
SUPPORT_TARGET_TEMPERATURE,
ClimateEntity, ClimateEntity,
ClimateEntityFeature,
) )
from homeassistant.components.climate.const import CURRENT_HVAC_HEAT, CURRENT_HVAC_OFF from homeassistant.components.climate.const import CURRENT_HVAC_HEAT, CURRENT_HVAC_OFF
from homeassistant.const import ATTR_TEMPERATURE, CONF_NAME, TEMP_CELSIUS 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_hvac_modes = [HVAC_MODE_HEAT, HVAC_MODE_OFF]
_attr_min_temp = DEFAULT_MIN_TEMP _attr_min_temp = DEFAULT_MIN_TEMP
_attr_max_temp = DEFAULT_MAX_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_target_temperature_step = 0.5
_attr_temperature_unit = TEMP_CELSIUS _attr_temperature_unit = TEMP_CELSIUS

View File

@ -4,7 +4,7 @@ from __future__ import annotations
from datetime import timedelta from datetime import timedelta
import logging 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.components.ffmpeg import get_ffmpeg_manager
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ( from homeassistant.const import (
@ -62,6 +62,8 @@ async def async_setup_entry(
class LogiCam(Camera): class LogiCam(Camera):
"""An implementation of a Logi Circle camera.""" """An implementation of a Logi Circle camera."""
_attr_supported_features = CameraEntityFeature.ON_OFF
def __init__(self, camera, device_info, ffmpeg): def __init__(self, camera, device_info, ffmpeg):
"""Initialize Logi Circle camera.""" """Initialize Logi Circle camera."""
super().__init__() super().__init__()
@ -123,11 +125,6 @@ class LogiCam(Camera):
"""Return the name of this camera.""" """Return the name of this camera."""
return self._name return self._name
@property
def supported_features(self):
"""Logi Circle camera's support turning on and off ("soft" switch)."""
return SUPPORT_ON_OFF
@property @property
def device_info(self) -> DeviceInfo: def device_info(self) -> DeviceInfo:
"""Return information about the device.""" """Return information about the device."""

View File

@ -7,7 +7,7 @@ from typing import Any, Final, cast
from aiolookin import Climate, MeteoSensor from aiolookin import Climate, MeteoSensor
from aiolookin.models import UDPCommandType, UDPEvent 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 ( from homeassistant.components.climate.const import (
ATTR_HVAC_MODE, ATTR_HVAC_MODE,
FAN_AUTO, FAN_AUTO,
@ -20,9 +20,6 @@ from homeassistant.components.climate.const import (
HVAC_MODE_FAN_ONLY, HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT, HVAC_MODE_HEAT,
HVAC_MODE_OFF, HVAC_MODE_OFF,
SUPPORT_FAN_MODE,
SUPPORT_SWING_MODE,
SUPPORT_TARGET_TEMPERATURE,
SWING_BOTH, SWING_BOTH,
SWING_OFF, SWING_OFF,
) )
@ -41,8 +38,6 @@ from .coordinator import LookinDataUpdateCoordinator
from .entity import LookinCoordinatorEntity from .entity import LookinCoordinatorEntity
from .models import LookinData 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_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_SWING_MODE_IDX_TO_HASS: Final = [SWING_OFF, SWING_BOTH]
LOOKIN_HVAC_MODE_IDX_TO_HASS: Final = [ 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_current_humidity: float | None = None # type: ignore[assignment]
_attr_temperature_unit = TEMP_CELSIUS _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_fan_modes: list[str] = LOOKIN_FAN_MODE_IDX_TO_HASS
_attr_swing_modes: list[str] = LOOKIN_SWING_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 _attr_hvac_modes: list[str] = LOOKIN_HVAC_MODE_IDX_TO_HASS

View File

@ -8,14 +8,7 @@ from aiolookin import Remote
from homeassistant.components.media_player import ( from homeassistant.components.media_player import (
MediaPlayerDeviceClass, MediaPlayerDeviceClass,
MediaPlayerEntity, MediaPlayerEntity,
) MediaPlayerEntityFeature,
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,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import STATE_ON, STATE_STANDBY, Platform from homeassistant.const import STATE_ON, STATE_STANDBY, Platform
@ -35,13 +28,13 @@ _TYPE_TO_DEVICE_CLASS = {
} }
_FUNCTION_NAME_TO_FEATURE = { _FUNCTION_NAME_TO_FEATURE = {
"power": SUPPORT_TURN_OFF, "power": MediaPlayerEntityFeature.TURN_OFF,
"poweron": SUPPORT_TURN_ON, "poweron": MediaPlayerEntityFeature.TURN_ON,
"poweroff": SUPPORT_TURN_OFF, "poweroff": MediaPlayerEntityFeature.TURN_OFF,
"mute": SUPPORT_VOLUME_MUTE, "mute": MediaPlayerEntityFeature.VOLUME_MUTE,
"volup": SUPPORT_VOLUME_STEP, "volup": MediaPlayerEntityFeature.VOLUME_STEP,
"chup": SUPPORT_NEXT_TRACK, "chup": MediaPlayerEntityFeature.NEXT_TRACK,
"chdown": SUPPORT_PREVIOUS_TRACK, "chdown": MediaPlayerEntityFeature.PREVIOUS_TRACK,
} }

View File

@ -3,10 +3,9 @@ from __future__ import annotations
from datetime import timedelta from datetime import timedelta
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntity from homeassistant.components.alarm_control_panel import (
from homeassistant.components.alarm_control_panel.const import ( AlarmControlPanelEntity,
SUPPORT_ALARM_ARM_AWAY, AlarmControlPanelEntityFeature,
SUPPORT_ALARM_ARM_HOME,
) )
from homeassistant.const import ( from homeassistant.const import (
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_AWAY,
@ -45,6 +44,11 @@ def setup_platform(
class LupusecAlarm(LupusecDevice, AlarmControlPanelEntity): class LupusecAlarm(LupusecDevice, AlarmControlPanelEntity):
"""An alarm_control_panel implementation for Lupusec.""" """An alarm_control_panel implementation for Lupusec."""
_attr_supported_features = (
AlarmControlPanelEntityFeature.ARM_HOME
| AlarmControlPanelEntityFeature.ARM_AWAY
)
@property @property
def icon(self): def icon(self):
"""Return the icon.""" """Return the icon."""
@ -65,11 +69,6 @@ class LupusecAlarm(LupusecDevice, AlarmControlPanelEntity):
state = None state = None
return state 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): def alarm_arm_away(self, code=None):
"""Send arm away command.""" """Send arm away command."""
self._device.set_away() self._device.set_away()

View File

@ -5,10 +5,8 @@ import logging
from homeassistant.components.cover import ( from homeassistant.components.cover import (
ATTR_POSITION, ATTR_POSITION,
SUPPORT_CLOSE,
SUPPORT_OPEN,
SUPPORT_SET_POSITION,
CoverEntity, CoverEntity,
CoverEntityFeature,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
@ -37,10 +35,11 @@ def setup_platform(
class LutronCover(LutronDevice, CoverEntity): class LutronCover(LutronDevice, CoverEntity):
"""Representation of a Lutron shade.""" """Representation of a Lutron shade."""
@property _attr_supported_features = (
def supported_features(self): CoverEntityFeature.OPEN
"""Flag supported features.""" | CoverEntityFeature.CLOSE
return SUPPORT_OPEN | SUPPORT_CLOSE | SUPPORT_SET_POSITION | CoverEntityFeature.SET_POSITION
)
@property @property
def is_closed(self): def is_closed(self):

View File

@ -9,7 +9,11 @@ from aiolyric.objects.device import LyricDevice
from aiolyric.objects.location import LyricLocation from aiolyric.objects.location import LyricLocation
import voluptuous as vol 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 ( from homeassistant.components.climate.const import (
ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_HIGH,
ATTR_TARGET_TEMP_LOW, ATTR_TARGET_TEMP_LOW,
@ -21,9 +25,6 @@ from homeassistant.components.climate.const import (
HVAC_MODE_HEAT, HVAC_MODE_HEAT,
HVAC_MODE_HEAT_COOL, HVAC_MODE_HEAT_COOL,
HVAC_MODE_OFF, HVAC_MODE_OFF,
SUPPORT_PRESET_MODE,
SUPPORT_TARGET_TEMPERATURE,
SUPPORT_TARGET_TEMPERATURE_RANGE,
) )
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE from homeassistant.const import ATTR_TEMPERATURE
@ -49,9 +50,14 @@ _LOGGER = logging.getLogger(__name__)
# Only LCC models support presets # Only LCC models support presets
SUPPORT_FLAGS_LCC = ( 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_OFF = "EquipmentOff"
LYRIC_HVAC_ACTION_HEAT = "Heat" LYRIC_HVAC_ACTION_HEAT = "Heat"