Migrate one time listeners to use async_run_hass_job (#113179)
parent
488dae43d4
commit
d6f1405874
|
@ -1264,7 +1264,7 @@ _FilterableJobType = tuple[
|
||||||
@dataclass(slots=True)
|
@dataclass(slots=True)
|
||||||
class _OneTimeListener:
|
class _OneTimeListener:
|
||||||
hass: HomeAssistant
|
hass: HomeAssistant
|
||||||
listener: Callable[[Event], Coroutine[Any, Any, None] | None]
|
listener_job: HassJob[[Event], Coroutine[Any, Any, None] | None]
|
||||||
remove: CALLBACK_TYPE | None = None
|
remove: CALLBACK_TYPE | None = None
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
|
@ -1275,14 +1275,14 @@ class _OneTimeListener:
|
||||||
return
|
return
|
||||||
self.remove()
|
self.remove()
|
||||||
self.remove = None
|
self.remove = None
|
||||||
self.hass.async_run_job(self.listener, event)
|
self.hass.async_run_hass_job(self.listener_job, event)
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
"""Return the representation of the listener and source module."""
|
"""Return the representation of the listener and source module."""
|
||||||
module = inspect.getmodule(self.listener)
|
module = inspect.getmodule(self.listener_job.target)
|
||||||
if module:
|
if module:
|
||||||
return f"<_OneTimeListener {module.__name__}:{self.listener}>"
|
return f"<_OneTimeListener {module.__name__}:{self.listener_job.target}>"
|
||||||
return f"<_OneTimeListener {self.listener}>"
|
return f"<_OneTimeListener {self.listener_job.target}>"
|
||||||
|
|
||||||
|
|
||||||
class EventBus:
|
class EventBus:
|
||||||
|
@ -1472,7 +1472,7 @@ class EventBus:
|
||||||
|
|
||||||
This method must be run in the event loop.
|
This method must be run in the event loop.
|
||||||
"""
|
"""
|
||||||
one_time_listener = _OneTimeListener(self._hass, listener)
|
one_time_listener = _OneTimeListener(self._hass, HassJob(listener))
|
||||||
remove = self._async_listen_filterable_job(
|
remove = self._async_listen_filterable_job(
|
||||||
event_type,
|
event_type,
|
||||||
(
|
(
|
||||||
|
|
|
@ -3098,7 +3098,7 @@ def test_one_time_listener_repr(hass: HomeAssistant) -> None:
|
||||||
def _listener(event: ha.Event):
|
def _listener(event: ha.Event):
|
||||||
"""Test listener."""
|
"""Test listener."""
|
||||||
|
|
||||||
one_time_listener = ha._OneTimeListener(hass, _listener)
|
one_time_listener = ha._OneTimeListener(hass, HassJob(_listener))
|
||||||
repr_str = repr(one_time_listener)
|
repr_str = repr(one_time_listener)
|
||||||
assert "OneTimeListener" in repr_str
|
assert "OneTimeListener" in repr_str
|
||||||
assert "test_core" in repr_str
|
assert "test_core" in repr_str
|
||||||
|
|
Loading…
Reference in New Issue