uiprotect 7.20.0__tar.gz → 7.21.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.20.0 → uiprotect-7.21.0}/PKG-INFO +1 -1
- {uiprotect-7.20.0 → uiprotect-7.21.0}/pyproject.toml +5 -5
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/api.py +39 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/LICENSE +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/README.md +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/__init__.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/__main__.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/_compat.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/__init__.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/aiports.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/backup.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/base.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/cameras.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/chimes.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/doorlocks.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/events.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/lights.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/liveviews.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/nvr.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/sensors.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/viewers.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/__init__.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/base.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/bootstrap.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/convert.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/devices.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/nvr.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/types.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/user.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/websocket.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/exceptions.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/py.typed +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/release_cache.json +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/stream.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/test_util/__init__.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/test_util/anonymize.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/utils.py +0 -0
- {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/websocket.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "uiprotect"
|
|
3
|
-
version = "7.
|
|
3
|
+
version = "7.21.0"
|
|
4
4
|
license = "MIT"
|
|
5
5
|
description = "Python API for Unifi Protect (Unofficial)"
|
|
6
6
|
authors = [{ name = "UI Protect Maintainers", email = "ui@koston.org" }]
|
|
@@ -62,7 +62,7 @@ pytest-timeout = "^2.4.0"
|
|
|
62
62
|
pytest-xdist = "^3.7.0"
|
|
63
63
|
types-aiofiles = ">=23.2.0.20240403,<25.0.0.0"
|
|
64
64
|
types-dateparser = "^1.2.0.20250601"
|
|
65
|
-
mypy = "^1.
|
|
65
|
+
mypy = "^1.17.1"
|
|
66
66
|
|
|
67
67
|
[tool.poetry.group.docs]
|
|
68
68
|
optional = true
|
|
@@ -73,12 +73,12 @@ sphinx = { version = ">=4.0", python = ">=3.11"}
|
|
|
73
73
|
furo = { version = ">=2023.5.20", python = ">=3.11"}
|
|
74
74
|
sphinx-autobuild = { version = ">=2024.0.0", python = ">=3.11"}
|
|
75
75
|
mike = "^2.1.1"
|
|
76
|
-
mkdocs-material = "^9.6.
|
|
76
|
+
mkdocs-material = "^9.6.16"
|
|
77
77
|
mkdocs-material-extensions = "^1.3.1"
|
|
78
|
-
pymdown-extensions = "^10.
|
|
78
|
+
pymdown-extensions = "^10.16.1"
|
|
79
79
|
mkdocs-git-revision-date-localized-plugin = "^1.4.7"
|
|
80
80
|
mkdocs-include-markdown-plugin = ">=6.1.1,<8.0.0"
|
|
81
|
-
mkdocstrings = ">=0.25.1,<0.
|
|
81
|
+
mkdocstrings = ">=0.25.1,<0.31.0"
|
|
82
82
|
mkdocstrings-python = "^1.16.12"
|
|
83
83
|
|
|
84
84
|
[tool.semantic_release]
|
|
@@ -2263,3 +2263,42 @@ class ProtectApiClient(BaseApiClient):
|
|
|
2263
2263
|
if not isinstance(data, dict):
|
|
2264
2264
|
raise NvrError("Failed to retrieve meta info from public API")
|
|
2265
2265
|
return MetaInfo(**data)
|
|
2266
|
+
|
|
2267
|
+
# Public API Methods
|
|
2268
|
+
|
|
2269
|
+
async def get_nvr_public(self) -> NVR:
|
|
2270
|
+
"""Get NVR information using public API."""
|
|
2271
|
+
data = await self.api_request_obj(url="/v1/nvrs", public_api=True)
|
|
2272
|
+
return NVR.from_unifi_dict(**data, api=self)
|
|
2273
|
+
|
|
2274
|
+
async def get_lights_public(self) -> list[Light]:
|
|
2275
|
+
"""Get all lights using public API."""
|
|
2276
|
+
data = await self.api_request_list(url="/v1/lights", public_api=True)
|
|
2277
|
+
return [Light.from_unifi_dict(**light_data, api=self) for light_data in data]
|
|
2278
|
+
|
|
2279
|
+
async def get_light_public(self, light_id: str) -> Light:
|
|
2280
|
+
"""Get a specific light using public API."""
|
|
2281
|
+
data = await self.api_request_obj(url=f"/v1/lights/{light_id}", public_api=True)
|
|
2282
|
+
return Light.from_unifi_dict(**data, api=self)
|
|
2283
|
+
|
|
2284
|
+
async def get_cameras_public(self) -> list[Camera]:
|
|
2285
|
+
"""Get all cameras using public API."""
|
|
2286
|
+
data = await self.api_request_list(url="/v1/cameras", public_api=True)
|
|
2287
|
+
return [Camera.from_unifi_dict(**camera_data, api=self) for camera_data in data]
|
|
2288
|
+
|
|
2289
|
+
async def get_camera_public(self, camera_id: str) -> Camera:
|
|
2290
|
+
"""Get a specific camera using public API."""
|
|
2291
|
+
data = await self.api_request_obj(
|
|
2292
|
+
url=f"/v1/cameras/{camera_id}", public_api=True
|
|
2293
|
+
)
|
|
2294
|
+
return Camera.from_unifi_dict(**data, api=self)
|
|
2295
|
+
|
|
2296
|
+
async def get_chimes_public(self) -> list[Chime]:
|
|
2297
|
+
"""Get all chimes using public API."""
|
|
2298
|
+
data = await self.api_request_list(url="/v1/chimes", public_api=True)
|
|
2299
|
+
return [Chime.from_unifi_dict(**chime_data, api=self) for chime_data in data]
|
|
2300
|
+
|
|
2301
|
+
async def get_chime_public(self, chime_id: str) -> Chime:
|
|
2302
|
+
"""Get a specific chime using public API."""
|
|
2303
|
+
data = await self.api_request_obj(url=f"/v1/chimes/{chime_id}", public_api=True)
|
|
2304
|
+
return Chime.from_unifi_dict(**data, api=self)
|
|
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
|
|
File without changes
|
|
File without changes
|