mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Improve decorator type annotations [matter] (#104822)
This commit is contained in:
parent
8e2f4a347c
commit
6ffc298986
@ -1,9 +1,9 @@
|
||||
"""Handle websocket api for Matter."""
|
||||
from __future__ import annotations
|
||||
|
||||
from collections.abc import Callable
|
||||
from collections.abc import Callable, Coroutine
|
||||
from functools import wraps
|
||||
from typing import Any
|
||||
from typing import Any, Concatenate, ParamSpec
|
||||
|
||||
from matter_server.common.errors import MatterError
|
||||
import voluptuous as vol
|
||||
@ -15,6 +15,8 @@ from homeassistant.core import HomeAssistant, callback
|
||||
from .adapter import MatterAdapter
|
||||
from .helpers import get_matter
|
||||
|
||||
_P = ParamSpec("_P")
|
||||
|
||||
ID = "id"
|
||||
TYPE = "type"
|
||||
|
||||
@ -28,12 +30,19 @@ def async_register_api(hass: HomeAssistant) -> None:
|
||||
websocket_api.async_register_command(hass, websocket_set_wifi_credentials)
|
||||
|
||||
|
||||
def async_get_matter_adapter(func: Callable) -> Callable:
|
||||
def async_get_matter_adapter(
|
||||
func: Callable[
|
||||
[HomeAssistant, ActiveConnection, dict[str, Any], MatterAdapter],
|
||||
Coroutine[Any, Any, None],
|
||||
],
|
||||
) -> Callable[
|
||||
[HomeAssistant, ActiveConnection, dict[str, Any]], Coroutine[Any, Any, None]
|
||||
]:
|
||||
"""Decorate function to get the MatterAdapter."""
|
||||
|
||||
@wraps(func)
|
||||
async def _get_matter(
|
||||
hass: HomeAssistant, connection: ActiveConnection, msg: dict
|
||||
hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]
|
||||
) -> None:
|
||||
"""Provide the Matter client to the function."""
|
||||
matter = get_matter(hass)
|
||||
@ -43,7 +52,15 @@ def async_get_matter_adapter(func: Callable) -> Callable:
|
||||
return _get_matter
|
||||
|
||||
|
||||
def async_handle_failed_command(func: Callable) -> Callable:
|
||||
def async_handle_failed_command(
|
||||
func: Callable[
|
||||
Concatenate[HomeAssistant, ActiveConnection, dict[str, Any], _P],
|
||||
Coroutine[Any, Any, None],
|
||||
],
|
||||
) -> Callable[
|
||||
Concatenate[HomeAssistant, ActiveConnection, dict[str, Any], _P],
|
||||
Coroutine[Any, Any, None],
|
||||
]:
|
||||
"""Decorate function to handle MatterError and send relevant error."""
|
||||
|
||||
@wraps(func)
|
||||
@ -51,8 +68,8 @@ def async_handle_failed_command(func: Callable) -> Callable:
|
||||
hass: HomeAssistant,
|
||||
connection: ActiveConnection,
|
||||
msg: dict[str, Any],
|
||||
*args: Any,
|
||||
**kwargs: Any,
|
||||
*args: _P.args,
|
||||
**kwargs: _P.kwargs,
|
||||
) -> None:
|
||||
"""Handle MatterError within function and send relevant error."""
|
||||
try:
|
||||
|
Loading…
x
Reference in New Issue
Block a user