diff --git a/homeassistant/components/bluesound/media_player.py b/homeassistant/components/bluesound/media_player.py index f21276abbbe..7c23e76385a 100644 --- a/homeassistant/components/bluesound/media_player.py +++ b/homeassistant/components/bluesound/media_player.py @@ -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 ( diff --git a/homeassistant/components/dlna_dmr/media_player.py b/homeassistant/components/dlna_dmr/media_player.py index 00444cd8f1c..d2c61e9a318 100644 --- a/homeassistant/components/dlna_dmr/media_player.py +++ b/homeassistant/components/dlna_dmr/media_player.py @@ -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 diff --git a/homeassistant/components/emby/media_player.py b/homeassistant/components/emby/media_player.py index c03ae088a83..bc85b983d9d 100644 --- a/homeassistant/components/emby/media_player.py +++ b/homeassistant/components/emby/media_player.py @@ -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.""" diff --git a/homeassistant/components/group/media_player.py b/homeassistant/components/group/media_player.py index 2e46599aba1..e966016d63d 100644 --- a/homeassistant/components/group/media_player.py +++ b/homeassistant/components/group/media_player.py @@ -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]: diff --git a/homeassistant/components/homekit_controller/media_player.py b/homeassistant/components/homekit_controller/media_player.py index 04fad045cb5..1efa33429b1 100644 --- a/homeassistant/components/homekit_controller/media_player.py +++ b/homeassistant/components/homekit_controller/media_player.py @@ -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 diff --git a/homeassistant/components/jellyfin/media_player.py b/homeassistant/components/jellyfin/media_player.py index a05aada2152..60fae2caac7 100644 --- a/homeassistant/components/jellyfin/media_player.py +++ b/homeassistant/components/jellyfin/media_player.py @@ -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 |= ( diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 120a1128597..1f3204c3df1 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -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 diff --git a/homeassistant/components/mpd/media_player.py b/homeassistant/components/mpd/media_player.py index d54b9702686..fd783e0975b 100644 --- a/homeassistant/components/mpd/media_player.py +++ b/homeassistant/components/mpd/media_player.py @@ -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: diff --git a/homeassistant/components/universal/media_player.py b/homeassistant/components/universal/media_player.py index 450a0f6f3bf..3c6ba701f7d 100644 --- a/homeassistant/components/universal/media_player.py +++ b/homeassistant/components/universal/media_player.py @@ -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 diff --git a/homeassistant/components/webostv/media_player.py b/homeassistant/components/webostv/media_player.py index 41432d65489..07d49f703f7 100644 --- a/homeassistant/components/webostv/media_player.py +++ b/homeassistant/components/webostv/media_player.py @@ -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 diff --git a/pylint/plugins/hass_enforce_type_hints.py b/pylint/plugins/hass_enforce_type_hints.py index e2e889e71b3..75a34d4e3b2 100644 --- a/pylint/plugins/hass_enforce_type_hints.py +++ b/pylint/plugins/hass_enforce_type_hints.py @@ -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",