diff --git a/homeassistant/components/alarmdecoder/__init__.py b/homeassistant/components/alarmdecoder/__init__.py index c196ebb8fbc..d5c1b88e08e 100644 --- a/homeassistant/components/alarmdecoder/__init__.py +++ b/homeassistant/components/alarmdecoder/__init__.py @@ -16,6 +16,7 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant from homeassistant.helpers.dispatcher import dispatcher_send +from homeassistant.helpers.event import async_track_point_in_time from homeassistant.util import dt as dt_util from .const import ( @@ -65,8 +66,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: await hass.async_add_executor_job(controller.open, baud) except NoDeviceError: _LOGGER.debug("Failed to connect. Retrying in 5 seconds") - hass.helpers.event.async_track_point_in_time( - open_connection, dt_util.utcnow() + timedelta(seconds=5) + async_track_point_in_time( + hass, open_connection, dt_util.utcnow() + timedelta(seconds=5) ) return _LOGGER.debug("Established a connection with the alarmdecoder") diff --git a/homeassistant/components/alexa/state_report.py b/homeassistant/components/alexa/state_report.py index 161ac4072b6..d3e476c2e8c 100644 --- a/homeassistant/components/alexa/state_report.py +++ b/homeassistant/components/alexa/state_report.py @@ -12,6 +12,7 @@ import async_timeout from homeassistant.const import MATCH_ALL, STATE_ON from homeassistant.core import HomeAssistant, State, callback from homeassistant.helpers.aiohttp_client import async_get_clientsession +from homeassistant.helpers.event import async_track_state_change from homeassistant.helpers.significant_change import create_checker import homeassistant.util.dt as dt_util @@ -102,9 +103,7 @@ async def async_enable_proactive_mode(hass, smart_home_config): hass, smart_home_config, alexa_changed_entity, alexa_properties ) - return hass.helpers.event.async_track_state_change( - MATCH_ALL, async_entity_state_listener - ) + return async_track_state_change(hass, MATCH_ALL, async_entity_state_listener) async def async_send_changereport_message( diff --git a/homeassistant/components/camera/__init__.py b/homeassistant/components/camera/__init__.py index 31dede33e7a..4a6e1546f46 100644 --- a/homeassistant/components/camera/__init__.py +++ b/homeassistant/components/camera/__init__.py @@ -54,6 +54,7 @@ from homeassistant.helpers.config_validation import ( # noqa: F401 ) from homeassistant.helpers.entity import Entity, EntityDescription from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.network import get_url from homeassistant.helpers.typing import ConfigType from homeassistant.loader import bind_hass @@ -398,7 +399,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: entity.async_update_token() entity.async_write_ha_state() - hass.helpers.event.async_track_time_interval(update_tokens, TOKEN_CHANGE_INTERVAL) + async_track_time_interval(hass, update_tokens, TOKEN_CHANGE_INTERVAL) component.async_register_entity_service( SERVICE_ENABLE_MOTION, {}, "async_enable_motion_detection" diff --git a/homeassistant/components/evohome/__init__.py b/homeassistant/components/evohome/__init__.py index aa09bb666f4..908dff48aef 100644 --- a/homeassistant/components/evohome/__init__.py +++ b/homeassistant/components/evohome/__init__.py @@ -33,7 +33,7 @@ from homeassistant.helpers.dispatcher import ( async_dispatcher_send, ) from homeassistant.helpers.entity import Entity -from homeassistant.helpers.event import async_call_later +from homeassistant.helpers.event import async_call_later, async_track_time_interval from homeassistant.helpers.service import verify_domain_control from homeassistant.helpers.storage import Store from homeassistant.helpers.typing import ConfigType @@ -259,8 +259,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: async_load_platform(hass, Platform.WATER_HEATER, DOMAIN, {}, config) ) - hass.helpers.event.async_track_time_interval( - broker.async_update, config[DOMAIN][CONF_SCAN_INTERVAL] + async_track_time_interval( + hass, broker.async_update, config[DOMAIN][CONF_SCAN_INTERVAL] ) setup_service_functions(hass, broker) diff --git a/homeassistant/components/freedns/__init__.py b/homeassistant/components/freedns/__init__.py index bc651e726ec..a5c507c3857 100644 --- a/homeassistant/components/freedns/__init__.py +++ b/homeassistant/components/freedns/__init__.py @@ -11,6 +11,7 @@ from homeassistant.const import CONF_ACCESS_TOKEN, CONF_SCAN_INTERVAL, CONF_URL from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import ConfigType _LOGGER = logging.getLogger(__name__) @@ -56,9 +57,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Update the FreeDNS entry.""" await _update_freedns(hass, session, url, auth_token) - hass.helpers.event.async_track_time_interval( - update_domain_callback, update_interval - ) + async_track_time_interval(hass, update_domain_callback, update_interval) return True diff --git a/homeassistant/components/google_assistant/report_state.py b/homeassistant/components/google_assistant/report_state.py index c3f8ba3bffd..4e8ac1624cc 100644 --- a/homeassistant/components/google_assistant/report_state.py +++ b/homeassistant/components/google_assistant/report_state.py @@ -6,7 +6,7 @@ import logging from homeassistant.const import MATCH_ALL from homeassistant.core import CALLBACK_TYPE, HassJob, HomeAssistant, callback -from homeassistant.helpers.event import async_call_later +from homeassistant.helpers.event import async_call_later, async_track_state_change from homeassistant.helpers.significant_change import create_checker from .const import DOMAIN @@ -136,9 +136,7 @@ def async_enable_report_state(hass: HomeAssistant, google_config: AbstractConfig await google_config.async_report_state_all({"devices": {"states": entities}}) - unsub = hass.helpers.event.async_track_state_change( - MATCH_ALL, async_entity_state_listener - ) + unsub = async_track_state_change(hass, MATCH_ALL, async_entity_state_listener) unsub = async_call_later(hass, INITIAL_REPORT_DELAY, initial_report) diff --git a/homeassistant/components/google_domains/__init__.py b/homeassistant/components/google_domains/__init__.py index 8ccc9d78c64..c7f7e632bd6 100644 --- a/homeassistant/components/google_domains/__init__.py +++ b/homeassistant/components/google_domains/__init__.py @@ -11,6 +11,7 @@ from homeassistant.const import CONF_DOMAIN, CONF_PASSWORD, CONF_TIMEOUT, CONF_U from homeassistant.core import HomeAssistant from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import ConfigType _LOGGER = logging.getLogger(__name__) @@ -56,7 +57,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Update the Google Domains entry.""" await _update_google_domains(hass, session, domain, user, password, timeout) - hass.helpers.event.async_track_time_interval(update_domain_interval, INTERVAL) + async_track_time_interval(hass, update_domain_interval, INTERVAL) return True diff --git a/homeassistant/components/hassio/__init__.py b/homeassistant/components/hassio/__init__.py index 34773987014..3ded34bd6f1 100644 --- a/homeassistant/components/hassio/__init__.py +++ b/homeassistant/components/hassio/__init__.py @@ -41,6 +41,7 @@ from homeassistant.helpers.device_registry import ( async_get_registry, ) from homeassistant.helpers.entity import DeviceInfo +from homeassistant.helpers.event import async_track_point_in_utc_time from homeassistant.helpers.storage import Store from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed @@ -638,8 +639,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa: except HassioAPIError as err: _LOGGER.warning("Can't read Supervisor data: %s", err) - hass.helpers.event.async_track_point_in_utc_time( - update_info_data, utcnow() + HASSIO_UPDATE_INTERVAL + async_track_point_in_utc_time( + hass, update_info_data, utcnow() + HASSIO_UPDATE_INTERVAL ) # Fetch data diff --git a/homeassistant/components/homematic/entity.py b/homeassistant/components/homematic/entity.py index 1fe3799bbd9..fee68caf7ed 100644 --- a/homeassistant/components/homematic/entity.py +++ b/homeassistant/components/homematic/entity.py @@ -11,6 +11,7 @@ from pyhomematic.devicetypes.generic import HMGeneric from homeassistant.const import ATTR_NAME import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity, EntityDescription +from homeassistant.helpers.event import track_time_interval from .const import ( ATTR_ADDRESS, @@ -222,12 +223,10 @@ class HMHub(Entity): self._state = None # Load data - self.hass.helpers.event.track_time_interval(self._update_hub, SCAN_INTERVAL_HUB) + track_time_interval(self.hass, self._update_hub, SCAN_INTERVAL_HUB) self.hass.add_job(self._update_hub, None) - self.hass.helpers.event.track_time_interval( - self._update_variables, SCAN_INTERVAL_VARIABLES - ) + track_time_interval(self.hass, self._update_variables, SCAN_INTERVAL_VARIABLES) self.hass.add_job(self._update_variables, None) @property diff --git a/homeassistant/components/no_ip/__init__.py b/homeassistant/components/no_ip/__init__.py index 5340e926e62..a903b1af5b6 100644 --- a/homeassistant/components/no_ip/__init__.py +++ b/homeassistant/components/no_ip/__init__.py @@ -16,6 +16,7 @@ from homeassistant.helpers.aiohttp_client import ( async_get_clientsession, ) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.typing import ConfigType _LOGGER = logging.getLogger(__name__) @@ -76,7 +77,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: """Update the NO-IP entry.""" await _update_no_ip(hass, session, domain, auth_str, timeout) - hass.helpers.event.async_track_time_interval(update_domain_interval, INTERVAL) + async_track_time_interval(hass, update_domain_interval, INTERVAL) return True diff --git a/homeassistant/components/universal/media_player.py b/homeassistant/components/universal/media_player.py index e29a18f285f..7ffd8b9d13d 100644 --- a/homeassistant/components/universal/media_player.py +++ b/homeassistant/components/universal/media_player.py @@ -79,7 +79,11 @@ from homeassistant.core import HomeAssistant, callback from homeassistant.exceptions import TemplateError from homeassistant.helpers import config_validation as cv from homeassistant.helpers.entity_platform import AddEntitiesCallback -from homeassistant.helpers.event import TrackTemplate, async_track_template_result +from homeassistant.helpers.event import ( + TrackTemplate, + async_track_state_change_event, + async_track_template_result, +) from homeassistant.helpers.reload import async_setup_reload_service from homeassistant.helpers.service import async_call_from_config from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType @@ -202,8 +206,8 @@ class UniversalMediaPlayer(MediaPlayerEntity): depend.append(entity[0]) self.async_on_remove( - self.hass.helpers.event.async_track_state_change_event( - list(set(depend)), _async_on_dependency_update + async_track_state_change_event( + self.hass, list(set(depend)), _async_on_dependency_update ) ) diff --git a/homeassistant/scripts/benchmark/__init__.py b/homeassistant/scripts/benchmark/__init__.py index 8f95f7db66b..a681b3e210d 100644 --- a/homeassistant/scripts/benchmark/__init__.py +++ b/homeassistant/scripts/benchmark/__init__.py @@ -15,6 +15,10 @@ from homeassistant import core from homeassistant.components.websocket_api.const import JSON_DUMP from homeassistant.const import EVENT_STATE_CHANGED from homeassistant.helpers.entityfilter import convert_include_exclude_filter +from homeassistant.helpers.event import ( + async_track_state_change, + async_track_state_change_event, +) from homeassistant.helpers.json import JSONEncoder # mypy: allow-untyped-calls, allow-untyped-defs, no-check-untyped-defs @@ -134,9 +138,7 @@ async def state_changed_helper(hass): event.set() for idx in range(1000): - hass.helpers.event.async_track_state_change( - f"{entity_id}{idx}", listener, "off", "on" - ) + async_track_state_change(hass, f"{entity_id}{idx}", listener, "off", "on") event_data = { "entity_id": f"{entity_id}0", "old_state": core.State(entity_id, "off"), @@ -166,8 +168,8 @@ async def state_changed_event_helper(hass): nonlocal count count += 1 - hass.helpers.event.async_track_state_change_event( - [f"{entity_id}{idx}" for idx in range(1000)], listener + async_track_state_change_event( + hass, [f"{entity_id}{idx}" for idx in range(1000)], listener ) event_data = { @@ -201,8 +203,8 @@ async def state_changed_event_filter_helper(hass): nonlocal count count += 1 - hass.helpers.event.async_track_state_change_event( - [f"{entity_id}{idx}" for idx in range(1000)], listener + async_track_state_change_event( + hass, [f"{entity_id}{idx}" for idx in range(1000)], listener ) event_data = { diff --git a/tests/components/bayesian/test_binary_sensor.py b/tests/components/bayesian/test_binary_sensor.py index c2f289b0697..2f45e0e475e 100644 --- a/tests/components/bayesian/test_binary_sensor.py +++ b/tests/components/bayesian/test_binary_sensor.py @@ -16,6 +16,7 @@ from homeassistant.const import ( STATE_UNKNOWN, ) from homeassistant.core import Context, callback +from homeassistant.helpers.event import async_track_state_change_event from homeassistant.setup import async_setup_component from tests.common import get_fixture_path @@ -709,8 +710,8 @@ async def test_template_triggers(hass): assert hass.states.get("binary_sensor.test_binary").state == STATE_OFF events = [] - hass.helpers.event.async_track_state_change_event( - "binary_sensor.test_binary", callback(lambda event: events.append(event)) + async_track_state_change_event( + hass, "binary_sensor.test_binary", callback(lambda event: events.append(event)) ) context = Context() @@ -748,8 +749,8 @@ async def test_state_triggers(hass): assert hass.states.get("binary_sensor.test_binary").state == STATE_OFF events = [] - hass.helpers.event.async_track_state_change_event( - "binary_sensor.test_binary", callback(lambda event: events.append(event)) + async_track_state_change_event( + hass, "binary_sensor.test_binary", callback(lambda event: events.append(event)) ) context = Context() diff --git a/tests/components/universal/test_media_player.py b/tests/components/universal/test_media_player.py index 4a1838aba12..d4fe2ce64ae 100644 --- a/tests/components/universal/test_media_player.py +++ b/tests/components/universal/test_media_player.py @@ -21,6 +21,7 @@ from homeassistant.const import ( STATE_UNKNOWN, ) from homeassistant.core import Context, callback +from homeassistant.helpers.event import async_track_state_change_event from homeassistant.setup import async_setup_component from tests.common import async_mock_service, get_fixture_path @@ -1136,8 +1137,8 @@ async def test_master_state_with_template(hass): events = [] - hass.helpers.event.async_track_state_change_event( - "media_player.tv", callback(lambda event: events.append(event)) + async_track_state_change_event( + hass, "media_player.tv", callback(lambda event: events.append(event)) ) context = Context() diff --git a/tests/helpers/test_event.py b/tests/helpers/test_event.py index d0355bba5a8..57b89e64cce 100644 --- a/tests/helpers/test_event.py +++ b/tests/helpers/test_event.py @@ -21,6 +21,7 @@ from homeassistant.helpers.event import ( TrackTemplate, TrackTemplateResult, async_call_later, + async_track_entity_registry_updated_event, async_track_point_in_time, async_track_point_in_utc_time, async_track_same_state, @@ -4230,12 +4231,10 @@ async def test_track_point_in_utc_time_cancel(hass): with pytest.raises(TypeError): track_point_in_utc_time("nothass", run_callback, utc_now) - unsub1 = hass.helpers.event.track_point_in_utc_time( - run_callback, utc_now + timedelta(seconds=0.1) - ) - hass.helpers.event.track_point_in_utc_time( - run_callback, utc_now + timedelta(seconds=0.1) + unsub1 = track_point_in_utc_time( + hass, run_callback, utc_now + timedelta(seconds=0.1) ) + track_point_in_utc_time(hass, run_callback, utc_now + timedelta(seconds=0.1)) unsub1() @@ -4262,12 +4261,10 @@ async def test_async_track_point_in_time_cancel(hass): utc_now = dt_util.utcnow() hst_now = utc_now.astimezone(hst_tz) - unsub1 = hass.helpers.event.async_track_point_in_time( - run_callback, hst_now + timedelta(seconds=0.1) - ) - hass.helpers.event.async_track_point_in_time( - run_callback, hst_now + timedelta(seconds=0.1) + unsub1 = async_track_point_in_time( + hass, run_callback, hst_now + timedelta(seconds=0.1) ) + async_track_point_in_time(hass, run_callback, hst_now + timedelta(seconds=0.1)) unsub1() @@ -4292,11 +4289,9 @@ async def test_async_track_entity_registry_updated_event(hass): def run_callback(event): event_data.append(event.data) - unsub1 = hass.helpers.event.async_track_entity_registry_updated_event( - entity_id, run_callback - ) - unsub2 = hass.helpers.event.async_track_entity_registry_updated_event( - new_entity_id, run_callback + unsub1 = async_track_entity_registry_updated_event(hass, entity_id, run_callback) + unsub2 = async_track_entity_registry_updated_event( + hass, new_entity_id, run_callback ) hass.bus.async_fire( EVENT_ENTITY_REGISTRY_UPDATED, {"action": "create", "entity_id": entity_id} @@ -4362,12 +4357,10 @@ async def test_async_track_entity_registry_updated_event_with_a_callback_that_th def failing_callback(event): raise ValueError - unsub1 = hass.helpers.event.async_track_entity_registry_updated_event( - entity_id, failing_callback - ) - unsub2 = hass.helpers.event.async_track_entity_registry_updated_event( - entity_id, run_callback + unsub1 = async_track_entity_registry_updated_event( + hass, entity_id, failing_callback ) + unsub2 = async_track_entity_registry_updated_event(hass, entity_id, run_callback) hass.bus.async_fire( EVENT_ENTITY_REGISTRY_UPDATED, {"action": "create", "entity_id": entity_id} ) @@ -4380,11 +4373,11 @@ async def test_async_track_entity_registry_updated_event_with_a_callback_that_th async def test_async_track_entity_registry_updated_event_with_empty_list(hass): """Test async_track_entity_registry_updated_event passing an empty list of entities.""" - unsub_single = hass.helpers.event.async_track_entity_registry_updated_event( - [], ha.callback(lambda event: None) + unsub_single = async_track_entity_registry_updated_event( + hass, [], ha.callback(lambda event: None) ) - unsub_single2 = hass.helpers.event.async_track_entity_registry_updated_event( - [], ha.callback(lambda event: None) + unsub_single2 = async_track_entity_registry_updated_event( + hass, [], ha.callback(lambda event: None) ) unsub_single2()