Bump aiounifi to v45 (#90250)
* Bump aiounifi to v45 * Replace local TypeVar with library TypeVar
This commit is contained in:
parent
e17cefd61c
commit
7f1fff12ef
7 changed files with 31 additions and 36 deletions
|
@ -12,6 +12,7 @@ import aiounifi
|
|||
from aiounifi.interfaces.api_handlers import ItemEvent
|
||||
from aiounifi.interfaces.clients import Clients
|
||||
from aiounifi.interfaces.devices import Devices
|
||||
from aiounifi.models.api import ApiItemT
|
||||
from aiounifi.models.client import Client
|
||||
from aiounifi.models.device import Device
|
||||
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 .controller import UniFiController
|
||||
from .entity import (
|
||||
DataT,
|
||||
HandlerT,
|
||||
UnifiEntity,
|
||||
UnifiEntityDescription,
|
||||
|
@ -136,7 +136,7 @@ def async_device_heartbeat_timedelta_fn(
|
|||
|
||||
|
||||
@dataclass
|
||||
class UnifiEntityTrackerDescriptionMixin(Generic[HandlerT, DataT]):
|
||||
class UnifiEntityTrackerDescriptionMixin(Generic[HandlerT, ApiItemT]):
|
||||
"""Device tracker local functions."""
|
||||
|
||||
heartbeat_timedelta_fn: Callable[[UniFiController, str], timedelta]
|
||||
|
@ -147,8 +147,8 @@ class UnifiEntityTrackerDescriptionMixin(Generic[HandlerT, DataT]):
|
|||
|
||||
@dataclass
|
||||
class UnifiTrackerEntityDescription(
|
||||
UnifiEntityDescription[HandlerT, DataT],
|
||||
UnifiEntityTrackerDescriptionMixin[HandlerT, DataT],
|
||||
UnifiEntityDescription[HandlerT, ApiItemT],
|
||||
UnifiEntityTrackerDescriptionMixin[HandlerT, ApiItemT],
|
||||
):
|
||||
"""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."""
|
||||
|
||||
entity_description: UnifiTrackerEntityDescription
|
||||
|
|
|
@ -13,12 +13,8 @@ from aiounifi.interfaces.api_handlers import (
|
|||
ItemEvent,
|
||||
UnsubscribeType,
|
||||
)
|
||||
from aiounifi.interfaces.outlets import Outlets
|
||||
from aiounifi.interfaces.ports import Ports
|
||||
from aiounifi.models.api import APIItem
|
||||
from aiounifi.models.api import ApiItemT
|
||||
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.helpers import entity_registry as er
|
||||
|
@ -31,8 +27,7 @@ from .const import ATTR_MANUFACTURER
|
|||
if TYPE_CHECKING:
|
||||
from .controller import UniFiController
|
||||
|
||||
DataT = TypeVar("DataT", bound=APIItem | Outlet | Port)
|
||||
HandlerT = TypeVar("HandlerT", bound=APIHandler | Outlets | Ports)
|
||||
HandlerT = TypeVar("HandlerT", bound=APIHandler)
|
||||
SubscriptionT = Callable[[CallbackType, ItemEvent], UnsubscribeType]
|
||||
|
||||
|
||||
|
@ -64,7 +59,7 @@ def async_device_device_info_fn(api: aiounifi.Controller, obj_id: str) -> Device
|
|||
|
||||
|
||||
@dataclass
|
||||
class UnifiDescription(Generic[HandlerT, DataT]):
|
||||
class UnifiDescription(Generic[HandlerT, ApiItemT]):
|
||||
"""Validate and load entities from different UniFi handlers."""
|
||||
|
||||
allowed_fn: Callable[[UniFiController, str], bool]
|
||||
|
@ -73,21 +68,21 @@ class UnifiDescription(Generic[HandlerT, DataT]):
|
|||
device_info_fn: Callable[[aiounifi.Controller, str], DeviceInfo | None]
|
||||
event_is_on: tuple[EventKey, ...] | None
|
||||
event_to_subscribe: tuple[EventKey, ...] | None
|
||||
name_fn: Callable[[DataT], str | None]
|
||||
object_fn: Callable[[aiounifi.Controller, str], DataT]
|
||||
name_fn: Callable[[ApiItemT], str | None]
|
||||
object_fn: Callable[[aiounifi.Controller, str], ApiItemT]
|
||||
supported_fn: Callable[[UniFiController, str], bool | None]
|
||||
unique_id_fn: Callable[[UniFiController, str], str]
|
||||
|
||||
|
||||
@dataclass
|
||||
class UnifiEntityDescription(EntityDescription, UnifiDescription[HandlerT, DataT]):
|
||||
class UnifiEntityDescription(EntityDescription, UnifiDescription[HandlerT, ApiItemT]):
|
||||
"""UniFi Entity Description."""
|
||||
|
||||
|
||||
class UnifiEntity(Entity, Generic[HandlerT, DataT]):
|
||||
class UnifiEntity(Entity, Generic[HandlerT, ApiItemT]):
|
||||
"""Representation of a UniFi entity."""
|
||||
|
||||
entity_description: UnifiEntityDescription[HandlerT, DataT]
|
||||
entity_description: UnifiEntityDescription[HandlerT, ApiItemT]
|
||||
_attr_should_poll = False
|
||||
|
||||
_attr_unique_id: str
|
||||
|
@ -96,7 +91,7 @@ class UnifiEntity(Entity, Generic[HandlerT, DataT]):
|
|||
self,
|
||||
obj_id: str,
|
||||
controller: UniFiController,
|
||||
description: UnifiEntityDescription[HandlerT, DataT],
|
||||
description: UnifiEntityDescription[HandlerT, ApiItemT],
|
||||
) -> None:
|
||||
"""Set up UniFi switch entity."""
|
||||
self._obj_id = obj_id
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
"iot_class": "local_push",
|
||||
"loggers": ["aiounifi"],
|
||||
"quality_scale": "platinum",
|
||||
"requirements": ["aiounifi==44"],
|
||||
"requirements": ["aiounifi==45"],
|
||||
"ssdp": [
|
||||
{
|
||||
"manufacturer": "Ubiquiti Networks",
|
||||
|
|
|
@ -14,6 +14,7 @@ import aiounifi
|
|||
from aiounifi.interfaces.api_handlers import ItemEvent
|
||||
from aiounifi.interfaces.clients import Clients
|
||||
from aiounifi.interfaces.ports import Ports
|
||||
from aiounifi.models.api import ApiItemT
|
||||
from aiounifi.models.client import Client
|
||||
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 .controller import UniFiController
|
||||
from .entity import (
|
||||
DataT,
|
||||
HandlerT,
|
||||
UnifiEntity,
|
||||
UnifiEntityDescription,
|
||||
|
@ -80,17 +80,17 @@ def async_client_device_info_fn(api: aiounifi.Controller, obj_id: str) -> Device
|
|||
|
||||
|
||||
@dataclass
|
||||
class UnifiSensorEntityDescriptionMixin(Generic[HandlerT, DataT]):
|
||||
class UnifiSensorEntityDescriptionMixin(Generic[HandlerT, ApiItemT]):
|
||||
"""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
|
||||
class UnifiSensorEntityDescription(
|
||||
SensorEntityDescription,
|
||||
UnifiEntityDescription[HandlerT, DataT],
|
||||
UnifiSensorEntityDescriptionMixin[HandlerT, DataT],
|
||||
UnifiEntityDescription[HandlerT, ApiItemT],
|
||||
UnifiSensorEntityDescriptionMixin[HandlerT, ApiItemT],
|
||||
):
|
||||
"""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."""
|
||||
|
||||
entity_description: UnifiSensorEntityDescription[HandlerT, DataT]
|
||||
entity_description: UnifiSensorEntityDescription[HandlerT, ApiItemT]
|
||||
|
||||
@callback
|
||||
def async_update_state(self, event: ItemEvent, obj_id: str) -> None:
|
||||
|
|
|
@ -17,6 +17,7 @@ from aiounifi.interfaces.clients import Clients
|
|||
from aiounifi.interfaces.dpi_restriction_groups import DPIRestrictionGroups
|
||||
from aiounifi.interfaces.outlets import Outlets
|
||||
from aiounifi.interfaces.ports import Ports
|
||||
from aiounifi.models.api import ApiItemT
|
||||
from aiounifi.models.client import Client, ClientBlockRequest
|
||||
from aiounifi.models.device import (
|
||||
DeviceSetOutletRelayRequest,
|
||||
|
@ -47,7 +48,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
|||
from .const import ATTR_MANUFACTURER, DOMAIN as UNIFI_DOMAIN
|
||||
from .controller import UniFiController
|
||||
from .entity import (
|
||||
DataT,
|
||||
HandlerT,
|
||||
SubscriptionT,
|
||||
UnifiEntity,
|
||||
|
@ -136,18 +136,18 @@ async def async_poe_port_control_fn(
|
|||
|
||||
|
||||
@dataclass
|
||||
class UnifiSwitchEntityDescriptionMixin(Generic[HandlerT, DataT]):
|
||||
class UnifiSwitchEntityDescriptionMixin(Generic[HandlerT, ApiItemT]):
|
||||
"""Validate and load entities from different UniFi handlers."""
|
||||
|
||||
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
|
||||
class UnifiSwitchEntityDescription(
|
||||
SwitchEntityDescription,
|
||||
UnifiEntityDescription[HandlerT, DataT],
|
||||
UnifiSwitchEntityDescriptionMixin[HandlerT, DataT],
|
||||
UnifiEntityDescription[HandlerT, ApiItemT],
|
||||
UnifiSwitchEntityDescriptionMixin[HandlerT, ApiItemT],
|
||||
):
|
||||
"""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."""
|
||||
|
||||
entity_description: UnifiSwitchEntityDescription[HandlerT, DataT]
|
||||
entity_description: UnifiSwitchEntityDescription[HandlerT, ApiItemT]
|
||||
only_event_for_state_change = False
|
||||
|
||||
@callback
|
||||
|
|
|
@ -291,7 +291,7 @@ aiosyncthing==0.5.1
|
|||
aiotractive==0.5.5
|
||||
|
||||
# homeassistant.components.unifi
|
||||
aiounifi==44
|
||||
aiounifi==45
|
||||
|
||||
# homeassistant.components.vlc_telnet
|
||||
aiovlc==0.1.0
|
||||
|
|
|
@ -272,7 +272,7 @@ aiosyncthing==0.5.1
|
|||
aiotractive==0.5.5
|
||||
|
||||
# homeassistant.components.unifi
|
||||
aiounifi==44
|
||||
aiounifi==45
|
||||
|
||||
# homeassistant.components.vlc_telnet
|
||||
aiovlc==0.1.0
|
||||
|
|
Loading…
Add table
Reference in a new issue