Update uiprotect to 1.20.0 (#120108)

This commit is contained in:
J. Nick Koston 2024-06-21 11:26:14 -05:00 committed by GitHub
parent 8aed04cd3c
commit 5e375dbf38
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 11 additions and 34 deletions

View File

@ -40,7 +40,7 @@
"integration_type": "hub", "integration_type": "hub",
"iot_class": "local_push", "iot_class": "local_push",
"loggers": ["uiprotect", "unifi_discovery"], "loggers": ["uiprotect", "unifi_discovery"],
"requirements": ["uiprotect==1.19.3", "unifi-discovery==1.1.8"], "requirements": ["uiprotect==1.20.0", "unifi-discovery==1.1.8"],
"ssdp": [ "ssdp": [
{ {
"manufacturer": "Ubiquiti Networks", "manufacturer": "Ubiquiti Networks",

View File

@ -10,6 +10,7 @@ import logging
from operator import attrgetter from operator import attrgetter
from typing import Any, Generic, TypeVar from typing import Any, Generic, TypeVar
from uiprotect import make_enabled_getter, make_required_getter, make_value_getter
from uiprotect.data import ( from uiprotect.data import (
NVR, NVR,
Event, Event,
@ -19,8 +20,6 @@ from uiprotect.data import (
from homeassistant.helpers.entity import EntityDescription from homeassistant.helpers.entity import EntityDescription
from .utils import get_nested_attr
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
T = TypeVar("T", bound=ProtectAdoptableDeviceModel | NVR) T = TypeVar("T", bound=ProtectAdoptableDeviceModel | NVR)
@ -61,22 +60,16 @@ class ProtectEntityDescription(EntityDescription, Generic[T]):
"""Override get_ufp_value, has_required, and get_ufp_enabled if required.""" """Override get_ufp_value, has_required, and get_ufp_enabled if required."""
_setter = partial(object.__setattr__, self) _setter = partial(object.__setattr__, self)
if (_ufp_value := self.ufp_value) is not None: if (ufp_value := self.ufp_value) is not None:
ufp_value = tuple(_ufp_value.split(".")) _setter("get_ufp_value", make_value_getter(ufp_value))
_setter("get_ufp_value", partial(get_nested_attr, attrs=ufp_value))
elif (ufp_value_fn := self.ufp_value_fn) is not None: elif (ufp_value_fn := self.ufp_value_fn) is not None:
_setter("get_ufp_value", ufp_value_fn) _setter("get_ufp_value", ufp_value_fn)
if (_ufp_enabled := self.ufp_enabled) is not None: if (ufp_enabled := self.ufp_enabled) is not None:
ufp_enabled = tuple(_ufp_enabled.split(".")) _setter("get_ufp_enabled", make_enabled_getter(ufp_enabled))
_setter("get_ufp_enabled", partial(get_nested_attr, attrs=ufp_enabled))
if (_ufp_required_field := self.ufp_required_field) is not None: if (ufp_required_field := self.ufp_required_field) is not None:
ufp_required_field = tuple(_ufp_required_field.split(".")) _setter("has_required", make_required_getter(ufp_required_field))
_setter(
"has_required",
lambda obj: bool(get_nested_attr(obj, ufp_required_field)),
)
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)

View File

@ -4,10 +4,9 @@ from __future__ import annotations
from collections.abc import Iterable from collections.abc import Iterable
import contextlib import contextlib
from enum import Enum
from pathlib import Path from pathlib import Path
import socket import socket
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING
from aiohttp import CookieJar from aiohttp import CookieJar
from typing_extensions import Generator from typing_extensions import Generator
@ -42,21 +41,6 @@ from .const import (
if TYPE_CHECKING: if TYPE_CHECKING:
from .data import UFPConfigEntry from .data import UFPConfigEntry
_SENTINEL = object()
def get_nested_attr(obj: Any, attrs: tuple[str, ...]) -> Any:
"""Fetch a nested attribute."""
if len(attrs) == 1:
value = getattr(obj, attrs[0], None)
else:
value = obj
for key in attrs:
if (value := getattr(value, key, _SENTINEL)) is _SENTINEL:
return None
return value.value if isinstance(value, Enum) else value
@callback @callback
def _async_unifi_mac_from_hass(mac: str) -> str: def _async_unifi_mac_from_hass(mac: str) -> str:

View File

@ -2794,7 +2794,7 @@ twitchAPI==4.0.0
uasiren==0.0.1 uasiren==0.0.1
# homeassistant.components.unifiprotect # homeassistant.components.unifiprotect
uiprotect==1.19.3 uiprotect==1.20.0
# homeassistant.components.landisgyr_heat_meter # homeassistant.components.landisgyr_heat_meter
ultraheat-api==0.5.7 ultraheat-api==0.5.7

View File

@ -2174,7 +2174,7 @@ twitchAPI==4.0.0
uasiren==0.0.1 uasiren==0.0.1
# homeassistant.components.unifiprotect # homeassistant.components.unifiprotect
uiprotect==1.19.3 uiprotect==1.20.0
# homeassistant.components.landisgyr_heat_meter # homeassistant.components.landisgyr_heat_meter
ultraheat-api==0.5.7 ultraheat-api==0.5.7