mirror of
https://github.com/home-assistant/core.git
synced 2025-07-12 15:57:06 +00:00
Use PEP 695 for dispatcher helper typing (#117685)
This commit is contained in:
parent
fe6df8db1e
commit
97a4101900
@ -5,7 +5,7 @@ from __future__ import annotations
|
|||||||
from collections.abc import Callable, Coroutine
|
from collections.abc import Callable, Coroutine
|
||||||
from functools import partial
|
from functools import partial
|
||||||
import logging
|
import logging
|
||||||
from typing import Any, TypeVarTuple, overload
|
from typing import Any, overload
|
||||||
|
|
||||||
from homeassistant.core import (
|
from homeassistant.core import (
|
||||||
HassJob,
|
HassJob,
|
||||||
@ -20,13 +20,11 @@ from homeassistant.util.logging import catch_log_exception
|
|||||||
# Explicit reexport of 'SignalType' for backwards compatibility
|
# Explicit reexport of 'SignalType' for backwards compatibility
|
||||||
from homeassistant.util.signal_type import SignalType as SignalType # noqa: PLC0414
|
from homeassistant.util.signal_type import SignalType as SignalType # noqa: PLC0414
|
||||||
|
|
||||||
_Ts = TypeVarTuple("_Ts")
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
DATA_DISPATCHER = "dispatcher"
|
DATA_DISPATCHER = "dispatcher"
|
||||||
|
|
||||||
|
|
||||||
_DispatcherDataType = dict[
|
type _DispatcherDataType[*_Ts] = dict[
|
||||||
SignalType[*_Ts] | str,
|
SignalType[*_Ts] | str,
|
||||||
dict[
|
dict[
|
||||||
Callable[[*_Ts], Any] | Callable[..., Any],
|
Callable[[*_Ts], Any] | Callable[..., Any],
|
||||||
@ -37,7 +35,7 @@ _DispatcherDataType = dict[
|
|||||||
|
|
||||||
@overload
|
@overload
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def dispatcher_connect(
|
def dispatcher_connect[*_Ts](
|
||||||
hass: HomeAssistant, signal: SignalType[*_Ts], target: Callable[[*_Ts], None]
|
hass: HomeAssistant, signal: SignalType[*_Ts], target: Callable[[*_Ts], None]
|
||||||
) -> Callable[[], None]: ...
|
) -> Callable[[], None]: ...
|
||||||
|
|
||||||
@ -50,7 +48,7 @@ def dispatcher_connect(
|
|||||||
|
|
||||||
|
|
||||||
@bind_hass # type: ignore[misc] # workaround; exclude typing of 2 overload in func def
|
@bind_hass # type: ignore[misc] # workaround; exclude typing of 2 overload in func def
|
||||||
def dispatcher_connect(
|
def dispatcher_connect[*_Ts](
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
signal: SignalType[*_Ts],
|
signal: SignalType[*_Ts],
|
||||||
target: Callable[[*_Ts], None],
|
target: Callable[[*_Ts], None],
|
||||||
@ -68,7 +66,7 @@ def dispatcher_connect(
|
|||||||
|
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_remove_dispatcher(
|
def _async_remove_dispatcher[*_Ts](
|
||||||
dispatchers: _DispatcherDataType[*_Ts],
|
dispatchers: _DispatcherDataType[*_Ts],
|
||||||
signal: SignalType[*_Ts] | str,
|
signal: SignalType[*_Ts] | str,
|
||||||
target: Callable[[*_Ts], Any] | Callable[..., Any],
|
target: Callable[[*_Ts], Any] | Callable[..., Any],
|
||||||
@ -90,7 +88,7 @@ def _async_remove_dispatcher(
|
|||||||
@overload
|
@overload
|
||||||
@callback
|
@callback
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_dispatcher_connect(
|
def async_dispatcher_connect[*_Ts](
|
||||||
hass: HomeAssistant, signal: SignalType[*_Ts], target: Callable[[*_Ts], Any]
|
hass: HomeAssistant, signal: SignalType[*_Ts], target: Callable[[*_Ts], Any]
|
||||||
) -> Callable[[], None]: ...
|
) -> Callable[[], None]: ...
|
||||||
|
|
||||||
@ -105,7 +103,7 @@ def async_dispatcher_connect(
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_dispatcher_connect(
|
def async_dispatcher_connect[*_Ts](
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
signal: SignalType[*_Ts] | str,
|
signal: SignalType[*_Ts] | str,
|
||||||
target: Callable[[*_Ts], Any] | Callable[..., Any],
|
target: Callable[[*_Ts], Any] | Callable[..., Any],
|
||||||
@ -132,7 +130,7 @@ def async_dispatcher_connect(
|
|||||||
|
|
||||||
@overload
|
@overload
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def dispatcher_send(
|
def dispatcher_send[*_Ts](
|
||||||
hass: HomeAssistant, signal: SignalType[*_Ts], *args: *_Ts
|
hass: HomeAssistant, signal: SignalType[*_Ts], *args: *_Ts
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
|
|
||||||
@ -143,12 +141,14 @@ def dispatcher_send(hass: HomeAssistant, signal: str, *args: Any) -> None: ...
|
|||||||
|
|
||||||
|
|
||||||
@bind_hass # type: ignore[misc] # workaround; exclude typing of 2 overload in func def
|
@bind_hass # type: ignore[misc] # workaround; exclude typing of 2 overload in func def
|
||||||
def dispatcher_send(hass: HomeAssistant, signal: SignalType[*_Ts], *args: *_Ts) -> None:
|
def dispatcher_send[*_Ts](
|
||||||
|
hass: HomeAssistant, signal: SignalType[*_Ts], *args: *_Ts
|
||||||
|
) -> None:
|
||||||
"""Send signal and data."""
|
"""Send signal and data."""
|
||||||
hass.loop.call_soon_threadsafe(async_dispatcher_send_internal, hass, signal, *args)
|
hass.loop.call_soon_threadsafe(async_dispatcher_send_internal, hass, signal, *args)
|
||||||
|
|
||||||
|
|
||||||
def _format_err(
|
def _format_err[*_Ts](
|
||||||
signal: SignalType[*_Ts] | str,
|
signal: SignalType[*_Ts] | str,
|
||||||
target: Callable[[*_Ts], Any] | Callable[..., Any],
|
target: Callable[[*_Ts], Any] | Callable[..., Any],
|
||||||
*args: Any,
|
*args: Any,
|
||||||
@ -162,7 +162,7 @@ def _format_err(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def _generate_job(
|
def _generate_job[*_Ts](
|
||||||
signal: SignalType[*_Ts] | str, target: Callable[[*_Ts], Any] | Callable[..., Any]
|
signal: SignalType[*_Ts] | str, target: Callable[[*_Ts], Any] | Callable[..., Any]
|
||||||
) -> HassJob[..., None | Coroutine[Any, Any, None]]:
|
) -> HassJob[..., None | Coroutine[Any, Any, None]]:
|
||||||
"""Generate a HassJob for a signal and target."""
|
"""Generate a HassJob for a signal and target."""
|
||||||
@ -179,7 +179,7 @@ def _generate_job(
|
|||||||
@overload
|
@overload
|
||||||
@callback
|
@callback
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_dispatcher_send(
|
def async_dispatcher_send[*_Ts](
|
||||||
hass: HomeAssistant, signal: SignalType[*_Ts], *args: *_Ts
|
hass: HomeAssistant, signal: SignalType[*_Ts], *args: *_Ts
|
||||||
) -> None: ...
|
) -> None: ...
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ def async_dispatcher_send(hass: HomeAssistant, signal: str, *args: Any) -> None:
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_dispatcher_send(
|
def async_dispatcher_send[*_Ts](
|
||||||
hass: HomeAssistant, signal: SignalType[*_Ts] | str, *args: *_Ts
|
hass: HomeAssistant, signal: SignalType[*_Ts] | str, *args: *_Ts
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Send signal and data.
|
"""Send signal and data.
|
||||||
@ -214,7 +214,7 @@ def async_dispatcher_send(
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_dispatcher_send_internal(
|
def async_dispatcher_send_internal[*_Ts](
|
||||||
hass: HomeAssistant, signal: SignalType[*_Ts] | str, *args: *_Ts
|
hass: HomeAssistant, signal: SignalType[*_Ts] | str, *args: *_Ts
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Send signal and data.
|
"""Send signal and data.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user