Enforce MediaPlayerEntityFeature (#82462)

This commit is contained in:
epenet 2022-11-22 07:15:37 +01:00 committed by GitHub
parent a225fc456f
commit 6f05a74686
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 26 additions and 24 deletions

View File

@ -775,10 +775,10 @@ class BluesoundPlayer(MediaPlayerEntity):
return None
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag of media commands that are supported."""
if self._status is None:
return 0
return MediaPlayerEntityFeature(0)
if self.is_grouped and not self.is_master:
return (

View File

@ -478,15 +478,15 @@ class DlnaDmrEntity(MediaPlayerEntity):
return MediaPlayerState.IDLE
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported at this moment.
Supported features may change as the device enters different states.
"""
if not self._device:
return 0
return MediaPlayerEntityFeature(0)
supported_features = 0
supported_features = MediaPlayerEntityFeature(0)
if self._device.has_volume_level:
supported_features |= MediaPlayerEntityFeature.VOLUME_SET

View File

@ -284,11 +284,11 @@ class EmbyDevice(MediaPlayerEntity):
return self.device.media_album_artist
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
if self.supports_remote_control:
return SUPPORT_EMBY
return 0
return MediaPlayerEntityFeature(0)
async def async_media_play(self) -> None:
"""Play media."""

View File

@ -405,7 +405,7 @@ class MediaPlayerGroup(MediaPlayerEntity):
else:
self._state = MediaPlayerState.OFF
supported_features = 0
supported_features = MediaPlayerEntityFeature(0)
if self._features[KEY_CLEAR_PLAYLIST]:
supported_features |= MediaPlayerEntityFeature.CLEAR_PLAYLIST
if self._features[KEY_TRACKS]:

View File

@ -80,9 +80,9 @@ class HomeKitTelevision(HomeKitEntity, MediaPlayerEntity):
]
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
features = 0
features = MediaPlayerEntityFeature(0)
if self.service.has(CharacteristicsTypes.ACTIVE_IDENTIFIER):
features |= MediaPlayerEntityFeature.SELECT_SOURCE

View File

@ -198,11 +198,11 @@ class JellyfinMediaPlayer(JellyfinEntity, MediaPlayerEntity):
return get_artwork_url(self.coordinator.api_client, self.now_playing, 150)
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
commands: list[str] = self.capabilities.get("SupportedCommands", [])
controllable = self.capabilities.get("SupportsMediaControl", False)
features = 0
features = MediaPlayerEntityFeature(0)
if controllable:
features |= (

View File

@ -492,7 +492,7 @@ class MediaPlayerEntity(Entity):
_attr_source_list: list[str] | None = None
_attr_source: 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
# Implement these for your media player
@ -692,7 +692,7 @@ class MediaPlayerEntity(Entity):
return self._attr_group_members
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
return self._attr_supported_features

View File

@ -338,10 +338,10 @@ class MpdDevice(MediaPlayerEntity):
return None
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
if self._status is None:
return 0
return MediaPlayerEntityFeature(0)
supported = SUPPORT_MPD
if "volume" in self._status:

View File

@ -453,11 +453,11 @@ class UniversalMediaPlayer(MediaPlayerEntity):
return self._override_or_child_attr(ATTR_MEDIA_SHUFFLE)
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
flags: MediaPlayerEntityFeature | int = (
self._child_attr(ATTR_SUPPORTED_FEATURES) or 0
)
flags: MediaPlayerEntityFeature = self._child_attr(
ATTR_SUPPORTED_FEATURES
) or MediaPlayerEntityFeature(0)
if SERVICE_TURN_ON in self._cmds:
flags |= MediaPlayerEntityFeature.TURN_ON

View File

@ -137,7 +137,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
self._current_source = None
self._source_list: dict = {}
self._supported_features: MediaPlayerEntityFeature | int = 0
self._supported_features = MediaPlayerEntityFeature(0)
self._update_states()
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
):
self._supported_features = (
state.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
state.attributes.get(
ATTR_SUPPORTED_FEATURES, MediaPlayerEntityFeature(0)
)
& ~MediaPlayerEntityFeature.TURN_ON
)
@ -314,7 +316,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
await self._client.connect()
@property
def supported_features(self) -> MediaPlayerEntityFeature | int:
def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported."""
if self._wrapper.turn_on:
return self._supported_features | MediaPlayerEntityFeature.TURN_ON

View File

@ -1790,7 +1790,7 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = {
),
TypeHintMatch(
function_name="supported_features",
return_type=["MediaPlayerEntityFeature", "int"],
return_type="MediaPlayerEntityFeature",
),
TypeHintMatch(
function_name="turn_on",