uiprotect 1.14.0__py3-none-any.whl → 1.16.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of uiprotect might be problematic. Click here for more details.
- uiprotect/data/base.py +10 -16
- uiprotect/data/bootstrap.py +14 -16
- {uiprotect-1.14.0.dist-info → uiprotect-1.16.0.dist-info}/METADATA +1 -1
- {uiprotect-1.14.0.dist-info → uiprotect-1.16.0.dist-info}/RECORD +7 -7
- {uiprotect-1.14.0.dist-info → uiprotect-1.16.0.dist-info}/LICENSE +0 -0
- {uiprotect-1.14.0.dist-info → uiprotect-1.16.0.dist-info}/WHEEL +0 -0
- {uiprotect-1.14.0.dist-info → uiprotect-1.16.0.dist-info}/entry_points.txt +0 -0
uiprotect/data/base.py
CHANGED
|
@@ -401,15 +401,12 @@ class ProtectBaseObject(BaseModel):
|
|
|
401
401
|
if not isinstance(value, list):
|
|
402
402
|
return value
|
|
403
403
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
if isinstance(item, ProtectBaseObject)
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
items.append(new_item)
|
|
411
|
-
|
|
412
|
-
return items
|
|
404
|
+
return [
|
|
405
|
+
item.unifi_dict()
|
|
406
|
+
if isinstance(item, ProtectBaseObject)
|
|
407
|
+
else klass.construct({}).unifi_dict(data=item) # type: ignore[arg-type]
|
|
408
|
+
for item in value
|
|
409
|
+
]
|
|
413
410
|
|
|
414
411
|
def _unifi_dict_protect_obj_dict(
|
|
415
412
|
self,
|
|
@@ -424,13 +421,10 @@ class ProtectBaseObject(BaseModel):
|
|
|
424
421
|
if not isinstance(value, dict):
|
|
425
422
|
return value
|
|
426
423
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
items[obj_key] = obj
|
|
432
|
-
|
|
433
|
-
return items
|
|
424
|
+
return {
|
|
425
|
+
obj_key: obj.unifi_dict() if isinstance(obj, ProtectBaseObject) else obj
|
|
426
|
+
for obj_key, obj in value.items()
|
|
427
|
+
}
|
|
434
428
|
|
|
435
429
|
def unifi_dict(
|
|
436
430
|
self,
|
uiprotect/data/bootstrap.py
CHANGED
|
@@ -9,7 +9,7 @@ from copy import deepcopy
|
|
|
9
9
|
from dataclasses import dataclass
|
|
10
10
|
from datetime import datetime
|
|
11
11
|
from functools import cache
|
|
12
|
-
from typing import TYPE_CHECKING, Any
|
|
12
|
+
from typing import TYPE_CHECKING, Any
|
|
13
13
|
|
|
14
14
|
from aiohttp.client_exceptions import ServerDisconnectedError
|
|
15
15
|
|
|
@@ -298,20 +298,20 @@ class Bootstrap(ProtectBaseObject):
|
|
|
298
298
|
|
|
299
299
|
def get_device_from_mac(self, mac: str) -> ProtectAdoptableDeviceModel | None:
|
|
300
300
|
"""Retrieve a device from MAC address."""
|
|
301
|
-
|
|
302
|
-
if ref is None:
|
|
303
|
-
return None
|
|
304
|
-
|
|
305
|
-
devices: dict[str, ProtectModelWithId] = getattr(self, ref.model.devices_key)
|
|
306
|
-
return cast(ProtectAdoptableDeviceModel, devices.get(ref.id))
|
|
301
|
+
return self._get_device_from_ref(self.mac_lookup.get(normalize_mac(mac)))
|
|
307
302
|
|
|
308
303
|
def get_device_from_id(self, device_id: str) -> ProtectAdoptableDeviceModel | None:
|
|
309
304
|
"""Retrieve a device from device ID (without knowing model type)."""
|
|
310
|
-
|
|
305
|
+
return self._get_device_from_ref(self.id_lookup.get(device_id))
|
|
306
|
+
|
|
307
|
+
def _get_device_from_ref(
|
|
308
|
+
self, ref: ProtectDeviceRef | None
|
|
309
|
+
) -> ProtectAdoptableDeviceModel | None:
|
|
311
310
|
if ref is None:
|
|
312
311
|
return None
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
devices_key = ref.model.devices_key
|
|
313
|
+
devices: dict[str, ProtectAdoptableDeviceModel] = getattr(self, devices_key)
|
|
314
|
+
return devices[ref.id]
|
|
315
315
|
|
|
316
316
|
def process_event(self, event: Event) -> None:
|
|
317
317
|
event_type = event.type
|
|
@@ -386,9 +386,8 @@ class Bootstrap(ProtectBaseObject):
|
|
|
386
386
|
def _process_remove_packet(
|
|
387
387
|
self, model_type: ModelType, packet: WSPacket
|
|
388
388
|
) -> WSSubscriptionMessage | None:
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
)
|
|
389
|
+
devices_key = model_type.devices_key
|
|
390
|
+
devices: dict[str, ProtectDeviceModel] | None = getattr(self, devices_key, None)
|
|
392
391
|
|
|
393
392
|
if devices is None:
|
|
394
393
|
return None
|
|
@@ -615,9 +614,8 @@ class Bootstrap(ProtectBaseObject):
|
|
|
615
614
|
if isinstance(device, NVR):
|
|
616
615
|
self.nvr = device
|
|
617
616
|
else:
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
)
|
|
617
|
+
devices_key = model_type.devices_key
|
|
618
|
+
devices: dict[str, ProtectModelWithId] = getattr(self, devices_key)
|
|
621
619
|
devices[device.id] = device
|
|
622
620
|
_LOGGER.debug("Successfully refresh model: %s %s", model_type, device_id)
|
|
623
621
|
|
|
@@ -14,8 +14,8 @@ uiprotect/cli/nvr.py,sha256=TwxEg2XT8jXAbOqv6gc7KFXELKadeItEDYweSL4_-e8,4260
|
|
|
14
14
|
uiprotect/cli/sensors.py,sha256=fQtcDJCVxs4VbAqcavgBy2ABiVxAW3GXtna6_XFBp2k,8153
|
|
15
15
|
uiprotect/cli/viewers.py,sha256=2cyrp104ffIvgT0wYGIO0G35QMkEbFe7fSVqLwDXQYQ,2171
|
|
16
16
|
uiprotect/data/__init__.py,sha256=OcfuJl2qXfHcj_mdnrHhzZ5tEIZrw8auziX5IE7dn-I,2938
|
|
17
|
-
uiprotect/data/base.py,sha256=
|
|
18
|
-
uiprotect/data/bootstrap.py,sha256=
|
|
17
|
+
uiprotect/data/base.py,sha256=gsi5nBs6qOsSvexfjQsTSt1DUE3ESm9EHmeHrPGl90w,36461
|
|
18
|
+
uiprotect/data/bootstrap.py,sha256=copw7uL_YIthNH-PraSoqg5vL-UpGrt95zKy1FpHn5w,21881
|
|
19
19
|
uiprotect/data/convert.py,sha256=8h6Il_DhMkPRDPj9F_rA2UZIlTuchS3BQD24peKpk2A,2185
|
|
20
20
|
uiprotect/data/devices.py,sha256=Nq3bOko5PFf5LvEBoD4JV8kmbq50laRdh3VHMWX7t-0,111809
|
|
21
21
|
uiprotect/data/nvr.py,sha256=XC4NO1c_Mom-hIpzj9ksKFcgKbHd6ToqWjkgzxJ1PJY,47636
|
|
@@ -30,8 +30,8 @@ uiprotect/test_util/__init__.py,sha256=d2g7afa0LSdixQ0kjEDYwafDFME_UlW2LzxpamZ2B
|
|
|
30
30
|
uiprotect/test_util/anonymize.py,sha256=f-8ijU-_y9r-uAbhIPn0f0I6hzJpAkvJzc8UpWihObI,8478
|
|
31
31
|
uiprotect/utils.py,sha256=6OLY8hNiCzk418PjJJIlFW7jjPzVt1vxBKEzBSqMeTk,18418
|
|
32
32
|
uiprotect/websocket.py,sha256=JHI_2EZeRPqPyQopsBZS0dr3tu0HaTiqeLazfBXhW_8,7339
|
|
33
|
-
uiprotect-1.
|
|
34
|
-
uiprotect-1.
|
|
35
|
-
uiprotect-1.
|
|
36
|
-
uiprotect-1.
|
|
37
|
-
uiprotect-1.
|
|
33
|
+
uiprotect-1.16.0.dist-info/LICENSE,sha256=INx18jhdbVXMEiiBANeKEbrbz57ckgzxk5uutmmcxGk,1111
|
|
34
|
+
uiprotect-1.16.0.dist-info/METADATA,sha256=X_w4MPVwxNcZe3P4CcwOMpfD6TY67sEPZj0FSKJCoxI,10985
|
|
35
|
+
uiprotect-1.16.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
36
|
+
uiprotect-1.16.0.dist-info/entry_points.txt,sha256=J78AUTPrTTxgI3s7SVgrmGqDP7piX2wuuEORzhDdVRA,47
|
|
37
|
+
uiprotect-1.16.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|