diff --git a/homeassistant/components/config/area_registry.py b/homeassistant/components/config/area_registry.py index 81daf35339e881ba48ec92d6b45bdb8cabd90368..f40ed7834e3d6f247862755a908a3740df1040ff 100644 --- a/homeassistant/components/config/area_registry.py +++ b/homeassistant/components/config/area_registry.py @@ -90,7 +90,7 @@ async def websocket_delete_area(hass, connection, msg): registry = await async_get_registry(hass) try: - await registry.async_delete(msg["area_id"]) + registry.async_delete(msg["area_id"]) except KeyError: connection.send_message( websocket_api.error_message( diff --git a/homeassistant/helpers/area_registry.py b/homeassistant/helpers/area_registry.py index a41e748d1adb64a2a17317f2c5ccfca18c0d448c..562e832cc199cc0bf45ad779b1338435316f936e 100644 --- a/homeassistant/helpers/area_registry.py +++ b/homeassistant/helpers/area_registry.py @@ -1,11 +1,11 @@ """Provide a way to connect devices to one physical location.""" -from asyncio import gather from collections import OrderedDict from typing import Container, Dict, Iterable, List, MutableMapping, Optional, cast import attr from homeassistant.core import callback +from homeassistant.helpers import device_registry as dr, entity_registry as er from homeassistant.loader import bind_hass from homeassistant.util import slugify @@ -72,12 +72,11 @@ class AreaRegistry: ) return area - async def async_delete(self, area_id: str) -> None: + @callback + def async_delete(self, area_id: str) -> None: """Delete area.""" - device_registry, entity_registry = await gather( - self.hass.helpers.device_registry.async_get_registry(), - self.hass.helpers.entity_registry.async_get_registry(), - ) + device_registry = dr.async_get(self.hass) + entity_registry = er.async_get(self.hass) device_registry.async_clear_area_id(area_id) entity_registry.async_clear_area_id(area_id) diff --git a/homeassistant/helpers/entity_registry.py b/homeassistant/helpers/entity_registry.py index 51985f7bae45aa42b39fb3af5b862bb2956122f8..418c3f903047b5d5d3bf413f0d5c2f2cf94aa8c0 100644 --- a/homeassistant/helpers/entity_registry.py +++ b/homeassistant/helpers/entity_registry.py @@ -35,6 +35,7 @@ from homeassistant.const import ( STATE_UNAVAILABLE, ) from homeassistant.core import Event, callback, split_entity_id, valid_entity_id +from homeassistant.helpers import device_registry as dr from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED from homeassistant.loader import bind_hass from homeassistant.util import slugify @@ -313,7 +314,8 @@ class EntityRegistry: ) self.async_schedule_save() - async def async_device_modified(self, event: Event) -> None: + @callback + def async_device_modified(self, event: Event) -> None: """Handle the removal or update of a device. Remove entities from the registry that are associated to a device when @@ -333,7 +335,7 @@ class EntityRegistry: if event.data["action"] != "update": return - device_registry = await self.hass.helpers.device_registry.async_get_registry() + device_registry = dr.async_get(self.hass) device = device_registry.async_get(event.data["device_id"]) # The device may be deleted already if the event handling is late diff --git a/tests/helpers/test_area_registry.py b/tests/helpers/test_area_registry.py index 2b06202c862171916873f2186fab83420320bea0..0bfa5e597d276a7b07ffe4aec5c571f912d42e01 100644 --- a/tests/helpers/test_area_registry.py +++ b/tests/helpers/test_area_registry.py @@ -81,7 +81,7 @@ async def test_delete_area(hass, registry, update_events): """Make sure that we can delete an area.""" area = registry.async_create("mock") - await registry.async_delete(area.id) + registry.async_delete(area.id) assert not registry.areas