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.

Files changed (38) hide show
  1. {uiprotect-7.20.0 → uiprotect-7.21.0}/PKG-INFO +1 -1
  2. {uiprotect-7.20.0 → uiprotect-7.21.0}/pyproject.toml +5 -5
  3. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/api.py +39 -0
  4. {uiprotect-7.20.0 → uiprotect-7.21.0}/LICENSE +0 -0
  5. {uiprotect-7.20.0 → uiprotect-7.21.0}/README.md +0 -0
  6. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/__init__.py +0 -0
  7. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/__main__.py +0 -0
  8. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/_compat.py +0 -0
  9. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/__init__.py +0 -0
  10. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/aiports.py +0 -0
  11. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/backup.py +0 -0
  12. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/base.py +0 -0
  13. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/cameras.py +0 -0
  14. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/chimes.py +0 -0
  15. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/doorlocks.py +0 -0
  16. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/events.py +0 -0
  17. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/lights.py +0 -0
  18. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/liveviews.py +0 -0
  19. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/nvr.py +0 -0
  20. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/sensors.py +0 -0
  21. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/cli/viewers.py +0 -0
  22. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/__init__.py +0 -0
  23. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/base.py +0 -0
  24. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/bootstrap.py +0 -0
  25. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/convert.py +0 -0
  26. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/devices.py +0 -0
  27. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/nvr.py +0 -0
  28. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/types.py +0 -0
  29. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/user.py +0 -0
  30. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/data/websocket.py +0 -0
  31. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/exceptions.py +0 -0
  32. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/py.typed +0 -0
  33. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/release_cache.json +0 -0
  34. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/stream.py +0 -0
  35. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/test_util/__init__.py +0 -0
  36. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/test_util/anonymize.py +0 -0
  37. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/utils.py +0 -0
  38. {uiprotect-7.20.0 → uiprotect-7.21.0}/src/uiprotect/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: uiprotect
3
- Version: 7.20.0
3
+ Version: 7.21.0
4
4
  Summary: Python API for Unifi Protect (Unofficial)
5
5
  License: MIT
6
6
  Author: UI Protect Maintainers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "uiprotect"
3
- version = "7.20.0"
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.16.0"
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.14"
76
+ mkdocs-material = "^9.6.16"
77
77
  mkdocs-material-extensions = "^1.3.1"
78
- pymdown-extensions = "^10.8.1"
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.30.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