Improve type hints in harmony (#76445)
This commit is contained in:
parent
8f0ade7a68
commit
7fc2a73c88
2 changed files with 24 additions and 23 deletions
|
@ -40,7 +40,7 @@ class HarmonyActivitySelect(HarmonyEntity, SelectEntity):
|
|||
self._attr_name = name
|
||||
|
||||
@property
|
||||
def icon(self):
|
||||
def icon(self) -> str:
|
||||
"""Return a representative icon."""
|
||||
if not self.available or self.current_option == ACTIVITY_POWER_OFF:
|
||||
return "mdi:remote-tv-off"
|
||||
|
@ -52,7 +52,7 @@ class HarmonyActivitySelect(HarmonyEntity, SelectEntity):
|
|||
return [ACTIVITY_POWER_OFF] + sorted(self._data.activity_names)
|
||||
|
||||
@property
|
||||
def current_option(self):
|
||||
def current_option(self) -> str | None:
|
||||
"""Return the current activity."""
|
||||
_, activity_name = self._data.current_activity
|
||||
return activity_name
|
||||
|
@ -61,18 +61,19 @@ class HarmonyActivitySelect(HarmonyEntity, SelectEntity):
|
|||
"""Change the current activity."""
|
||||
await self._data.async_start_activity(option)
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
async def async_added_to_hass(self) -> None:
|
||||
"""Call when entity is added to hass."""
|
||||
|
||||
callbacks = {
|
||||
"connected": self.async_got_connected,
|
||||
"disconnected": self.async_got_disconnected,
|
||||
"activity_starting": self._async_activity_update,
|
||||
"activity_started": self._async_activity_update,
|
||||
"config_updated": None,
|
||||
}
|
||||
|
||||
self.async_on_remove(self._data.async_subscribe(HarmonyCallback(**callbacks)))
|
||||
self.async_on_remove(
|
||||
self._data.async_subscribe(
|
||||
HarmonyCallback(
|
||||
connected=self.async_got_connected,
|
||||
disconnected=self.async_got_disconnected,
|
||||
activity_starting=self._async_activity_update,
|
||||
activity_started=self._async_activity_update,
|
||||
config_updated=None,
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@callback
|
||||
def _async_activity_update(self, activity_info: tuple):
|
||||
|
|
|
@ -7,12 +7,12 @@ import logging
|
|||
# https://bugs.python.org/issue42965
|
||||
from typing import Any, Callable, NamedTuple, Optional
|
||||
|
||||
from homeassistant.core import callback
|
||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
NoParamCallback = Optional[Callable[[object], Any]]
|
||||
ActivityCallback = Optional[Callable[[object, tuple], Any]]
|
||||
NoParamCallback = Optional[Callable[[], Any]]
|
||||
ActivityCallback = Optional[Callable[[tuple], Any]]
|
||||
|
||||
|
||||
class HarmonyCallback(NamedTuple):
|
||||
|
@ -28,11 +28,11 @@ class HarmonyCallback(NamedTuple):
|
|||
class HarmonySubscriberMixin:
|
||||
"""Base implementation for a subscriber."""
|
||||
|
||||
def __init__(self, hass):
|
||||
def __init__(self, hass: HomeAssistant) -> None:
|
||||
"""Initialize an subscriber."""
|
||||
super().__init__()
|
||||
self._hass = hass
|
||||
self._subscriptions = []
|
||||
self._subscriptions: list[HarmonyCallback] = []
|
||||
self._activity_lock = asyncio.Lock()
|
||||
|
||||
async def async_lock_start_activity(self):
|
||||
|
@ -40,23 +40,23 @@ class HarmonySubscriberMixin:
|
|||
await self._activity_lock.acquire()
|
||||
|
||||
@callback
|
||||
def async_unlock_start_activity(self):
|
||||
def async_unlock_start_activity(self) -> None:
|
||||
"""Release the lock."""
|
||||
if self._activity_lock.locked():
|
||||
self._activity_lock.release()
|
||||
|
||||
@callback
|
||||
def async_subscribe(self, update_callbacks: HarmonyCallback) -> Callable:
|
||||
def async_subscribe(self, update_callbacks: HarmonyCallback) -> CALLBACK_TYPE:
|
||||
"""Add a callback subscriber."""
|
||||
self._subscriptions.append(update_callbacks)
|
||||
|
||||
def _unsubscribe():
|
||||
def _unsubscribe() -> None:
|
||||
self.async_unsubscribe(update_callbacks)
|
||||
|
||||
return _unsubscribe
|
||||
|
||||
@callback
|
||||
def async_unsubscribe(self, update_callback: HarmonyCallback):
|
||||
def async_unsubscribe(self, update_callback: HarmonyCallback) -> None:
|
||||
"""Remove a callback subscriber."""
|
||||
self._subscriptions.remove(update_callback)
|
||||
|
||||
|
@ -85,7 +85,7 @@ class HarmonySubscriberMixin:
|
|||
self.async_unlock_start_activity()
|
||||
self._call_callbacks("activity_started", activity_info)
|
||||
|
||||
def _call_callbacks(self, callback_func_name: str, argument: tuple = None):
|
||||
def _call_callbacks(self, callback_func_name: str, argument: tuple = None) -> None:
|
||||
for subscription in self._subscriptions:
|
||||
current_callback = getattr(subscription, callback_func_name)
|
||||
if current_callback:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue