uiprotect 0.3.6__tar.gz → 0.3.7__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 (36) hide show
  1. {uiprotect-0.3.6 → uiprotect-0.3.7}/PKG-INFO +1 -1
  2. {uiprotect-0.3.6 → uiprotect-0.3.7}/pyproject.toml +1 -1
  3. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/base.py +5 -0
  4. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/base.py +19 -4
  5. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/bootstrap.py +5 -1
  6. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/devices.py +4 -1
  7. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/nvr.py +9 -2
  8. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/types.py +12 -3
  9. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/user.py +4 -1
  10. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/utils.py +12 -2
  11. {uiprotect-0.3.6 → uiprotect-0.3.7}/LICENSE +0 -0
  12. {uiprotect-0.3.6 → uiprotect-0.3.7}/README.md +0 -0
  13. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/__init__.py +0 -0
  14. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/__main__.py +0 -0
  15. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/api.py +0 -0
  16. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/__init__.py +0 -0
  17. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/backup.py +0 -0
  18. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/cameras.py +0 -0
  19. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/chimes.py +0 -0
  20. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/doorlocks.py +0 -0
  21. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/events.py +0 -0
  22. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/lights.py +0 -0
  23. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/liveviews.py +0 -0
  24. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/nvr.py +0 -0
  25. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/sensors.py +0 -0
  26. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/cli/viewers.py +0 -0
  27. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/__init__.py +0 -0
  28. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/convert.py +0 -0
  29. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/data/websocket.py +0 -0
  30. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/exceptions.py +0 -0
  31. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/py.typed +0 -0
  32. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/release_cache.json +0 -0
  33. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/stream.py +0 -0
  34. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/test_util/__init__.py +0 -0
  35. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/test_util/anonymize.py +0 -0
  36. {uiprotect-0.3.6 → uiprotect-0.3.7}/src/uiprotect/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uiprotect
3
- Version: 0.3.6
3
+ Version: 0.3.7
4
4
  Summary: Python API for Unifi Protect (Unofficial)
5
5
  Home-page: https://github.com/uilibs/uiprotect
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "uiprotect"
3
- version = "0.3.6"
3
+ version = "0.3.7"
4
4
  description = "Python API for Unifi Protect (Unofficial)"
5
5
  authors = ["UI Protect Maintainers <ui@koston.org>"]
6
6
  license = "MIT"
@@ -14,6 +14,11 @@ from uiprotect.data import NVR, ProtectAdoptableDeviceModel, ProtectBaseObject
14
14
  from uiprotect.exceptions import BadRequest, NvrError, StreamError
15
15
  from uiprotect.utils import run_async
16
16
 
17
+ try:
18
+ from pydantic.v1 import ValidationError
19
+ except ImportError:
20
+ from pydantic import ValidationError # type: ignore[assignment]
21
+
17
22
  T = TypeVar("T")
18
23
 
19
24
  OPTION_FORCE = typer.Option(False, "-f", "--force", help="Skip confirmation prompt")
@@ -11,9 +11,6 @@ from ipaddress import IPv4Address
11
11
  from typing import TYPE_CHECKING, Any, ClassVar, TypeVar
12
12
  from uuid import UUID
13
13
 
14
- from pydantic.v1 import BaseModel
15
- from pydantic.v1.fields import SHAPE_DICT, SHAPE_LIST, PrivateAttr
16
-
17
14
  from uiprotect.data.types import (
18
15
  ModelType,
19
16
  PercentFloat,
@@ -37,10 +34,20 @@ from uiprotect.utils import (
37
34
  to_snake_case,
38
35
  )
39
36
 
37
+ try:
38
+ from pydantic.v1 import BaseModel
39
+ from pydantic.v1.fields import SHAPE_DICT, SHAPE_LIST, PrivateAttr
40
+ except ImportError:
41
+ from pydantic import BaseModel # type: ignore[assignment, no-redef]
42
+ from pydantic.fields import ( # type: ignore[attr-defined, assignment, no-redef]
43
+ SHAPE_DICT,
44
+ SHAPE_LIST,
45
+ PrivateAttr,
46
+ )
47
+
40
48
  if TYPE_CHECKING:
41
49
  from asyncio.events import TimerHandle
42
50
 
43
- from pydantic.v1.typing import DictStrAny, SetStr
44
51
  from typing_extensions import Self # requires Python 3.11+
45
52
 
46
53
  from uiprotect.api import ProtectApiClient
@@ -48,6 +55,14 @@ if TYPE_CHECKING:
48
55
  from uiprotect.data.nvr import Event
49
56
  from uiprotect.data.user import User
50
57
 
58
+ try:
59
+ from pydantic.v1.typing import DictStrAny, SetStr
60
+ except ImportError:
61
+ from pydantic.typing import ( # type: ignore[assignment, no-redef]
62
+ DictStrAny,
63
+ SetStr,
64
+ )
65
+
51
66
 
52
67
  ProtectObject = TypeVar("ProtectObject", bound="ProtectBaseObject")
53
68
  RECENT_EVENT_MAX = timedelta(seconds=30)
@@ -11,7 +11,11 @@ from typing import Any, cast
11
11
  from uuid import UUID
12
12
 
13
13
  from aiohttp.client_exceptions import ServerDisconnectedError
14
- from pydantic.v1 import PrivateAttr, ValidationError
14
+
15
+ try:
16
+ from pydantic.v1 import PrivateAttr, ValidationError
17
+ except ImportError:
18
+ from pydantic import PrivateAttr, ValidationError # type: ignore[assignment]
15
19
 
16
20
  from uiprotect.data.base import (
17
21
  RECENT_EVENT_MAX,
@@ -12,7 +12,10 @@ from ipaddress import IPv4Address
12
12
  from pathlib import Path
13
13
  from typing import TYPE_CHECKING, Any, Literal, cast
14
14
 
15
- from pydantic.v1.fields import PrivateAttr
15
+ try:
16
+ from pydantic.v1.fields import PrivateAttr
17
+ except ImportError:
18
+ from pydantic.fields import PrivateAttr
16
19
 
17
20
  from uiprotect.data.base import (
18
21
  EVENT_PING_INTERVAL,
@@ -15,7 +15,6 @@ from uuid import UUID
15
15
  import aiofiles
16
16
  import orjson
17
17
  from aiofiles import os as aos
18
- from pydantic.v1.fields import PrivateAttr
19
18
 
20
19
  from uiprotect.data.base import (
21
20
  ProtectBaseObject,
@@ -58,8 +57,16 @@ from uiprotect.data.user import User, UserLocation
58
57
  from uiprotect.exceptions import BadRequest, NotAuthorized
59
58
  from uiprotect.utils import RELEASE_CACHE, process_datetime
60
59
 
60
+ try:
61
+ from pydantic.v1.fields import PrivateAttr
62
+ except ImportError:
63
+ from pydantic.fields import PrivateAttr
64
+
61
65
  if TYPE_CHECKING:
62
- from pydantic.v1.typing import SetStr
66
+ try:
67
+ from pydantic.v1.typing import SetStr
68
+ except ImportError:
69
+ from pydantic.typing import SetStr # type: ignore[assignment, no-redef]
63
70
 
64
71
 
65
72
  _LOGGER = logging.getLogger(__name__)
@@ -5,9 +5,18 @@ from collections.abc import Callable, Coroutine
5
5
  from typing import Any, Literal, Optional, TypeVar, Union
6
6
 
7
7
  from packaging.version import Version as BaseVersion
8
- from pydantic.v1 import BaseModel, ConstrainedInt
9
- from pydantic.v1.color import Color as BaseColor
10
- from pydantic.v1.types import ConstrainedFloat, ConstrainedStr
8
+
9
+ try:
10
+ from pydantic.v1 import BaseModel, ConstrainedInt
11
+ from pydantic.v1.color import Color as BaseColor
12
+ from pydantic.v1.types import ConstrainedFloat, ConstrainedStr
13
+ except ImportError:
14
+ from pydantic import BaseModel, ConstrainedInt # type: ignore[assignment, no-redef]
15
+ from pydantic.color import Color as BaseColor # type: ignore[assignment, no-redef]
16
+ from pydantic.types import ( # type: ignore[assignment, no-redef]
17
+ ConstrainedFloat,
18
+ ConstrainedStr,
19
+ )
11
20
 
12
21
  KT = TypeVar("KT")
13
22
  VT = TypeVar("VT")
@@ -6,7 +6,10 @@ from datetime import datetime
6
6
  from functools import cache
7
7
  from typing import Any
8
8
 
9
- from pydantic.v1.fields import PrivateAttr
9
+ try:
10
+ from pydantic.v1.fields import PrivateAttr
11
+ except ImportError:
12
+ from pydantic.fields import PrivateAttr
10
13
 
11
14
  from uiprotect.data.base import ProtectBaseObject, ProtectModel, ProtectModelWithId
12
15
  from uiprotect.data.types import ModelType, PermissionNode
@@ -28,8 +28,6 @@ from uuid import UUID
28
28
 
29
29
  import jwt
30
30
  from aiohttp import ClientResponse
31
- from pydantic.v1.fields import SHAPE_DICT, SHAPE_LIST, SHAPE_SET, ModelField
32
- from pydantic.v1.utils import to_camel
33
31
 
34
32
  from uiprotect.data.types import (
35
33
  Color,
@@ -40,6 +38,18 @@ from uiprotect.data.types import (
40
38
  )
41
39
  from uiprotect.exceptions import NvrError
42
40
 
41
+ try:
42
+ from pydantic.v1.fields import SHAPE_DICT, SHAPE_LIST, SHAPE_SET, ModelField
43
+ from pydantic.v1.utils import to_camel
44
+ except ImportError:
45
+ from pydantic.fields import ( # type: ignore[assignment, no-redef, attr-defined]
46
+ SHAPE_DICT,
47
+ SHAPE_LIST,
48
+ SHAPE_SET,
49
+ ModelField,
50
+ )
51
+ from pydantic.utils import to_camel # type: ignore[assignment, no-redef]
52
+
43
53
  if TYPE_CHECKING:
44
54
  from uiprotect.api import ProtectApiClient
45
55
  from uiprotect.data import CoordType, Event
File without changes
File without changes