From 7649b5e6c91db6cadee5ec6ca25a3631ab5f5e51 Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Thu, 28 Apr 2022 21:05:22 +0200 Subject: [PATCH] Improve roku error decorator typing (#70992) --- homeassistant/components/roku/helpers.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/roku/helpers.py b/homeassistant/components/roku/helpers.py index d7e28066f90..f5a68f44ab8 100644 --- a/homeassistant/components/roku/helpers.py +++ b/homeassistant/components/roku/helpers.py @@ -13,7 +13,7 @@ from .entity import RokuEntity _LOGGER = logging.getLogger(__name__) -_T = TypeVar("_T", bound=RokuEntity) +_RokuEntityT = TypeVar("_RokuEntityT", bound=RokuEntity) _P = ParamSpec("_P") @@ -25,14 +25,21 @@ def format_channel_name(channel_number: str, channel_name: str | None = None) -> return channel_number -def roku_exception_handler(ignore_timeout: bool = False) -> Callable[..., Callable]: +def roku_exception_handler( + ignore_timeout: bool = False, +) -> Callable[ + [Callable[Concatenate[_RokuEntityT, _P], Awaitable[Any]]], + Callable[Concatenate[_RokuEntityT, _P], Coroutine[Any, Any, None]], +]: """Decorate Roku calls to handle Roku exceptions.""" def decorator( - func: Callable[Concatenate[_T, _P], Awaitable[None]], - ) -> Callable[Concatenate[_T, _P], Coroutine[Any, Any, None]]: + func: Callable[Concatenate[_RokuEntityT, _P], Awaitable[Any]], + ) -> Callable[Concatenate[_RokuEntityT, _P], Coroutine[Any, Any, None]]: @wraps(func) - async def wrapper(self: _T, *args: _P.args, **kwargs: _P.kwargs) -> None: + async def wrapper( + self: _RokuEntityT, *args: _P.args, **kwargs: _P.kwargs + ) -> None: try: await func(self, *args, **kwargs) except RokuConnectionTimeoutError as error: