From e12e1290658afad1e73398f6a97aaf6dad3770ae Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 6 Mar 2024 17:03:27 -1000 Subject: [PATCH] Make HassJob job_type lookup lazy (#112563) --- homeassistant/core.py | 9 ++++++--- tests/test_core.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index aa15872c29b..f0b10760228 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -289,8 +289,6 @@ class HassJob(Generic[_P, _R_co]): we run the job. """ - __slots__ = ("job_type", "target", "name", "_cancel_on_shutdown") - def __init__( self, target: Callable[_P, _R_co], @@ -302,8 +300,13 @@ class HassJob(Generic[_P, _R_co]): """Create a job object.""" self.target = target self.name = name - self.job_type = job_type or _get_hassjob_callable_job_type(target) self._cancel_on_shutdown = cancel_on_shutdown + self._job_type = job_type + + @cached_property + def job_type(self) -> HassJobType: + """Return the job type.""" + return self._job_type or _get_hassjob_callable_job_type(self.target) @property def cancel_on_shutdown(self) -> bool | None: diff --git a/tests/test_core.py b/tests/test_core.py index 987f228bea8..75d06a7c61f 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -2190,7 +2190,7 @@ async def test_hassjob_forbid_coroutine() -> None: coro = bla() with pytest.raises(ValueError): - ha.HassJob(coro) + ha.HassJob(coro).job_type # To avoid warning about unawaited coro await coro