mirror of
https://github.com/home-assistant/core.git
synced 2025-07-09 22:37:11 +00:00
Speed up async_active_zone by avoiding dict lookups (#93427)
Speed up async_active_zone by avoding dict lookups
This commit is contained in:
parent
accee4b5ef
commit
10aa49be2b
@ -3,6 +3,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
import logging
|
import logging
|
||||||
|
from operator import attrgetter
|
||||||
from typing import Any, cast
|
from typing import Any, cast
|
||||||
|
|
||||||
from typing_extensions import Self
|
from typing_extensions import Self
|
||||||
@ -96,6 +97,8 @@ RELOAD_SERVICE_SCHEMA = vol.Schema({})
|
|||||||
STORAGE_KEY = DOMAIN
|
STORAGE_KEY = DOMAIN
|
||||||
STORAGE_VERSION = 1
|
STORAGE_VERSION = 1
|
||||||
|
|
||||||
|
ENTITY_ID_SORTER = attrgetter("entity_id")
|
||||||
|
|
||||||
|
|
||||||
@bind_hass
|
@bind_hass
|
||||||
def async_active_zone(
|
def async_active_zone(
|
||||||
@ -106,15 +109,10 @@ def async_active_zone(
|
|||||||
This method must be run in the event loop.
|
This method must be run in the event loop.
|
||||||
"""
|
"""
|
||||||
# Sort entity IDs so that we are deterministic if equal distance to 2 zones
|
# Sort entity IDs so that we are deterministic if equal distance to 2 zones
|
||||||
zones = (
|
|
||||||
cast(State, hass.states.get(entity_id))
|
|
||||||
for entity_id in sorted(hass.states.async_entity_ids(DOMAIN))
|
|
||||||
)
|
|
||||||
|
|
||||||
min_dist = None
|
min_dist = None
|
||||||
closest = None
|
closest = None
|
||||||
|
|
||||||
for zone in zones:
|
for zone in sorted(hass.states.async_all(DOMAIN), key=ENTITY_ID_SORTER):
|
||||||
if zone.state == STATE_UNAVAILABLE or zone.attributes.get(ATTR_PASSIVE):
|
if zone.state == STATE_UNAVAILABLE or zone.attributes.get(ATTR_PASSIVE):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user