Improve typing in Yamaha (#123982)

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
This commit is contained in:
Joost Lekkerkerker 2024-09-24 22:25:54 +02:00 committed by GitHub
parent 686d591f4f
commit 03968b44bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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