uiprotect 7.4.1__tar.gz → 7.5.0__tar.gz
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-7.4.1 → uiprotect-7.5.0}/PKG-INFO +1 -2
- {uiprotect-7.4.1 → uiprotect-7.5.0}/pyproject.toml +1 -1
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/base.py +3 -3
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/devices.py +8 -4
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/utils.py +2 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/LICENSE +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/README.md +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/__init__.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/__main__.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/_compat.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/api.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/__init__.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/aiports.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/backup.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/base.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/cameras.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/chimes.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/doorlocks.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/events.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/lights.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/liveviews.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/nvr.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/sensors.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/cli/viewers.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/__init__.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/bootstrap.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/convert.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/nvr.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/types.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/user.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/data/websocket.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/exceptions.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/py.typed +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/release_cache.json +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/stream.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/test_util/__init__.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/test_util/anonymize.py +0 -0
- {uiprotect-7.4.1 → uiprotect-7.5.0}/src/uiprotect/websocket.py +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: uiprotect
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.5.0
|
|
4
4
|
Summary: Python API for Unifi Protect (Unofficial)
|
|
5
|
-
Home-page: https://github.com/uilibs/uiprotect
|
|
6
5
|
Author: UI Protect Maintainers
|
|
7
6
|
Author-email: ui@koston.org
|
|
8
7
|
Requires-Python: >=3.10
|
|
@@ -721,9 +721,9 @@ class ProtectModelWithId(ProtectModel):
|
|
|
721
721
|
updated,
|
|
722
722
|
)
|
|
723
723
|
|
|
724
|
-
assert (
|
|
725
|
-
|
|
726
|
-
)
|
|
724
|
+
assert self._update_sync.lock.locked(), (
|
|
725
|
+
"save_device_changes should only be called when the update lock is held"
|
|
726
|
+
)
|
|
727
727
|
read_only_fields = self.__class__._get_read_only_fields()
|
|
728
728
|
|
|
729
729
|
if self.model is None:
|
|
@@ -250,8 +250,8 @@ class CameraChannel(ProtectBaseObject):
|
|
|
250
250
|
height: int
|
|
251
251
|
fps: int
|
|
252
252
|
bitrate: int
|
|
253
|
-
min_bitrate: int # read only
|
|
254
|
-
max_bitrate: int # read only
|
|
253
|
+
min_bitrate: int | None = None # read only
|
|
254
|
+
max_bitrate: int | None = None # read only
|
|
255
255
|
min_client_adaptive_bit_rate: int | None = None # read only
|
|
256
256
|
min_motion_adaptive_bit_rate: int | None = None # read only
|
|
257
257
|
fps_values: list[int] # read only
|
|
@@ -390,6 +390,8 @@ class RecordingSettings(ProtectBaseObject):
|
|
|
390
390
|
retention_duration: datetime | None = None
|
|
391
391
|
smart_detect_post_padding: timedelta | None = None
|
|
392
392
|
smart_detect_pre_padding: timedelta | None = None
|
|
393
|
+
# requires 5.2.39+
|
|
394
|
+
create_access_event: bool | None = None
|
|
393
395
|
|
|
394
396
|
@classmethod
|
|
395
397
|
@cache
|
|
@@ -543,7 +545,7 @@ class LCDMessage(ProtectBaseObject):
|
|
|
543
545
|
class TalkbackSettings(ProtectBaseObject):
|
|
544
546
|
type_fmt: AudioCodecs
|
|
545
547
|
type_in: str
|
|
546
|
-
bind_addr: IPv4Address
|
|
548
|
+
bind_addr: IPv4Address | None = None
|
|
547
549
|
bind_port: int
|
|
548
550
|
filter_addr: str | None = None # can be used to restrict sender address
|
|
549
551
|
filter_port: int | None = None # can be used to restrict sender port
|
|
@@ -945,7 +947,7 @@ class Camera(ProtectMotionDeviceModel):
|
|
|
945
947
|
feature_flags: CameraFeatureFlags
|
|
946
948
|
lcd_message: LCDMessage | None = None
|
|
947
949
|
lenses: list[CameraLenses]
|
|
948
|
-
platform: str
|
|
950
|
+
platform: str | None = None
|
|
949
951
|
has_speaker: bool
|
|
950
952
|
has_wifi: bool
|
|
951
953
|
audio_bitrate: int
|
|
@@ -978,6 +980,8 @@ class Camera(ProtectMotionDeviceModel):
|
|
|
978
980
|
is_third_party_camera: bool | None = None
|
|
979
981
|
# requires 5.1.78+
|
|
980
982
|
is_paired_with_ai_port: bool | None = None
|
|
983
|
+
# requires 5.2.39+
|
|
984
|
+
is_adopted_by_access_app: bool | None = None
|
|
981
985
|
# TODO: used for adopting
|
|
982
986
|
# apMac read only
|
|
983
987
|
# apRssi read only
|
|
@@ -241,6 +241,8 @@ def convert_unifi_data(value: Any, field: FieldInfo) -> Any:
|
|
|
241
241
|
# 00000000-0000-00 0- 000-000000000000
|
|
242
242
|
if type_ is UUID and value == _BAD_UUID:
|
|
243
243
|
return _EMPTY_UUID
|
|
244
|
+
if (type_ is IPv4Address) and value == "":
|
|
245
|
+
return None
|
|
244
246
|
return type_(value)
|
|
245
247
|
if _is_enum_type(type_):
|
|
246
248
|
if _is_from_string_enum(type_):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|