Use new lookup methods for homekit_controller (#102278)

This commit is contained in:
J. Nick Koston 2023-10-19 20:12:15 -10:00 committed by GitHub
parent 3285c982fe
commit b911f242dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -3,14 +3,13 @@ from __future__ import annotations
from typing import Any from typing import Any
from aiohomekit.model import Service, Services
from aiohomekit.model.characteristics import ( from aiohomekit.model.characteristics import (
EVENT_CHARACTERISTICS, EVENT_CHARACTERISTICS,
Characteristic, Characteristic,
CharacteristicPermissions, CharacteristicPermissions,
CharacteristicsTypes, CharacteristicsTypes,
) )
from aiohomekit.model.services import ServicesTypes from aiohomekit.model.services import Service, ServicesTypes
from homeassistant.core import CALLBACK_TYPE, callback from homeassistant.core import CALLBACK_TYPE, callback
from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.device_registry import DeviceInfo
@ -21,14 +20,6 @@ from .connection import HKDevice, valid_serial_number
from .utils import folded_name from .utils import folded_name
def _get_service_by_iid_or_none(services: Services, iid: int) -> Service | None:
"""Return a service by iid or None."""
try:
return services.iid(iid)
except KeyError:
return None
class HomeKitEntity(Entity): class HomeKitEntity(Entity):
"""Representation of a Home Assistant HomeKit device.""" """Representation of a Home Assistant HomeKit device."""
@ -68,9 +59,9 @@ class HomeKitEntity(Entity):
def _async_remove_entity_if_accessory_or_service_disappeared(self) -> bool: def _async_remove_entity_if_accessory_or_service_disappeared(self) -> bool:
"""Handle accessory or service disappearance.""" """Handle accessory or service disappearance."""
entity_map = self._accessory.entity_map entity_map = self._accessory.entity_map
if not entity_map.has_aid(self._aid) or not _get_service_by_iid_or_none( if not (
entity_map.aid(self._aid).services, self._iid accessory := entity_map.aid_or_none(self._aid)
): ) or not accessory.services.iid_or_none(self._iid):
self._async_handle_entity_removed() self._async_handle_entity_removed()
return True return True
return False return False