From b026b5d5899bc54bbb6a814406f59649c690ae7c Mon Sep 17 00:00:00 2001 From: Marc Mueller <30130371+cdce8p@users.noreply.github.com> Date: Fri, 8 Mar 2024 19:41:50 +0100 Subject: [PATCH] Replace EventType with Event [helpers] (#112743) --- homeassistant/helpers/entity.py | 3 +- homeassistant/helpers/event.py | 103 ++++++++++++------------- tests/helpers/test_event.py | 129 ++++++++++++++++---------------- 3 files changed, 114 insertions(+), 121 deletions(-) diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 6ec7cbba9b7..6318cf8e13b 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -47,6 +47,7 @@ from homeassistant.const import ( from homeassistant.core import ( CALLBACK_TYPE, Context, + Event, HassJobType, HomeAssistant, callback, @@ -1519,7 +1520,7 @@ class Entity( @callback def _async_device_registry_updated( - self, event: EventType[EventDeviceRegistryUpdatedData] + self, event: Event[EventDeviceRegistryUpdatedData] ) -> None: """Handle device registry update.""" data = event.data diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index 471a996ccdc..4fd2949a23b 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -32,6 +32,7 @@ from homeassistant.const import ( ) from homeassistant.core import ( CALLBACK_TYPE, + Event, HassJob, HassJobType, HomeAssistant, @@ -55,7 +56,7 @@ from .entity_registry import ( from .ratelimit import KeyedRateLimit from .sun import get_astral_event_next 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_LISTENER = "track_state_change_listener" @@ -99,16 +100,16 @@ class _KeyedEventTracker(Generic[_TypedDictT]): dispatcher_callable: Callable[ [ HomeAssistant, - dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]], - EventType[_TypedDictT], + dict[str, list[HassJob[[Event[_TypedDictT]], Any]]], + Event[_TypedDictT], ], None, ] filter_callable: Callable[ [ HomeAssistant, - dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]], - EventType[_TypedDictT], + dict[str, list[HassJob[[Event[_TypedDictT]], Any]]], + Event[_TypedDictT], ], bool, ] @@ -236,7 +237,7 @@ def async_track_state_change( job = HassJob(action, f"track state change {entity_ids} {from_state} {to_state}") @callback - def state_change_filter(event: EventType[EventStateChangedData]) -> bool: + def state_change_filter(event: Event[EventStateChangedData]) -> bool: """Handle specific state changes.""" if from_state is not None: old_state_str: str | None = None @@ -257,7 +258,7 @@ def async_track_state_change( return True @callback - def state_change_dispatcher(event: EventType[EventStateChangedData]) -> None: + def state_change_dispatcher(event: Event[EventStateChangedData]) -> None: """Handle specific state changes.""" hass.async_run_hass_job( job, @@ -267,7 +268,7 @@ def async_track_state_change( ) @callback - def state_change_listener(event: EventType[EventStateChangedData]) -> None: + def state_change_listener(event: Event[EventStateChangedData]) -> None: """Handle specific state changes.""" if not state_change_filter(event): return @@ -299,7 +300,7 @@ track_state_change = threaded_listener_factory(async_track_state_change) def async_track_state_change_event( hass: HomeAssistant, entity_ids: str | Iterable[str], - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], job_type: HassJobType | None = None, ) -> CALLBACK_TYPE: """Track specific state change events indexed by entity_id. @@ -321,8 +322,8 @@ def async_track_state_change_event( @callback def _async_dispatch_entity_id_event( hass: HomeAssistant, - callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]], - event: EventType[EventStateChangedData], + callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]], + event: Event[EventStateChangedData], ) -> None: """Dispatch to listeners.""" if not (callbacks_list := callbacks.get(event.data["entity_id"])): @@ -341,8 +342,8 @@ def _async_dispatch_entity_id_event( @callback def _async_state_change_filter( hass: HomeAssistant, - callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]], - event: EventType[EventStateChangedData], + callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]], + event: Event[EventStateChangedData], ) -> bool: """Filter state changes by entity_id.""" return event.data["entity_id"] in callbacks @@ -362,7 +363,7 @@ _KEYED_TRACK_STATE_CHANGE = _KeyedEventTracker( def _async_track_state_change_event( hass: HomeAssistant, entity_ids: str | Iterable[str], - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], job_type: HassJobType | None, ) -> CALLBACK_TYPE: """async_track_state_change_event without lowercasing.""" @@ -381,8 +382,8 @@ def _remove_listener( hass: HomeAssistant, listeners_key: str, keys: Iterable[str], - job: HassJob[[EventType[_TypedDictT]], Any], - callbacks: dict[str, list[HassJob[[EventType[_TypedDictT]], Any]]], + job: HassJob[[Event[_TypedDictT]], Any], + callbacks: dict[str, list[HassJob[[Event[_TypedDictT]], Any]]], ) -> None: """Remove listener.""" for key in keys: @@ -401,7 +402,7 @@ def _async_track_event( tracker: _KeyedEventTracker[_TypedDictT], hass: HomeAssistant, keys: str | Iterable[str], - action: Callable[[EventType[_TypedDictT]], None], + action: Callable[[Event[_TypedDictT]], None], job_type: HassJobType | None, ) -> CALLBACK_TYPE: """Track an event by a specific key. @@ -421,7 +422,7 @@ def _async_track_event( hass_data = hass.data 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)): callbacks = hass_data[callbacks_key] = {} @@ -449,10 +450,8 @@ def _async_track_event( @callback def _async_dispatch_old_entity_id_or_entity_id_event( hass: HomeAssistant, - callbacks: dict[ - str, list[HassJob[[EventType[EventEntityRegistryUpdatedData]], Any]] - ], - event: EventType[EventEntityRegistryUpdatedData], + callbacks: dict[str, list[HassJob[[Event[EventEntityRegistryUpdatedData]], Any]]], + event: Event[EventEntityRegistryUpdatedData], ) -> None: """Dispatch to listeners.""" if not ( @@ -475,10 +474,8 @@ def _async_dispatch_old_entity_id_or_entity_id_event( @callback def _async_entity_registry_updated_filter( hass: HomeAssistant, - callbacks: dict[ - str, list[HassJob[[EventType[EventEntityRegistryUpdatedData]], Any]] - ], - event: EventType[EventEntityRegistryUpdatedData], + callbacks: dict[str, list[HassJob[[Event[EventEntityRegistryUpdatedData]], Any]]], + event: Event[EventEntityRegistryUpdatedData], ) -> bool: """Filter entity registry updates by entity_id.""" 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( hass: HomeAssistant, entity_ids: str | Iterable[str], - action: Callable[[EventType[EventEntityRegistryUpdatedData]], Any], + action: Callable[[Event[EventEntityRegistryUpdatedData]], Any], job_type: HassJobType | None = None, ) -> CALLBACK_TYPE: """Track specific entity registry updated events indexed by entity_id. @@ -516,10 +513,8 @@ def async_track_entity_registry_updated_event( @callback def _async_device_registry_updated_filter( hass: HomeAssistant, - callbacks: dict[ - str, list[HassJob[[EventType[EventDeviceRegistryUpdatedData]], Any]] - ], - event: EventType[EventDeviceRegistryUpdatedData], + callbacks: dict[str, list[HassJob[[Event[EventDeviceRegistryUpdatedData]], Any]]], + event: Event[EventDeviceRegistryUpdatedData], ) -> bool: """Filter device registry updates by device_id.""" return event.data["device_id"] in callbacks @@ -528,10 +523,8 @@ def _async_device_registry_updated_filter( @callback def _async_dispatch_device_id_event( hass: HomeAssistant, - callbacks: dict[ - str, list[HassJob[[EventType[EventDeviceRegistryUpdatedData]], Any]] - ], - event: EventType[EventDeviceRegistryUpdatedData], + callbacks: dict[str, list[HassJob[[Event[EventDeviceRegistryUpdatedData]], Any]]], + event: Event[EventDeviceRegistryUpdatedData], ) -> None: """Dispatch to listeners.""" 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( hass: HomeAssistant, device_ids: str | Iterable[str], - action: Callable[[EventType[EventDeviceRegistryUpdatedData]], Any], + action: Callable[[Event[EventDeviceRegistryUpdatedData]], Any], job_type: HassJobType | None = None, ) -> CALLBACK_TYPE: """Track specific device registry updated events indexed by device_id. @@ -576,8 +569,8 @@ def async_track_device_registry_updated_event( @callback def _async_dispatch_domain_event( hass: HomeAssistant, - callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]], - event: EventType[EventStateChangedData], + callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]], + event: Event[EventStateChangedData], ) -> None: """Dispatch domain event listeners.""" domain = split_entity_id(event.data["entity_id"])[0] @@ -593,8 +586,8 @@ def _async_dispatch_domain_event( @callback def _async_domain_added_filter( hass: HomeAssistant, - callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]], - event: EventType[EventStateChangedData], + callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]], + event: Event[EventStateChangedData], ) -> bool: """Filter state changes by entity_id.""" return event.data["old_state"] is None and ( @@ -607,7 +600,7 @@ def _async_domain_added_filter( def async_track_state_added_domain( hass: HomeAssistant, domains: str | Iterable[str], - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], job_type: HassJobType | None = None, ) -> CALLBACK_TYPE: """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( hass: HomeAssistant, domains: str | Iterable[str], - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], job_type: HassJobType | None, ) -> CALLBACK_TYPE: """Track state change events when an entity is added to domains.""" @@ -642,8 +635,8 @@ def _async_track_state_added_domain( @callback def _async_domain_removed_filter( hass: HomeAssistant, - callbacks: dict[str, list[HassJob[[EventType[EventStateChangedData]], Any]]], - event: EventType[EventStateChangedData], + callbacks: dict[str, list[HassJob[[Event[EventStateChangedData]], Any]]], + event: Event[EventStateChangedData], ) -> bool: """Filter state changes by entity_id.""" return event.data["new_state"] is None and ( @@ -666,7 +659,7 @@ _KEYED_TRACK_STATE_REMOVED_DOMAIN = _KeyedEventTracker( def async_track_state_removed_domain( hass: HomeAssistant, domains: str | Iterable[str], - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], job_type: HassJobType | None = None, ) -> CALLBACK_TYPE: """Track state change events when an entity is removed from domains.""" @@ -690,7 +683,7 @@ class _TrackStateChangeFiltered: self, hass: HomeAssistant, track_states: TrackStates, - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], ) -> None: """Handle removal / refresh of tracker init.""" self.hass = hass @@ -794,7 +787,7 @@ class _TrackStateChangeFiltered: ) @callback - def _state_added(self, event: EventType[EventStateChangedData]) -> None: + def _state_added(self, event: Event[EventStateChangedData]) -> None: self._cancel_listener(_ENTITIES_LISTENER) self._setup_entities_listener( self._last_track_states.domains, self._last_track_states.entities @@ -823,7 +816,7 @@ class _TrackStateChangeFiltered: def async_track_state_change_filtered( hass: HomeAssistant, track_states: TrackStates, - action: Callable[[EventType[EventStateChangedData]], Any], + action: Callable[[Event[EventStateChangedData]], Any], ) -> _TrackStateChangeFiltered: """Track state changes with a TrackStates filter that can be updated. @@ -897,7 +890,7 @@ def async_track_template( @callback def _template_changed_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: """Check if condition is correct and run action.""" @@ -1088,7 +1081,7 @@ class TrackTemplateResultInfo: self, track_template_: TrackTemplate, now: datetime, - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, ) -> bool | TrackTemplateResult: """Re-render the template if conditions match. @@ -1177,7 +1170,7 @@ class TrackTemplateResultInfo: @callback def _refresh( self, - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, track_templates: Iterable[TrackTemplate] | None = None, replayed: bool | None = False, ) -> None: @@ -1273,7 +1266,7 @@ class TrackTemplateResultInfo: TrackTemplateResultListener = Callable[ [ - EventType[EventStateChangedData] | None, + Event[EventStateChangedData] | None, list[TrackTemplateResult], ], Coroutine[Any, Any, None] | None, @@ -1381,7 +1374,7 @@ def async_track_same_state( hass.async_run_hass_job(job) @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.""" entity = event.data["entity_id"] from_state = event.data["old_state"] @@ -1919,7 +1912,7 @@ def _render_infos_to_track_states(render_infos: Iterable[RenderInfo]) -> TrackSt @callback def _event_triggers_rerender( - event: EventType[EventStateChangedData], info: RenderInfo + event: Event[EventStateChangedData], info: RenderInfo ) -> bool: """Determine if a template should be re-rendered from an event.""" entity_id = event.data["entity_id"] @@ -1935,7 +1928,7 @@ def _event_triggers_rerender( @callback def _rate_limit_for_event( - event: EventType[EventStateChangedData], + event: Event[EventStateChangedData], info: RenderInfo, track_template_: TrackTemplate, ) -> timedelta | None: diff --git a/tests/helpers/test_event.py b/tests/helpers/test_event.py index d18014b9f6f..9535c714bb3 100644 --- a/tests/helpers/test_event.py +++ b/tests/helpers/test_event.py @@ -15,7 +15,7 @@ import pytest from homeassistant.const import MATCH_ALL 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.helpers.device_registry import EVENT_DEVICE_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, ) from homeassistant.helpers.template import Template, result_as_boolean -from homeassistant.helpers.typing import EventType from homeassistant.setup import async_setup_component 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 = [] @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] single_entity_id_tracker.append((old_state, new_state)) @ha.callback - def multiple_run_callback(event: EventType[EventStateChangedData]) -> None: + def multiple_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] multiple_entity_id_tracker.append((old_state, new_state)) @ha.callback - def callback_that_throws(event: EventType[EventStateChangedData]) -> None: + def callback_that_throws(event: Event[EventStateChangedData]) -> None: raise ValueError 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 = [] @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] single_entity_id_tracker.append((old_state, new_state)) @ha.callback - def multiple_run_callback(event: EventType[EventStateChangedData]) -> None: + def multiple_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] multiple_entity_id_tracker.append((old_state, new_state)) @ha.callback - def callback_that_throws(event: EventType[EventStateChangedData]) -> None: + def callback_that_throws(event: Event[EventStateChangedData]) -> None: raise ValueError 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 = [] @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] single_entity_id_tracker.append((old_state, new_state)) @ha.callback - def multiple_run_callback(event: EventType[EventStateChangedData]) -> None: + def multiple_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_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 = [] @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] single_entity_id_tracker.append((old_state, new_state)) @ha.callback - def multiple_run_callback(event: EventType[EventStateChangedData]) -> None: + def multiple_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_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 = [] @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] single_entity_id_tracker.append((old_state, new_state)) @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"] new_state = event.data["new_state"] @@ -969,7 +968,7 @@ async def test_track_template_result(hass: HomeAssistant) -> None: ) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -981,7 +980,7 @@ async def test_track_template_result(hass: HomeAssistant) -> None: @ha.callback def wildcard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -994,7 +993,7 @@ async def test_track_template_result(hass: HomeAssistant) -> None: ) async def wildercard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -1064,7 +1063,7 @@ async def test_track_template_result_none(hass: HomeAssistant) -> None: ) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -1077,7 +1076,7 @@ async def test_track_template_result_none(hass: HomeAssistant) -> None: @ha.callback def wildcard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -1094,7 +1093,7 @@ async def test_track_template_result_none(hass: HomeAssistant) -> None: ) async def wildercard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -1144,7 +1143,7 @@ async def test_track_template_result_super_template(hass: HomeAssistant) -> None ) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1165,7 +1164,7 @@ async def test_track_template_result_super_template(hass: HomeAssistant) -> None @ha.callback def wildcard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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() def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1324,7 +1323,7 @@ async def test_track_template_result_super_template_initially_false( @ha.callback def wildcard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1346,7 +1345,7 @@ async def test_track_template_result_super_template_initially_false( ) async def wildercard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1474,7 +1473,7 @@ async def test_track_template_result_super_template_2( return result_as_boolean(result) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1497,7 +1496,7 @@ async def test_track_template_result_super_template_2( @ha.callback def wildcard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1521,7 +1520,7 @@ async def test_track_template_result_super_template_2( ) async def wildercard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -1652,7 +1651,7 @@ async def test_track_template_result_super_template_2_initially_false( @ha.callback def wildcard_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: specific_runs.append(updates.pop().result) @@ -2160,7 +2159,7 @@ async def test_track_template_result_iterator(hass: HomeAssistant) -> None: @ha.callback def iterator_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: iterator_runs.append(updates.pop().result) @@ -2196,7 +2195,7 @@ async def test_track_template_result_iterator(hass: HomeAssistant) -> None: @ha.callback def filter_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: filter_runs.append(updates.pop().result) @@ -2249,7 +2248,7 @@ async def test_track_template_result_errors( @ha.callback def syntax_error_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -2272,7 +2271,7 @@ async def test_track_template_result_errors( @ha.callback def not_exist_runs_error_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: template_track = updates.pop() @@ -2340,7 +2339,7 @@ async def test_track_template_result_transient_errors( @ha.callback def sometimes_error_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: track_result = updates.pop() @@ -2388,7 +2387,7 @@ async def test_static_string(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2411,7 +2410,7 @@ async def test_track_template_rate_limit(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2473,7 +2472,7 @@ async def test_track_template_rate_limit_super(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -2549,7 +2548,7 @@ async def test_track_template_rate_limit_super_2(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -2621,7 +2620,7 @@ async def test_track_template_rate_limit_super_3(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for track_result in updates: @@ -2695,7 +2694,7 @@ async def test_track_template_rate_limit_suppress_listener(hass: HomeAssistant) @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2795,7 +2794,7 @@ async def test_track_template_rate_limit_five(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2834,7 +2833,7 @@ async def test_track_template_has_default_rate_limit(hass: HomeAssistant) -> Non @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2878,7 +2877,7 @@ async def test_track_template_unavailable_states_has_default_rate_limit( @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2922,7 +2921,7 @@ async def test_specifically_referenced_entity_is_not_rate_limited( @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -2968,7 +2967,7 @@ async def test_track_two_templates_with_different_rate_limits( @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: for update in updates: @@ -3032,7 +3031,7 @@ async def test_string(hass: HomeAssistant) -> None: @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -3055,7 +3054,7 @@ async def test_track_template_result_refresh_cancel(hass: HomeAssistant) -> None @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates.pop().result) @@ -3120,7 +3119,7 @@ async def test_async_track_template_result_multiple_templates( @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates) @@ -3184,7 +3183,7 @@ async def test_async_track_template_result_multiple_templates_mixing_domain( @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: 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) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: specific_runs.append(updates.pop().result) @@ -3338,7 +3337,7 @@ async def test_track_template_with_time_that_leaves_scope( ) def specific_run_callback( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: specific_runs.append(updates.pop().result) @@ -3409,7 +3408,7 @@ async def test_async_track_template_result_multiple_templates_mixing_listeners( @ha.callback def refresh_listener( - event: EventType[EventStateChangedData] | None, + event: Event[EventStateChangedData] | None, updates: list[TrackTemplateResult], ) -> None: refresh_runs.append(updates) @@ -4437,14 +4436,14 @@ async def test_track_state_change_event_chain_multple_entity( tracker_unsub = [] @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"] new_state = event.data["new_state"] chained_tracker_called.append((old_state, new_state)) @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"] @@ -4491,14 +4490,14 @@ async def test_track_state_change_event_chain_single_entity( tracker_unsub = [] @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"] new_state = event.data["new_state"] chained_tracker_called.append((old_state, new_state)) @ha.callback - def single_run_callback(event: EventType[EventStateChangedData]) -> None: + def single_run_callback(event: Event[EventStateChangedData]) -> None: old_state = event.data["old_state"] new_state = event.data["new_state"]