mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Enforce MediaPlayerEntityFeature (#82462)
This commit is contained in:
parent
a225fc456f
commit
6f05a74686
@ -775,10 +775,10 @@ class BluesoundPlayer(MediaPlayerEntity):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag of media commands that are supported."""
|
"""Flag of media commands that are supported."""
|
||||||
if self._status is None:
|
if self._status is None:
|
||||||
return 0
|
return MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
if self.is_grouped and not self.is_master:
|
if self.is_grouped and not self.is_master:
|
||||||
return (
|
return (
|
||||||
|
@ -478,15 +478,15 @@ class DlnaDmrEntity(MediaPlayerEntity):
|
|||||||
return MediaPlayerState.IDLE
|
return MediaPlayerState.IDLE
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported at this moment.
|
"""Flag media player features that are supported at this moment.
|
||||||
|
|
||||||
Supported features may change as the device enters different states.
|
Supported features may change as the device enters different states.
|
||||||
"""
|
"""
|
||||||
if not self._device:
|
if not self._device:
|
||||||
return 0
|
return MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
supported_features = 0
|
supported_features = MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
if self._device.has_volume_level:
|
if self._device.has_volume_level:
|
||||||
supported_features |= MediaPlayerEntityFeature.VOLUME_SET
|
supported_features |= MediaPlayerEntityFeature.VOLUME_SET
|
||||||
|
@ -284,11 +284,11 @@ class EmbyDevice(MediaPlayerEntity):
|
|||||||
return self.device.media_album_artist
|
return self.device.media_album_artist
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
if self.supports_remote_control:
|
if self.supports_remote_control:
|
||||||
return SUPPORT_EMBY
|
return SUPPORT_EMBY
|
||||||
return 0
|
return MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
async def async_media_play(self) -> None:
|
async def async_media_play(self) -> None:
|
||||||
"""Play media."""
|
"""Play media."""
|
||||||
|
@ -405,7 +405,7 @@ class MediaPlayerGroup(MediaPlayerEntity):
|
|||||||
else:
|
else:
|
||||||
self._state = MediaPlayerState.OFF
|
self._state = MediaPlayerState.OFF
|
||||||
|
|
||||||
supported_features = 0
|
supported_features = MediaPlayerEntityFeature(0)
|
||||||
if self._features[KEY_CLEAR_PLAYLIST]:
|
if self._features[KEY_CLEAR_PLAYLIST]:
|
||||||
supported_features |= MediaPlayerEntityFeature.CLEAR_PLAYLIST
|
supported_features |= MediaPlayerEntityFeature.CLEAR_PLAYLIST
|
||||||
if self._features[KEY_TRACKS]:
|
if self._features[KEY_TRACKS]:
|
||||||
|
@ -80,9 +80,9 @@ class HomeKitTelevision(HomeKitEntity, MediaPlayerEntity):
|
|||||||
]
|
]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
features = 0
|
features = MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
if self.service.has(CharacteristicsTypes.ACTIVE_IDENTIFIER):
|
if self.service.has(CharacteristicsTypes.ACTIVE_IDENTIFIER):
|
||||||
features |= MediaPlayerEntityFeature.SELECT_SOURCE
|
features |= MediaPlayerEntityFeature.SELECT_SOURCE
|
||||||
|
@ -198,11 +198,11 @@ class JellyfinMediaPlayer(JellyfinEntity, MediaPlayerEntity):
|
|||||||
return get_artwork_url(self.coordinator.api_client, self.now_playing, 150)
|
return get_artwork_url(self.coordinator.api_client, self.now_playing, 150)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
commands: list[str] = self.capabilities.get("SupportedCommands", [])
|
commands: list[str] = self.capabilities.get("SupportedCommands", [])
|
||||||
controllable = self.capabilities.get("SupportsMediaControl", False)
|
controllable = self.capabilities.get("SupportsMediaControl", False)
|
||||||
features = 0
|
features = MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
if controllable:
|
if controllable:
|
||||||
features |= (
|
features |= (
|
||||||
|
@ -492,7 +492,7 @@ class MediaPlayerEntity(Entity):
|
|||||||
_attr_source_list: list[str] | None = None
|
_attr_source_list: list[str] | None = None
|
||||||
_attr_source: str | None = None
|
_attr_source: str | None = None
|
||||||
_attr_state: MediaPlayerState | str | None = None
|
_attr_state: MediaPlayerState | str | None = None
|
||||||
_attr_supported_features: MediaPlayerEntityFeature | int = 0
|
_attr_supported_features: MediaPlayerEntityFeature = MediaPlayerEntityFeature(0)
|
||||||
_attr_volume_level: float | None = None
|
_attr_volume_level: float | None = None
|
||||||
|
|
||||||
# Implement these for your media player
|
# Implement these for your media player
|
||||||
@ -692,7 +692,7 @@ class MediaPlayerEntity(Entity):
|
|||||||
return self._attr_group_members
|
return self._attr_group_members
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
return self._attr_supported_features
|
return self._attr_supported_features
|
||||||
|
|
||||||
|
@ -338,10 +338,10 @@ class MpdDevice(MediaPlayerEntity):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
if self._status is None:
|
if self._status is None:
|
||||||
return 0
|
return MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
supported = SUPPORT_MPD
|
supported = SUPPORT_MPD
|
||||||
if "volume" in self._status:
|
if "volume" in self._status:
|
||||||
|
@ -453,11 +453,11 @@ class UniversalMediaPlayer(MediaPlayerEntity):
|
|||||||
return self._override_or_child_attr(ATTR_MEDIA_SHUFFLE)
|
return self._override_or_child_attr(ATTR_MEDIA_SHUFFLE)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
flags: MediaPlayerEntityFeature | int = (
|
flags: MediaPlayerEntityFeature = self._child_attr(
|
||||||
self._child_attr(ATTR_SUPPORTED_FEATURES) or 0
|
ATTR_SUPPORTED_FEATURES
|
||||||
)
|
) or MediaPlayerEntityFeature(0)
|
||||||
|
|
||||||
if SERVICE_TURN_ON in self._cmds:
|
if SERVICE_TURN_ON in self._cmds:
|
||||||
flags |= MediaPlayerEntityFeature.TURN_ON
|
flags |= MediaPlayerEntityFeature.TURN_ON
|
||||||
|
@ -137,7 +137,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||||||
self._current_source = None
|
self._current_source = None
|
||||||
self._source_list: dict = {}
|
self._source_list: dict = {}
|
||||||
|
|
||||||
self._supported_features: MediaPlayerEntityFeature | int = 0
|
self._supported_features = MediaPlayerEntityFeature(0)
|
||||||
self._update_states()
|
self._update_states()
|
||||||
|
|
||||||
async def async_added_to_hass(self) -> None:
|
async def async_added_to_hass(self) -> None:
|
||||||
@ -157,7 +157,9 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||||||
and (state := await self.async_get_last_state()) is not None
|
and (state := await self.async_get_last_state()) is not None
|
||||||
):
|
):
|
||||||
self._supported_features = (
|
self._supported_features = (
|
||||||
state.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
|
state.attributes.get(
|
||||||
|
ATTR_SUPPORTED_FEATURES, MediaPlayerEntityFeature(0)
|
||||||
|
)
|
||||||
& ~MediaPlayerEntityFeature.TURN_ON
|
& ~MediaPlayerEntityFeature.TURN_ON
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -314,7 +316,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||||||
await self._client.connect()
|
await self._client.connect()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def supported_features(self) -> MediaPlayerEntityFeature | int:
|
def supported_features(self) -> MediaPlayerEntityFeature:
|
||||||
"""Flag media player features that are supported."""
|
"""Flag media player features that are supported."""
|
||||||
if self._wrapper.turn_on:
|
if self._wrapper.turn_on:
|
||||||
return self._supported_features | MediaPlayerEntityFeature.TURN_ON
|
return self._supported_features | MediaPlayerEntityFeature.TURN_ON
|
||||||
|
@ -1790,7 +1790,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = {
|
|||||||
),
|
),
|
||||||
TypeHintMatch(
|
TypeHintMatch(
|
||||||
function_name="supported_features",
|
function_name="supported_features",
|
||||||
return_type=["MediaPlayerEntityFeature", "int"],
|
return_type="MediaPlayerEntityFeature",
|
||||||
),
|
),
|
||||||
TypeHintMatch(
|
TypeHintMatch(
|
||||||
function_name="turn_on",
|
function_name="turn_on",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user