Bump aiounifi to v45 (#90250)

* Bump aiounifi to v45

* Replace local TypeVar with library TypeVar
This commit is contained in:
Robert Svensson 2023-03-25 00:27:16 +01:00 committed by GitHub
parent e17cefd61c
commit 7f1fff12ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 31 additions and 36 deletions

View File

@ -12,6 +12,7 @@ import aiounifi
from aiounifi.interfaces.api_handlers import ItemEvent from aiounifi.interfaces.api_handlers import ItemEvent
from aiounifi.interfaces.clients import Clients from aiounifi.interfaces.clients import Clients
from aiounifi.interfaces.devices import Devices from aiounifi.interfaces.devices import Devices
from aiounifi.models.api import ApiItemT
from aiounifi.models.client import Client from aiounifi.models.client import Client
from aiounifi.models.device import Device from aiounifi.models.device import Device
from aiounifi.models.event import Event, EventKey from aiounifi.models.event import Event, EventKey
@ -26,7 +27,6 @@ import homeassistant.util.dt as dt_util
from .const import DOMAIN as UNIFI_DOMAIN from .const import DOMAIN as UNIFI_DOMAIN
from .controller import UniFiController from .controller import UniFiController
from .entity import ( from .entity import (
DataT,
HandlerT, HandlerT,
UnifiEntity, UnifiEntity,
UnifiEntityDescription, UnifiEntityDescription,
@ -136,7 +136,7 @@ def async_device_heartbeat_timedelta_fn(
@dataclass @dataclass
class UnifiEntityTrackerDescriptionMixin(Generic[HandlerT, DataT]): class UnifiEntityTrackerDescriptionMixin(Generic[HandlerT, ApiItemT]):
"""Device tracker local functions.""" """Device tracker local functions."""
heartbeat_timedelta_fn: Callable[[UniFiController, str], timedelta] heartbeat_timedelta_fn: Callable[[UniFiController, str], timedelta]
@ -147,8 +147,8 @@ class UnifiEntityTrackerDescriptionMixin(Generic[HandlerT, DataT]):
@dataclass @dataclass
class UnifiTrackerEntityDescription( class UnifiTrackerEntityDescription(
UnifiEntityDescription[HandlerT, DataT], UnifiEntityDescription[HandlerT, ApiItemT],
UnifiEntityTrackerDescriptionMixin[HandlerT, DataT], UnifiEntityTrackerDescriptionMixin[HandlerT, ApiItemT],
): ):
"""Class describing UniFi device tracker entity.""" """Class describing UniFi device tracker entity."""
@ -211,7 +211,7 @@ async def async_setup_entry(
) )
class UnifiScannerEntity(UnifiEntity[HandlerT, DataT], ScannerEntity): class UnifiScannerEntity(UnifiEntity[HandlerT, ApiItemT], ScannerEntity):
"""Representation of a UniFi scanner.""" """Representation of a UniFi scanner."""
entity_description: UnifiTrackerEntityDescription entity_description: UnifiTrackerEntityDescription

View File

@ -13,12 +13,8 @@ from aiounifi.interfaces.api_handlers import (
ItemEvent, ItemEvent,
UnsubscribeType, UnsubscribeType,
) )
from aiounifi.interfaces.outlets import Outlets from aiounifi.models.api import ApiItemT
from aiounifi.interfaces.ports import Ports
from aiounifi.models.api import APIItem
from aiounifi.models.event import Event, EventKey from aiounifi.models.event import Event, EventKey
from aiounifi.models.outlet import Outlet
from aiounifi.models.port import Port
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
@ -31,8 +27,7 @@ from .const import ATTR_MANUFACTURER
if TYPE_CHECKING: if TYPE_CHECKING:
from .controller import UniFiController from .controller import UniFiController
DataT = TypeVar("DataT", bound=APIItem | Outlet | Port) HandlerT = TypeVar("HandlerT", bound=APIHandler)
HandlerT = TypeVar("HandlerT", bound=APIHandler | Outlets | Ports)
SubscriptionT = Callable[[CallbackType, ItemEvent], UnsubscribeType] SubscriptionT = Callable[[CallbackType, ItemEvent], UnsubscribeType]
@ -64,7 +59,7 @@ def async_device_device_info_fn(api: aiounifi.Controller, obj_id: str) -> Device
@dataclass @dataclass
class UnifiDescription(Generic[HandlerT, DataT]): class UnifiDescription(Generic[HandlerT, ApiItemT]):
"""Validate and load entities from different UniFi handlers.""" """Validate and load entities from different UniFi handlers."""
allowed_fn: Callable[[UniFiController, str], bool] allowed_fn: Callable[[UniFiController, str], bool]
@ -73,21 +68,21 @@ class UnifiDescription(Generic[HandlerT, DataT]):
device_info_fn: Callable[[aiounifi.Controller, str], DeviceInfo | None] device_info_fn: Callable[[aiounifi.Controller, str], DeviceInfo | None]
event_is_on: tuple[EventKey, ...] | None event_is_on: tuple[EventKey, ...] | None
event_to_subscribe: tuple[EventKey, ...] | None event_to_subscribe: tuple[EventKey, ...] | None
name_fn: Callable[[DataT], str | None] name_fn: Callable[[ApiItemT], str | None]
object_fn: Callable[[aiounifi.Controller, str], DataT] object_fn: Callable[[aiounifi.Controller, str], ApiItemT]
supported_fn: Callable[[UniFiController, str], bool | None] supported_fn: Callable[[UniFiController, str], bool | None]
unique_id_fn: Callable[[UniFiController, str], str] unique_id_fn: Callable[[UniFiController, str], str]
@dataclass @dataclass
class UnifiEntityDescription(EntityDescription, UnifiDescription[HandlerT, DataT]): class UnifiEntityDescription(EntityDescription, UnifiDescription[HandlerT, ApiItemT]):
"""UniFi Entity Description.""" """UniFi Entity Description."""
class UnifiEntity(Entity, Generic[HandlerT, DataT]): class UnifiEntity(Entity, Generic[HandlerT, ApiItemT]):
"""Representation of a UniFi entity.""" """Representation of a UniFi entity."""
entity_description: UnifiEntityDescription[HandlerT, DataT] entity_description: UnifiEntityDescription[HandlerT, ApiItemT]
_attr_should_poll = False _attr_should_poll = False
_attr_unique_id: str _attr_unique_id: str
@ -96,7 +91,7 @@ class UnifiEntity(Entity, Generic[HandlerT, DataT]):
self, self,
obj_id: str, obj_id: str,
controller: UniFiController, controller: UniFiController,
description: UnifiEntityDescription[HandlerT, DataT], description: UnifiEntityDescription[HandlerT, ApiItemT],
) -> None: ) -> None:
"""Set up UniFi switch entity.""" """Set up UniFi switch entity."""
self._obj_id = obj_id self._obj_id = obj_id

View File

@ -8,7 +8,7 @@
"iot_class": "local_push", "iot_class": "local_push",
"loggers": ["aiounifi"], "loggers": ["aiounifi"],
"quality_scale": "platinum", "quality_scale": "platinum",
"requirements": ["aiounifi==44"], "requirements": ["aiounifi==45"],
"ssdp": [ "ssdp": [
{ {
"manufacturer": "Ubiquiti Networks", "manufacturer": "Ubiquiti Networks",

View File

@ -14,6 +14,7 @@ import aiounifi
from aiounifi.interfaces.api_handlers import ItemEvent from aiounifi.interfaces.api_handlers import ItemEvent
from aiounifi.interfaces.clients import Clients from aiounifi.interfaces.clients import Clients
from aiounifi.interfaces.ports import Ports from aiounifi.interfaces.ports import Ports
from aiounifi.models.api import ApiItemT
from aiounifi.models.client import Client from aiounifi.models.client import Client
from aiounifi.models.port import Port from aiounifi.models.port import Port
@ -33,7 +34,6 @@ import homeassistant.util.dt as dt_util
from .const import DOMAIN as UNIFI_DOMAIN from .const import DOMAIN as UNIFI_DOMAIN
from .controller import UniFiController from .controller import UniFiController
from .entity import ( from .entity import (
DataT,
HandlerT, HandlerT,
UnifiEntity, UnifiEntity,
UnifiEntityDescription, UnifiEntityDescription,
@ -80,17 +80,17 @@ def async_client_device_info_fn(api: aiounifi.Controller, obj_id: str) -> Device
@dataclass @dataclass
class UnifiSensorEntityDescriptionMixin(Generic[HandlerT, DataT]): class UnifiSensorEntityDescriptionMixin(Generic[HandlerT, ApiItemT]):
"""Validate and load entities from different UniFi handlers.""" """Validate and load entities from different UniFi handlers."""
value_fn: Callable[[UniFiController, DataT], datetime | float | str | None] value_fn: Callable[[UniFiController, ApiItemT], datetime | float | str | None]
@dataclass @dataclass
class UnifiSensorEntityDescription( class UnifiSensorEntityDescription(
SensorEntityDescription, SensorEntityDescription,
UnifiEntityDescription[HandlerT, DataT], UnifiEntityDescription[HandlerT, ApiItemT],
UnifiSensorEntityDescriptionMixin[HandlerT, DataT], UnifiSensorEntityDescriptionMixin[HandlerT, ApiItemT],
): ):
"""Class describing UniFi sensor entity.""" """Class describing UniFi sensor entity."""
@ -182,10 +182,10 @@ async def async_setup_entry(
) )
class UnifiSensorEntity(UnifiEntity[HandlerT, DataT], SensorEntity): class UnifiSensorEntity(UnifiEntity[HandlerT, ApiItemT], SensorEntity):
"""Base representation of a UniFi sensor.""" """Base representation of a UniFi sensor."""
entity_description: UnifiSensorEntityDescription[HandlerT, DataT] entity_description: UnifiSensorEntityDescription[HandlerT, ApiItemT]
@callback @callback
def async_update_state(self, event: ItemEvent, obj_id: str) -> None: def async_update_state(self, event: ItemEvent, obj_id: str) -> None:

View File

@ -17,6 +17,7 @@ from aiounifi.interfaces.clients import Clients
from aiounifi.interfaces.dpi_restriction_groups import DPIRestrictionGroups from aiounifi.interfaces.dpi_restriction_groups import DPIRestrictionGroups
from aiounifi.interfaces.outlets import Outlets from aiounifi.interfaces.outlets import Outlets
from aiounifi.interfaces.ports import Ports from aiounifi.interfaces.ports import Ports
from aiounifi.models.api import ApiItemT
from aiounifi.models.client import Client, ClientBlockRequest from aiounifi.models.client import Client, ClientBlockRequest
from aiounifi.models.device import ( from aiounifi.models.device import (
DeviceSetOutletRelayRequest, DeviceSetOutletRelayRequest,
@ -47,7 +48,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import ATTR_MANUFACTURER, DOMAIN as UNIFI_DOMAIN from .const import ATTR_MANUFACTURER, DOMAIN as UNIFI_DOMAIN
from .controller import UniFiController from .controller import UniFiController
from .entity import ( from .entity import (
DataT,
HandlerT, HandlerT,
SubscriptionT, SubscriptionT,
UnifiEntity, UnifiEntity,
@ -136,18 +136,18 @@ async def async_poe_port_control_fn(
@dataclass @dataclass
class UnifiSwitchEntityDescriptionMixin(Generic[HandlerT, DataT]): class UnifiSwitchEntityDescriptionMixin(Generic[HandlerT, ApiItemT]):
"""Validate and load entities from different UniFi handlers.""" """Validate and load entities from different UniFi handlers."""
control_fn: Callable[[aiounifi.Controller, str, bool], Coroutine[Any, Any, None]] control_fn: Callable[[aiounifi.Controller, str, bool], Coroutine[Any, Any, None]]
is_on_fn: Callable[[UniFiController, DataT], bool] is_on_fn: Callable[[UniFiController, ApiItemT], bool]
@dataclass @dataclass
class UnifiSwitchEntityDescription( class UnifiSwitchEntityDescription(
SwitchEntityDescription, SwitchEntityDescription,
UnifiEntityDescription[HandlerT, DataT], UnifiEntityDescription[HandlerT, ApiItemT],
UnifiSwitchEntityDescriptionMixin[HandlerT, DataT], UnifiSwitchEntityDescriptionMixin[HandlerT, ApiItemT],
): ):
"""Class describing UniFi switch entity.""" """Class describing UniFi switch entity."""
@ -255,10 +255,10 @@ async def async_setup_entry(
) )
class UnifiSwitchEntity(UnifiEntity[HandlerT, DataT], SwitchEntity): class UnifiSwitchEntity(UnifiEntity[HandlerT, ApiItemT], SwitchEntity):
"""Base representation of a UniFi switch.""" """Base representation of a UniFi switch."""
entity_description: UnifiSwitchEntityDescription[HandlerT, DataT] entity_description: UnifiSwitchEntityDescription[HandlerT, ApiItemT]
only_event_for_state_change = False only_event_for_state_change = False
@callback @callback

View File

@ -291,7 +291,7 @@ aiosyncthing==0.5.1
aiotractive==0.5.5 aiotractive==0.5.5
# homeassistant.components.unifi # homeassistant.components.unifi
aiounifi==44 aiounifi==45
# homeassistant.components.vlc_telnet # homeassistant.components.vlc_telnet
aiovlc==0.1.0 aiovlc==0.1.0

View File

@ -272,7 +272,7 @@ aiosyncthing==0.5.1
aiotractive==0.5.5 aiotractive==0.5.5
# homeassistant.components.unifi # homeassistant.components.unifi
aiounifi==44 aiounifi==45
# homeassistant.components.vlc_telnet # homeassistant.components.vlc_telnet
aiovlc==0.1.0 aiovlc==0.1.0