Adjust type hints for MediaPlayerEntityFeature (#82258)

This commit is contained in:
epenet 2022-11-17 13:58:34 +01:00 committed by GitHub
parent 569e52c9ac
commit 18e30e7c06
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 36 additions and 30 deletions

View File

@ -775,7 +775,7 @@ class BluesoundPlayer(MediaPlayerEntity):
return None return None
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature | int:
"""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 0

View File

@ -899,7 +899,7 @@ class CastMediaPlayerEntity(CastDevice, MediaPlayerEntity):
return self._chromecast.app_display_name if self._chromecast else None return self._chromecast.app_display_name if self._chromecast else None
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
support = ( support = (
MediaPlayerEntityFeature.PLAY_MEDIA MediaPlayerEntityFeature.PLAY_MEDIA

View File

@ -245,7 +245,7 @@ class DenonDevice(MediaPlayerEntity):
return self._mediainfo return self._mediainfo
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
if self._mediasource in MEDIA_MODES.values(): if self._mediasource in MEDIA_MODES.values():
return SUPPORT_DENON | SUPPORT_MEDIA_MODES return SUPPORT_DENON | SUPPORT_MEDIA_MODES

View File

@ -277,7 +277,7 @@ class DenonDevice(MediaPlayerEntity):
return self._receiver.sound_mode return self._receiver.sound_mode
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
if self._receiver.input_func in self._receiver.netaudio_func_list: if self._receiver.input_func in self._receiver.netaudio_func_list:
return self._supported_features_base | SUPPORT_MEDIA_MODES return self._supported_features_base | SUPPORT_MEDIA_MODES

View File

@ -237,7 +237,7 @@ class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):
return self._program.channel return self._program.channel
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
return SUPPORT_DTV_CLIENT if self._is_client else SUPPORT_DTV return SUPPORT_DTV_CLIENT if self._is_client else SUPPORT_DTV

View File

@ -478,7 +478,7 @@ class DlnaDmrEntity(MediaPlayerEntity):
return MediaPlayerState.IDLE return MediaPlayerState.IDLE
@property @property
def supported_features(self) -> int: def supported_features(self) -> MediaPlayerEntityFeature | int:
"""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.

View File

@ -19,7 +19,7 @@ from .const import ATTR_MANUFACTURER, DEFAULT_NAME, DOMAIN
CONF_SOURCES: Final = "sources" CONF_SOURCES: Final = "sources"
DUNEHD_PLAYER_SUPPORT: Final[int] = ( DUNEHD_PLAYER_SUPPORT: Final[MediaPlayerEntityFeature] = (
MediaPlayerEntityFeature.PAUSE MediaPlayerEntityFeature.PAUSE
| MediaPlayerEntityFeature.TURN_ON | MediaPlayerEntityFeature.TURN_ON
| MediaPlayerEntityFeature.TURN_OFF | MediaPlayerEntityFeature.TURN_OFF
@ -105,7 +105,7 @@ class DuneHDPlayerEntity(MediaPlayerEntity):
return int(self._state.get("playback_mute", 0)) == 1 return int(self._state.get("playback_mute", 0)) == 1
@property @property
def supported_features(self) -> int: def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
return DUNEHD_PLAYER_SUPPORT return DUNEHD_PLAYER_SUPPORT

View File

@ -284,7 +284,7 @@ class EmbyDevice(MediaPlayerEntity):
return self.device.media_album_artist return self.device.media_album_artist
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature | int:
"""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

View File

@ -83,7 +83,7 @@ class EsphomeMediaPlayer(
return self._state.volume return self._state.volume
@property @property
def supported_features(self) -> int: def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag supported features.""" """Flag supported features."""
flags = ( flags = (
MediaPlayerEntityFeature.PLAY_MEDIA MediaPlayerEntityFeature.PLAY_MEDIA

View File

@ -17,6 +17,7 @@ from homeassistant.components.media_player import (
BrowseMedia, BrowseMedia,
MediaPlayerEnqueue, MediaPlayerEnqueue,
MediaPlayerEntity, MediaPlayerEntity,
MediaPlayerEntityFeature,
MediaPlayerState, MediaPlayerState,
MediaType, MediaType,
async_process_play_media_url, async_process_play_media_url,
@ -236,7 +237,7 @@ class ForkedDaapdZone(MediaPlayerEntity):
await self._api.set_volume(volume=volume * 100, output_id=self._output_id) await self._api.set_volume(volume=volume * 100, output_id=self._output_id)
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
return SUPPORTED_FEATURES_ZONE return SUPPORTED_FEATURES_ZONE
@ -558,7 +559,7 @@ class ForkedDaapdMaster(MediaPlayerEntity):
return self._player["shuffle"] return self._player["shuffle"]
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
return SUPPORTED_FEATURES return SUPPORTED_FEATURES

View File

@ -163,7 +163,7 @@ class CecPlayerEntity(CecEntity, MediaPlayerEntity):
_LOGGER.warning("Unknown state: %s", device.status) _LOGGER.warning("Unknown state: %s", device.status)
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
if self.type_id == TYPE_RECORDER or self.type == TYPE_PLAYBACK: if self.type_id == TYPE_RECORDER or self.type == TYPE_PLAYBACK:
return ( return (

View File

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

View File

@ -198,7 +198,7 @@ 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) -> int: def supported_features(self) -> MediaPlayerEntityFeature | int:
"""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)

View File

@ -197,7 +197,7 @@ class LgTVDevice(MediaPlayerEntity):
return self._program_name return self._program_name
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""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 | MediaPlayerEntityFeature.TURN_ON return SUPPORT_LGTV | MediaPlayerEntityFeature.TURN_ON

View File

@ -82,7 +82,6 @@ class LookinMedia(LookinPowerPushRemoteEntity, MediaPlayerEntity):
) -> None: ) -> None:
"""Init the lookin media player.""" """Init the lookin media player."""
self._attr_device_class = device_class self._attr_device_class = device_class
self._attr_supported_features: int = 0
super().__init__(coordinator, uuid, device, lookin_data) super().__init__(coordinator, uuid, device, lookin_data)
for function_name, feature in _FUNCTION_NAME_TO_FEATURE.items(): for function_name, feature in _FUNCTION_NAME_TO_FEATURE.items():
if function_name in self._function_names: if function_name in self._function_names:

View File

@ -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: int = 0 _attr_supported_features: MediaPlayerEntityFeature | int = 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) -> int: def supported_features(self) -> MediaPlayerEntityFeature | int:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
return self._attr_supported_features return self._attr_supported_features

View File

@ -338,7 +338,7 @@ class MpdDevice(MediaPlayerEntity):
return None return None
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature | int:
"""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 0

View File

@ -553,7 +553,7 @@ class OnkyoDeviceZone(OnkyoDevice):
) )
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Return media player features that are supported.""" """Return media player features that are supported."""
if self._supports_volume: if self._supports_volume:
return SUPPORT_ONKYO return SUPPORT_ONKYO

View File

@ -104,7 +104,7 @@ class PhilipsTVMediaPlayer(
await self.coordinator.async_request_refresh() await self.coordinator.async_request_refresh()
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
supports = self._supports supports = self._supports
if self.coordinator.turn_on or ( if self.coordinator.turn_on or (

View File

@ -389,7 +389,7 @@ class PlexMediaPlayer(MediaPlayerEntity):
return self.session.media_episode return self.session.media_episode
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
if self.device and "playback" in self._device_protocol_capabilities: if self.device and "playback" in self._device_protocol_capabilities:
return ( return (

View File

@ -453,9 +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): def supported_features(self) -> MediaPlayerEntityFeature | int:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
flags = self._child_attr(ATTR_SUPPORTED_FEATURES) or 0 flags: MediaPlayerEntityFeature | int = (
self._child_attr(ATTR_SUPPORTED_FEATURES) or 0
)
if SERVICE_TURN_ON in self._cmds: if SERVICE_TURN_ON in self._cmds:
flags |= MediaPlayerEntityFeature.TURN_ON flags |= MediaPlayerEntityFeature.TURN_ON

View File

@ -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: int = 0 self._supported_features: MediaPlayerEntityFeature | int = 0
self._update_states() self._update_states()
async def async_added_to_hass(self) -> None: async def async_added_to_hass(self) -> None:
@ -314,7 +314,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
await self._client.connect() await self._client.connect()
@property @property
def supported_features(self) -> int: def supported_features(self) -> MediaPlayerEntityFeature | int:
"""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

View File

@ -107,7 +107,7 @@ class XboxMediaPlayer(CoordinatorEntity[XboxUpdateCoordinator], MediaPlayerEntit
return XBOX_STATE_MAP[status.power_state] return XBOX_STATE_MAP[status.power_state]
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
if self.state not in [MediaPlayerState.PLAYING, MediaPlayerState.PAUSED]: if self.state not in [MediaPlayerState.PLAYING, MediaPlayerState.PAUSED]:
return ( return (

View File

@ -311,7 +311,7 @@ class YamahaDevice(MediaPlayerEntity):
return f"{self.receiver.ctrl_url}:{self._zone}" return f"{self.receiver.ctrl_url}:{self._zone}"
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
supported_features = SUPPORT_YAMAHA supported_features = SUPPORT_YAMAHA

View File

@ -424,7 +424,7 @@ class MusicCastMediaPlayer(MusicCastDeviceEntity, MediaPlayerEntity):
) )
@property @property
def supported_features(self): def supported_features(self) -> MediaPlayerEntityFeature:
"""Flag media player features that are supported.""" """Flag media player features that are supported."""
supported_features = MUSIC_PLAYER_BASE_SUPPORT supported_features = MUSIC_PLAYER_BASE_SUPPORT
zone = self.coordinator.data.zones[self._zone_id] zone = self.coordinator.data.zones[self._zone_id]

View File

@ -1788,6 +1788,10 @@ _INHERITANCE_MATCH: dict[str, list[ClassTypeHintMatch]] = {
function_name="group_members", function_name="group_members",
return_type=["list[str]", None], return_type=["list[str]", None],
), ),
TypeHintMatch(
function_name="supported_features",
return_type=["MediaPlayerEntityFeature", "int"],
),
TypeHintMatch( TypeHintMatch(
function_name="turn_on", function_name="turn_on",
return_type=None, return_type=None,