diff --git a/homeassistant/components/yamaha/media_player.py b/homeassistant/components/yamaha/media_player.py index bccb7b437f8d626b2648d7c7f98ed664b0abdaf1..c16433b3c378c3a4a609f33b5ba7e5f153586c40 100644 --- a/homeassistant/components/yamaha/media_player.py +++ b/homeassistant/components/yamaha/media_player.py @@ -7,6 +7,7 @@ from typing import Any import requests import rxv +from rxv import RXV import voluptuous as vol from homeassistant.components.media_player import ( @@ -112,7 +113,7 @@ class YamahaConfigInfo: self.from_discovery = True -def _discovery(config_info): +def _discovery(config_info: YamahaConfigInfo) -> list[RXV]: """Discover list of zone controllers from configuration in the network.""" if config_info.from_discovery: _LOGGER.debug("Discovery Zones") @@ -163,6 +164,7 @@ async def async_setup_platform( _LOGGER.debug("Ignore receiver zone: %s %s", config_info.name, zctrl.zone) continue + assert config_info.name entity = YamahaDeviceZone( config_info.name, zctrl, @@ -206,16 +208,24 @@ async def async_setup_platform( class YamahaDeviceZone(MediaPlayerEntity): """Representation of a Yamaha device zone.""" - def __init__(self, name, zctrl, source_ignore, source_names, zone_names): + _reverse_mapping: dict[str, str] + + def __init__( + self, + name: str, + zctrl: RXV, + source_ignore: list[str] | None, + source_names: dict[str, str] | None, + zone_names: dict[str, str] | None, + ) -> None: """Initialize the Yamaha Receiver.""" self.zctrl = zctrl self._attr_is_volume_muted = False self._attr_volume_level = 0 self._attr_state = MediaPlayerState.OFF - self._source_ignore = source_ignore or [] - self._source_names = source_names or {} - self._zone_names = zone_names or {} - self._reverse_mapping = None + self._source_ignore: list[str] = source_ignore or [] + self._source_names: dict[str, str] = source_names or {} + self._zone_names: dict[str, str] = zone_names or {} self._playback_support = None self._is_playback_supported = False self._play_status = None @@ -267,7 +277,7 @@ class YamahaDeviceZone(MediaPlayerEntity): self._attr_sound_mode = None self._attr_sound_mode_list = None - def build_source_list(self): + def build_source_list(self) -> None: """Build the source list.""" self._reverse_mapping = { alias: source for source, alias in self._source_names.items() @@ -280,7 +290,7 @@ class YamahaDeviceZone(MediaPlayerEntity): ) @property - def name(self): + def name(self) -> str: """Return the name of the device.""" name = self._name zone_name = self._zone_names.get(self._zone, self._zone) @@ -290,7 +300,7 @@ class YamahaDeviceZone(MediaPlayerEntity): return name @property - def zone_id(self): + def zone_id(self) -> str: """Return a zone_id to ensure 1 media player per zone.""" return f"{self.zctrl.ctrl_url}:{self._zone}" @@ -387,15 +397,15 @@ class YamahaDeviceZone(MediaPlayerEntity): if media_type == "NET RADIO": self.zctrl.net_radio(media_id) - def enable_output(self, port, enabled): + def enable_output(self, port: str, enabled: bool) -> None: """Enable or disable an output port..""" self.zctrl.enable_output(port, enabled) - def menu_cursor(self, cursor): + def menu_cursor(self, cursor: str) -> None: """Press a menu cursor button.""" getattr(self.zctrl, CURSOR_TYPE_MAP[cursor])() - def set_scene(self, scene): + def set_scene(self, scene: str) -> None: """Set the current scene.""" try: self.zctrl.scene = scene