mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Replace EventType with Event [helpers] (#112743)
This commit is contained in:
parent
3db28d46b2
commit
b026b5d589
@ -47,6 +47,7 @@ from homeassistant.const import (
|
|||||||
from homeassistant.core import (
|
from homeassistant.core import (
|
||||||
CALLBACK_TYPE,
|
CALLBACK_TYPE,
|
||||||
Context,
|
Context,
|
||||||
|
Event,
|
||||||
HassJobType,
|
HassJobType,
|
||||||
HomeAssistant,
|
HomeAssistant,
|
||||||
callback,
|
callback,
|
||||||
@ -1519,7 +1520,7 @@ class Entity(
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _async_device_registry_updated(
|
def _async_device_registry_updated(
|
||||||
self, event: EventType[EventDeviceRegistryUpdatedData]
|
self, event: Event[EventDeviceRegistryUpdatedData]
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Handle device registry update."""
|
"""Handle device registry update."""
|
||||||
data = event.data
|
data = event.data
|
||||||
|
@ -32,6 +32,7 @@ from homeassistant.const import (
|
|||||||
)
|
)
|
||||||
from homeassistant.core import (
|
from homeassistant.core import (
|
||||||
CALLBACK_TYPE,
|
CALLBACK_TYPE,
|
||||||
|
Event,
|
||||||
HassJob,
|
HassJob,
|
||||||
HassJobType,
|
HassJobType,
|
||||||
HomeAssistant,
|
HomeAssistant,
|
||||||
@ -55,7 +56,7 @@ from .entity_registry import (
|
|||||||
from .ratelimit import KeyedRateLimit
|
from .ratelimit import KeyedRateLimit
|
||||||
from .sun import get_astral_event_next
|
from .sun import get_astral_event_next
|
||||||
from .template import RenderInfo, Template, result_as_boolean
|
from .template import RenderInfo, Template, result_as_boolean
|
||||||
from .typing import EventType, TemplateVarsType
|
from .typing import TemplateVarsType
|
||||||
|
|
||||||
TRACK_STATE_CHANGE_CALLBACKS = "track_state_change_callbacks"
|
TRACK_STATE_CHANGE_CALLBACKS = "track_state_change_callbacks"
|
||||||
TRACK_STATE_CHANGE_LISTENER = "track_state_change_listener"
|
TRACK_STATE_CHANGE_LISTENER = "track_state_change_listener"
|
||||||
@ -99,16 +100,16 @@ class _KeyedEventTracker(Generic[_TypedDictT]):
|
|||||||
dispatcher_callable: Callable[
|
dispatcher_callable: Callable[
|
||||||
[
|
[
|
||||||
HomeAssistant,
|
HomeAssistant,
|
||||||
dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]],
|
dict[str, list[HassJob[[Event[_TypedDictT]], Any]]],
|
||||||
EventType[_TypedDictT],
|
Event[_TypedDictT],
|
||||||
],
|
],
|
||||||
None,
|
None,
|
||||||
]
|
]
|
||||||
filter_callable: Callable[
|
filter_callable: Callable[
|
||||||
[
|
[
|
||||||
HomeAssistant,
|
HomeAssistant,
|
||||||
dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]],
|
dict[str, list[HassJob[[Event[_TypedDictT]], Any]]],
|
||||||
EventType[_TypedDictT],
|
Event[_TypedDictT],
|
||||||
],
|
],
|
||||||
bool,
|
bool,
|
||||||
]
|
]
|
||||||
@ -236,7 +237,7 @@ def async_track_state_change(
|
|||||||
job = HassJob(action, f"track state change {entity_ids} {from_state} {to_state}")
|
job = HassJob(action, f"track state change {entity_ids} {from_state} {to_state}")
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def state_change_filter(event: EventType[EventStateChangedData]) -> bool:
|
def state_change_filter(event: Event[EventStateChangedData]) -> bool:
|
||||||
"""Handle specific state changes."""
|
"""Handle specific state changes."""
|
||||||
if from_state is not None:
|
if from_state is not None:
|
||||||
old_state_str: str | None = None
|
old_state_str: str | None = None
|
||||||
@ -257,7 +258,7 @@ def async_track_state_change(
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def state_change_dispatcher(event: EventType[EventStateChangedData]) -> None:
|
def state_change_dispatcher(event: Event[EventStateChangedData]) -> None:
|
||||||
"""Handle specific state changes."""
|
"""Handle specific state changes."""
|
||||||
hass.async_run_hass_job(
|
hass.async_run_hass_job(
|
||||||
job,
|
job,
|
||||||
@ -267,7 +268,7 @@ def async_track_state_change(
|
|||||||
)
|
)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def state_change_listener(event: EventType[EventStateChangedData]) -> None:
|
def state_change_listener(event: Event[EventStateChangedData]) -> None:
|
||||||
"""Handle specific state changes."""
|
"""Handle specific state changes."""
|
||||||
if not state_change_filter(event):
|
if not state_change_filter(event):
|
||||||
return
|
return
|
||||||
@ -299,7 +300,7 @@ track_state_change = threaded_listener_factory(async_track_state_change)
|
|||||||
def async_track_state_change_event(
|
def async_track_state_change_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entity_ids: str | Iterable[str],
|
entity_ids: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
job_type: HassJobType | None = None,
|
job_type: HassJobType | None = None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track specific state change events indexed by entity_id.
|
"""Track specific state change events indexed by entity_id.
|
||||||
@ -321,8 +322,8 @@ def async_track_state_change_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_dispatch_entity_id_event(
|
def _async_dispatch_entity_id_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]],
|
callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]],
|
||||||
event: EventType[EventStateChangedData],
|
event: Event[EventStateChangedData],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Dispatch to listeners."""
|
"""Dispatch to listeners."""
|
||||||
if not (callbacks_list := callbacks.get(event.data["entity_id"])):
|
if not (callbacks_list := callbacks.get(event.data["entity_id"])):
|
||||||
@ -341,8 +342,8 @@ def _async_dispatch_entity_id_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_state_change_filter(
|
def _async_state_change_filter(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]],
|
callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]],
|
||||||
event: EventType[EventStateChangedData],
|
event: Event[EventStateChangedData],
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Filter state changes by entity_id."""
|
"""Filter state changes by entity_id."""
|
||||||
return event.data["entity_id"] in callbacks
|
return event.data["entity_id"] in callbacks
|
||||||
@ -362,7 +363,7 @@ _KEYED_TRACK_STATE_CHANGE = _KeyedEventTracker(
|
|||||||
def _async_track_state_change_event(
|
def _async_track_state_change_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entity_ids: str | Iterable[str],
|
entity_ids: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
job_type: HassJobType | None,
|
job_type: HassJobType | None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""async_track_state_change_event without lowercasing."""
|
"""async_track_state_change_event without lowercasing."""
|
||||||
@ -381,8 +382,8 @@ def _remove_listener(
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
listeners_key: str,
|
listeners_key: str,
|
||||||
keys: Iterable[str],
|
keys: Iterable[str],
|
||||||
job: HassJob[[EventType[_TypedDictT]], Any],
|
job: HassJob[[Event[_TypedDictT]], Any],
|
||||||
callbacks: dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]],
|
callbacks: dict[str, list[HassJob[[Event[_TypedDictT]], Any]]],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Remove listener."""
|
"""Remove listener."""
|
||||||
for key in keys:
|
for key in keys:
|
||||||
@ -401,7 +402,7 @@ def _async_track_event(
|
|||||||
tracker: _KeyedEventTracker[_TypedDictT],
|
tracker: _KeyedEventTracker[_TypedDictT],
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
keys: str | Iterable[str],
|
keys: str | Iterable[str],
|
||||||
action: Callable[[EventType[_TypedDictT]], None],
|
action: Callable[[Event[_TypedDictT]], None],
|
||||||
job_type: HassJobType | None,
|
job_type: HassJobType | None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track an event by a specific key.
|
"""Track an event by a specific key.
|
||||||
@ -421,7 +422,7 @@ def _async_track_event(
|
|||||||
hass_data = hass.data
|
hass_data = hass.data
|
||||||
callbacks_key = tracker.callbacks_key
|
callbacks_key = tracker.callbacks_key
|
||||||
|
|
||||||
callbacks: dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]] | None
|
callbacks: dict[str, list[HassJob[[Event[_TypedDictT]], Any]]] | None
|
||||||
if not (callbacks := hass_data.get(callbacks_key)):
|
if not (callbacks := hass_data.get(callbacks_key)):
|
||||||
callbacks = hass_data[callbacks_key] = {}
|
callbacks = hass_data[callbacks_key] = {}
|
||||||
|
|
||||||
@ -449,10 +450,8 @@ def _async_track_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_dispatch_old_entity_id_or_entity_id_event(
|
def _async_dispatch_old_entity_id_or_entity_id_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[
|
callbacks: dict[str, list[HassJob[[Event[EventEntityRegistryUpdatedData]], Any]]],
|
||||||
str, list[HassJob[[EventType[EventEntityRegistryUpdatedData]], Any]]
|
event: Event[EventEntityRegistryUpdatedData],
|
||||||
],
|
|
||||||
event: EventType[EventEntityRegistryUpdatedData],
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Dispatch to listeners."""
|
"""Dispatch to listeners."""
|
||||||
if not (
|
if not (
|
||||||
@ -475,10 +474,8 @@ def _async_dispatch_old_entity_id_or_entity_id_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_entity_registry_updated_filter(
|
def _async_entity_registry_updated_filter(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[
|
callbacks: dict[str, list[HassJob[[Event[EventEntityRegistryUpdatedData]], Any]]],
|
||||||
str, list[HassJob[[EventType[EventEntityRegistryUpdatedData]], Any]]
|
event: Event[EventEntityRegistryUpdatedData],
|
||||||
],
|
|
||||||
event: EventType[EventEntityRegistryUpdatedData],
|
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Filter entity registry updates by entity_id."""
|
"""Filter entity registry updates by entity_id."""
|
||||||
return event.data.get("old_entity_id", event.data["entity_id"]) in callbacks
|
return event.data.get("old_entity_id", event.data["entity_id"]) in callbacks
|
||||||
@ -499,7 +496,7 @@ _KEYED_TRACK_ENTITY_REGISTRY_UPDATED = _KeyedEventTracker(
|
|||||||
def async_track_entity_registry_updated_event(
|
def async_track_entity_registry_updated_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entity_ids: str | Iterable[str],
|
entity_ids: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventEntityRegistryUpdatedData]], Any],
|
action: Callable[[Event[EventEntityRegistryUpdatedData]], Any],
|
||||||
job_type: HassJobType | None = None,
|
job_type: HassJobType | None = None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track specific entity registry updated events indexed by entity_id.
|
"""Track specific entity registry updated events indexed by entity_id.
|
||||||
@ -516,10 +513,8 @@ def async_track_entity_registry_updated_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_device_registry_updated_filter(
|
def _async_device_registry_updated_filter(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[
|
callbacks: dict[str, list[HassJob[[Event[EventDeviceRegistryUpdatedData]], Any]]],
|
||||||
str, list[HassJob[[EventType[EventDeviceRegistryUpdatedData]], Any]]
|
event: Event[EventDeviceRegistryUpdatedData],
|
||||||
],
|
|
||||||
event: EventType[EventDeviceRegistryUpdatedData],
|
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Filter device registry updates by device_id."""
|
"""Filter device registry updates by device_id."""
|
||||||
return event.data["device_id"] in callbacks
|
return event.data["device_id"] in callbacks
|
||||||
@ -528,10 +523,8 @@ def _async_device_registry_updated_filter(
|
|||||||
@callback
|
@callback
|
||||||
def _async_dispatch_device_id_event(
|
def _async_dispatch_device_id_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[
|
callbacks: dict[str, list[HassJob[[Event[EventDeviceRegistryUpdatedData]], Any]]],
|
||||||
str, list[HassJob[[EventType[EventDeviceRegistryUpdatedData]], Any]]
|
event: Event[EventDeviceRegistryUpdatedData],
|
||||||
],
|
|
||||||
event: EventType[EventDeviceRegistryUpdatedData],
|
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Dispatch to listeners."""
|
"""Dispatch to listeners."""
|
||||||
if not (callbacks_list := callbacks.get(event.data["device_id"])):
|
if not (callbacks_list := callbacks.get(event.data["device_id"])):
|
||||||
@ -561,7 +554,7 @@ _KEYED_TRACK_DEVICE_REGISTRY_UPDATED = _KeyedEventTracker(
|
|||||||
def async_track_device_registry_updated_event(
|
def async_track_device_registry_updated_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
device_ids: str | Iterable[str],
|
device_ids: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventDeviceRegistryUpdatedData]], Any],
|
action: Callable[[Event[EventDeviceRegistryUpdatedData]], Any],
|
||||||
job_type: HassJobType | None = None,
|
job_type: HassJobType | None = None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track specific device registry updated events indexed by device_id.
|
"""Track specific device registry updated events indexed by device_id.
|
||||||
@ -576,8 +569,8 @@ def async_track_device_registry_updated_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_dispatch_domain_event(
|
def _async_dispatch_domain_event(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]],
|
callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]],
|
||||||
event: EventType[EventStateChangedData],
|
event: Event[EventStateChangedData],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Dispatch domain event listeners."""
|
"""Dispatch domain event listeners."""
|
||||||
domain = split_entity_id(event.data["entity_id"])[0]
|
domain = split_entity_id(event.data["entity_id"])[0]
|
||||||
@ -593,8 +586,8 @@ def _async_dispatch_domain_event(
|
|||||||
@callback
|
@callback
|
||||||
def _async_domain_added_filter(
|
def _async_domain_added_filter(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]],
|
callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]],
|
||||||
event: EventType[EventStateChangedData],
|
event: Event[EventStateChangedData],
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Filter state changes by entity_id."""
|
"""Filter state changes by entity_id."""
|
||||||
return event.data["old_state"] is None and (
|
return event.data["old_state"] is None and (
|
||||||
@ -607,7 +600,7 @@ def _async_domain_added_filter(
|
|||||||
def async_track_state_added_domain(
|
def async_track_state_added_domain(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
domains: str | Iterable[str],
|
domains: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
job_type: HassJobType | None = None,
|
job_type: HassJobType | None = None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track state change events when an entity is added to domains."""
|
"""Track state change events when an entity is added to domains."""
|
||||||
@ -630,7 +623,7 @@ _KEYED_TRACK_STATE_ADDED_DOMAIN = _KeyedEventTracker(
|
|||||||
def _async_track_state_added_domain(
|
def _async_track_state_added_domain(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
domains: str | Iterable[str],
|
domains: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
job_type: HassJobType | None,
|
job_type: HassJobType | None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track state change events when an entity is added to domains."""
|
"""Track state change events when an entity is added to domains."""
|
||||||
@ -642,8 +635,8 @@ def _async_track_state_added_domain(
|
|||||||
@callback
|
@callback
|
||||||
def _async_domain_removed_filter(
|
def _async_domain_removed_filter(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]],
|
callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]],
|
||||||
event: EventType[EventStateChangedData],
|
event: Event[EventStateChangedData],
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Filter state changes by entity_id."""
|
"""Filter state changes by entity_id."""
|
||||||
return event.data["new_state"] is None and (
|
return event.data["new_state"] is None and (
|
||||||
@ -666,7 +659,7 @@ _KEYED_TRACK_STATE_REMOVED_DOMAIN = _KeyedEventTracker(
|
|||||||
def async_track_state_removed_domain(
|
def async_track_state_removed_domain(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
domains: str | Iterable[str],
|
domains: str | Iterable[str],
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
job_type: HassJobType | None = None,
|
job_type: HassJobType | None = None,
|
||||||
) -> CALLBACK_TYPE:
|
) -> CALLBACK_TYPE:
|
||||||
"""Track state change events when an entity is removed from domains."""
|
"""Track state change events when an entity is removed from domains."""
|
||||||
@ -690,7 +683,7 @@ class _TrackStateChangeFiltered:
|
|||||||
self,
|
self,
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
track_states: TrackStates,
|
track_states: TrackStates,
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Handle removal / refresh of tracker init."""
|
"""Handle removal / refresh of tracker init."""
|
||||||
self.hass = hass
|
self.hass = hass
|
||||||
@ -794,7 +787,7 @@ class _TrackStateChangeFiltered:
|
|||||||
)
|
)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _state_added(self, event: EventType[EventStateChangedData]) -> None:
|
def _state_added(self, event: Event[EventStateChangedData]) -> None:
|
||||||
self._cancel_listener(_ENTITIES_LISTENER)
|
self._cancel_listener(_ENTITIES_LISTENER)
|
||||||
self._setup_entities_listener(
|
self._setup_entities_listener(
|
||||||
self._last_track_states.domains, self._last_track_states.entities
|
self._last_track_states.domains, self._last_track_states.entities
|
||||||
@ -823,7 +816,7 @@ class _TrackStateChangeFiltered:
|
|||||||
def async_track_state_change_filtered(
|
def async_track_state_change_filtered(
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
track_states: TrackStates,
|
track_states: TrackStates,
|
||||||
action: Callable[[EventType[EventStateChangedData]], Any],
|
action: Callable[[Event[EventStateChangedData]], Any],
|
||||||
) -> _TrackStateChangeFiltered:
|
) -> _TrackStateChangeFiltered:
|
||||||
"""Track state changes with a TrackStates filter that can be updated.
|
"""Track state changes with a TrackStates filter that can be updated.
|
||||||
|
|
||||||
@ -897,7 +890,7 @@ def async_track_template(
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _template_changed_listener(
|
def _template_changed_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Check if condition is correct and run action."""
|
"""Check if condition is correct and run action."""
|
||||||
@ -1088,7 +1081,7 @@ class TrackTemplateResultInfo:
|
|||||||
self,
|
self,
|
||||||
track_template_: TrackTemplate,
|
track_template_: TrackTemplate,
|
||||||
now: datetime,
|
now: datetime,
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
) -> bool | TrackTemplateResult:
|
) -> bool | TrackTemplateResult:
|
||||||
"""Re-render the template if conditions match.
|
"""Re-render the template if conditions match.
|
||||||
|
|
||||||
@ -1177,7 +1170,7 @@ class TrackTemplateResultInfo:
|
|||||||
@callback
|
@callback
|
||||||
def _refresh(
|
def _refresh(
|
||||||
self,
|
self,
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
track_templates: Iterable[TrackTemplate] | None = None,
|
track_templates: Iterable[TrackTemplate] | None = None,
|
||||||
replayed: bool | None = False,
|
replayed: bool | None = False,
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -1273,7 +1266,7 @@ class TrackTemplateResultInfo:
|
|||||||
|
|
||||||
TrackTemplateResultListener = Callable[
|
TrackTemplateResultListener = Callable[
|
||||||
[
|
[
|
||||||
EventType[EventStateChangedData] | None,
|
Event[EventStateChangedData] | None,
|
||||||
list[TrackTemplateResult],
|
list[TrackTemplateResult],
|
||||||
],
|
],
|
||||||
Coroutine[Any, Any, None] | None,
|
Coroutine[Any, Any, None] | None,
|
||||||
@ -1381,7 +1374,7 @@ def async_track_same_state(
|
|||||||
hass.async_run_hass_job(job)
|
hass.async_run_hass_job(job)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def state_for_cancel_listener(event: EventType[EventStateChangedData]) -> None:
|
def state_for_cancel_listener(event: Event[EventStateChangedData]) -> None:
|
||||||
"""Fire on changes and cancel for listener if changed."""
|
"""Fire on changes and cancel for listener if changed."""
|
||||||
entity = event.data["entity_id"]
|
entity = event.data["entity_id"]
|
||||||
from_state = event.data["old_state"]
|
from_state = event.data["old_state"]
|
||||||
@ -1919,7 +1912,7 @@ def _render_infos_to_track_states(render_infos: Iterable[RenderInfo]) -> TrackSt
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _event_triggers_rerender(
|
def _event_triggers_rerender(
|
||||||
event: EventType[EventStateChangedData], info: RenderInfo
|
event: Event[EventStateChangedData], info: RenderInfo
|
||||||
) -> bool:
|
) -> bool:
|
||||||
"""Determine if a template should be re-rendered from an event."""
|
"""Determine if a template should be re-rendered from an event."""
|
||||||
entity_id = event.data["entity_id"]
|
entity_id = event.data["entity_id"]
|
||||||
@ -1935,7 +1928,7 @@ def _event_triggers_rerender(
|
|||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _rate_limit_for_event(
|
def _rate_limit_for_event(
|
||||||
event: EventType[EventStateChangedData],
|
event: Event[EventStateChangedData],
|
||||||
info: RenderInfo,
|
info: RenderInfo,
|
||||||
track_template_: TrackTemplate,
|
track_template_: TrackTemplate,
|
||||||
) -> timedelta | None:
|
) -> timedelta | None:
|
||||||
|
@ -15,7 +15,7 @@ import pytest
|
|||||||
|
|
||||||
from homeassistant.const import MATCH_ALL
|
from homeassistant.const import MATCH_ALL
|
||||||
import homeassistant.core as ha
|
import homeassistant.core as ha
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import Event, HomeAssistant, callback
|
||||||
from homeassistant.exceptions import TemplateError
|
from homeassistant.exceptions import TemplateError
|
||||||
from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
|
from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
|
||||||
from homeassistant.helpers.entity_registry import EVENT_ENTITY_REGISTRY_UPDATED
|
from homeassistant.helpers.entity_registry import EVENT_ENTITY_REGISTRY_UPDATED
|
||||||
@ -45,7 +45,6 @@ from homeassistant.helpers.event import (
|
|||||||
track_point_in_utc_time,
|
track_point_in_utc_time,
|
||||||
)
|
)
|
||||||
from homeassistant.helpers.template import Template, result_as_boolean
|
from homeassistant.helpers.template import Template, result_as_boolean
|
||||||
from homeassistant.helpers.typing import EventType
|
|
||||||
from homeassistant.setup import async_setup_component
|
from homeassistant.setup import async_setup_component
|
||||||
import homeassistant.util.dt as dt_util
|
import homeassistant.util.dt as dt_util
|
||||||
|
|
||||||
@ -299,21 +298,21 @@ async def test_async_track_state_change_filtered(hass: HomeAssistant) -> None:
|
|||||||
multiple_entity_id_tracker = []
|
multiple_entity_id_tracker = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
single_entity_id_tracker.append((old_state, new_state))
|
single_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def multiple_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def multiple_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
multiple_entity_id_tracker.append((old_state, new_state))
|
multiple_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def callback_that_throws(event: EventType[EventStateChangedData]) -> None:
|
def callback_that_throws(event: Event[EventStateChangedData]) -> None:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
track_single = async_track_state_change_filtered(
|
track_single = async_track_state_change_filtered(
|
||||||
@ -435,21 +434,21 @@ async def test_async_track_state_change_event(hass: HomeAssistant) -> None:
|
|||||||
multiple_entity_id_tracker = []
|
multiple_entity_id_tracker = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
single_entity_id_tracker.append((old_state, new_state))
|
single_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def multiple_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def multiple_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
multiple_entity_id_tracker.append((old_state, new_state))
|
multiple_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def callback_that_throws(event: EventType[EventStateChangedData]) -> None:
|
def callback_that_throws(event: Event[EventStateChangedData]) -> None:
|
||||||
raise ValueError
|
raise ValueError
|
||||||
|
|
||||||
unsub_single = async_track_state_change_event(
|
unsub_single = async_track_state_change_event(
|
||||||
@ -543,14 +542,14 @@ async def test_async_track_state_added_domain(hass: HomeAssistant) -> None:
|
|||||||
multiple_entity_id_tracker = []
|
multiple_entity_id_tracker = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
single_entity_id_tracker.append((old_state, new_state))
|
single_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def multiple_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def multiple_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
@ -657,14 +656,14 @@ async def test_async_track_state_removed_domain(hass: HomeAssistant) -> None:
|
|||||||
multiple_entity_id_tracker = []
|
multiple_entity_id_tracker = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
single_entity_id_tracker.append((old_state, new_state))
|
single_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def multiple_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def multiple_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
@ -741,14 +740,14 @@ async def test_async_track_state_removed_domain_match_all(hass: HomeAssistant) -
|
|||||||
match_all_entity_id_tracker = []
|
match_all_entity_id_tracker = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
single_entity_id_tracker.append((old_state, new_state))
|
single_entity_id_tracker.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def match_all_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def match_all_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
@ -969,7 +968,7 @@ async def test_track_template_result(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -981,7 +980,7 @@ async def test_track_template_result(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def wildcard_run_callback(
|
def wildcard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -994,7 +993,7 @@ async def test_track_template_result(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def wildercard_run_callback(
|
async def wildercard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -1064,7 +1063,7 @@ async def test_track_template_result_none(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -1077,7 +1076,7 @@ async def test_track_template_result_none(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def wildcard_run_callback(
|
def wildcard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -1094,7 +1093,7 @@ async def test_track_template_result_none(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def wildercard_run_callback(
|
async def wildercard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -1144,7 +1143,7 @@ async def test_track_template_result_super_template(hass: HomeAssistant) -> None
|
|||||||
)
|
)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1165,7 +1164,7 @@ async def test_track_template_result_super_template(hass: HomeAssistant) -> None
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def wildcard_run_callback(
|
def wildcard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1187,7 +1186,7 @@ async def test_track_template_result_super_template(hass: HomeAssistant) -> None
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def wildercard_run_callback(
|
async def wildercard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1303,7 +1302,7 @@ async def test_track_template_result_super_template_initially_false(
|
|||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1324,7 +1323,7 @@ async def test_track_template_result_super_template_initially_false(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def wildcard_run_callback(
|
def wildcard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1346,7 +1345,7 @@ async def test_track_template_result_super_template_initially_false(
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def wildercard_run_callback(
|
async def wildercard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1474,7 +1473,7 @@ async def test_track_template_result_super_template_2(
|
|||||||
return result_as_boolean(result)
|
return result_as_boolean(result)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1497,7 +1496,7 @@ async def test_track_template_result_super_template_2(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def wildcard_run_callback(
|
def wildcard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1521,7 +1520,7 @@ async def test_track_template_result_super_template_2(
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def wildercard_run_callback(
|
async def wildercard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1629,7 +1628,7 @@ async def test_track_template_result_super_template_2_initially_false(
|
|||||||
return result_as_boolean(result)
|
return result_as_boolean(result)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1652,7 +1651,7 @@ async def test_track_template_result_super_template_2_initially_false(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def wildcard_run_callback(
|
def wildcard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1676,7 +1675,7 @@ async def test_track_template_result_super_template_2_initially_false(
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def wildercard_run_callback(
|
async def wildercard_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -1759,7 +1758,7 @@ async def test_track_template_result_complex(hass: HomeAssistant) -> None:
|
|||||||
template_complex = Template(template_complex_str, hass)
|
template_complex = Template(template_complex_str, hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -1915,7 +1914,7 @@ async def test_track_template_result_with_wildcard(hass: HomeAssistant) -> None:
|
|||||||
template_complex = Template(template_complex_str, hass)
|
template_complex = Template(template_complex_str, hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -1970,7 +1969,7 @@ async def test_track_template_result_with_group(hass: HomeAssistant) -> None:
|
|||||||
template_complex = Template(template_complex_str, hass)
|
template_complex = Template(template_complex_str, hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -2030,7 +2029,7 @@ async def test_track_template_result_and_conditional(hass: HomeAssistant) -> Non
|
|||||||
template = Template(template_str, hass)
|
template = Template(template_str, hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -2098,7 +2097,7 @@ async def test_track_template_result_and_conditional_upper_case(
|
|||||||
template = Template(template_str, hass)
|
template = Template(template_str, hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -2160,7 +2159,7 @@ async def test_track_template_result_iterator(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def iterator_callback(
|
def iterator_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
iterator_runs.append(updates.pop().result)
|
iterator_runs.append(updates.pop().result)
|
||||||
@ -2196,7 +2195,7 @@ async def test_track_template_result_iterator(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def filter_callback(
|
def filter_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
filter_runs.append(updates.pop().result)
|
filter_runs.append(updates.pop().result)
|
||||||
@ -2249,7 +2248,7 @@ async def test_track_template_result_errors(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def syntax_error_listener(
|
def syntax_error_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -2272,7 +2271,7 @@ async def test_track_template_result_errors(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def not_exist_runs_error_listener(
|
def not_exist_runs_error_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
template_track = updates.pop()
|
template_track = updates.pop()
|
||||||
@ -2340,7 +2339,7 @@ async def test_track_template_result_transient_errors(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def sometimes_error_listener(
|
def sometimes_error_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
track_result = updates.pop()
|
track_result = updates.pop()
|
||||||
@ -2388,7 +2387,7 @@ async def test_static_string(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2411,7 +2410,7 @@ async def test_track_template_rate_limit(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2473,7 +2472,7 @@ async def test_track_template_rate_limit_super(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -2549,7 +2548,7 @@ async def test_track_template_rate_limit_super_2(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -2621,7 +2620,7 @@ async def test_track_template_rate_limit_super_3(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for track_result in updates:
|
for track_result in updates:
|
||||||
@ -2695,7 +2694,7 @@ async def test_track_template_rate_limit_suppress_listener(hass: HomeAssistant)
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2795,7 +2794,7 @@ async def test_track_template_rate_limit_five(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2834,7 +2833,7 @@ async def test_track_template_has_default_rate_limit(hass: HomeAssistant) -> Non
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2878,7 +2877,7 @@ async def test_track_template_unavailable_states_has_default_rate_limit(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2922,7 +2921,7 @@ async def test_specifically_referenced_entity_is_not_rate_limited(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -2968,7 +2967,7 @@ async def test_track_two_templates_with_different_rate_limits(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
for update in updates:
|
for update in updates:
|
||||||
@ -3032,7 +3031,7 @@ async def test_string(hass: HomeAssistant) -> None:
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -3055,7 +3054,7 @@ async def test_track_template_result_refresh_cancel(hass: HomeAssistant) -> None
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates.pop().result)
|
refresh_runs.append(updates.pop().result)
|
||||||
@ -3120,7 +3119,7 @@ async def test_async_track_template_result_multiple_templates(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates)
|
refresh_runs.append(updates)
|
||||||
@ -3184,7 +3183,7 @@ async def test_async_track_template_result_multiple_templates_mixing_domain(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates)
|
refresh_runs.append(updates)
|
||||||
@ -3251,7 +3250,7 @@ async def test_track_template_with_time(hass: HomeAssistant) -> None:
|
|||||||
template_complex = Template("{{ states.switch.test.state and now() }}", hass)
|
template_complex = Template("{{ states.switch.test.state and now() }}", hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -3284,7 +3283,7 @@ async def test_track_template_with_time_default(hass: HomeAssistant) -> None:
|
|||||||
template_complex = Template("{{ now() }}", hass)
|
template_complex = Template("{{ now() }}", hass)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -3338,7 +3337,7 @@ async def test_track_template_with_time_that_leaves_scope(
|
|||||||
)
|
)
|
||||||
|
|
||||||
def specific_run_callback(
|
def specific_run_callback(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
specific_runs.append(updates.pop().result)
|
specific_runs.append(updates.pop().result)
|
||||||
@ -3409,7 +3408,7 @@ async def test_async_track_template_result_multiple_templates_mixing_listeners(
|
|||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def refresh_listener(
|
def refresh_listener(
|
||||||
event: EventType[EventStateChangedData] | None,
|
event: Event[EventStateChangedData] | None,
|
||||||
updates: list[TrackTemplateResult],
|
updates: list[TrackTemplateResult],
|
||||||
) -> None:
|
) -> None:
|
||||||
refresh_runs.append(updates)
|
refresh_runs.append(updates)
|
||||||
@ -4437,14 +4436,14 @@ async def test_track_state_change_event_chain_multple_entity(
|
|||||||
tracker_unsub = []
|
tracker_unsub = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def chained_single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def chained_single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
chained_tracker_called.append((old_state, new_state))
|
chained_tracker_called.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
@ -4491,14 +4490,14 @@ async def test_track_state_change_event_chain_single_entity(
|
|||||||
tracker_unsub = []
|
tracker_unsub = []
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def chained_single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def chained_single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
chained_tracker_called.append((old_state, new_state))
|
chained_tracker_called.append((old_state, new_state))
|
||||||
|
|
||||||
@ha.callback
|
@ha.callback
|
||||||
def single_run_callback(event: EventType[EventStateChangedData]) -> None:
|
def single_run_callback(event: Event[EventStateChangedData]) -> None:
|
||||||
old_state = event.data["old_state"]
|
old_state = event.data["old_state"]
|
||||||
new_state = event.data["new_state"]
|
new_state = event.data["new_state"]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user