mirror of
https://github.com/home-assistant/core.git
synced 2025-07-14 08:47:10 +00:00
Adjust type hints for MediaPlayerEntityFeature (#82258)
This commit is contained in:
parent
569e52c9ac
commit
18e30e7c06
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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 (
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 (
|
||||||
|
@ -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 (
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 (
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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]
|
||||||
|
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user