uiprotect 1.8.0__tar.gz → 1.9.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 (36) hide show
  1. {uiprotect-1.8.0 → uiprotect-1.9.0}/PKG-INFO +1 -1
  2. {uiprotect-1.8.0 → uiprotect-1.9.0}/pyproject.toml +1 -1
  3. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/bootstrap.py +6 -6
  4. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/types.py +33 -19
  5. {uiprotect-1.8.0 → uiprotect-1.9.0}/LICENSE +0 -0
  6. {uiprotect-1.8.0 → uiprotect-1.9.0}/README.md +0 -0
  7. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/__init__.py +0 -0
  8. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/__main__.py +0 -0
  9. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/api.py +0 -0
  10. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/__init__.py +0 -0
  11. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/backup.py +0 -0
  12. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/base.py +0 -0
  13. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/cameras.py +0 -0
  14. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/chimes.py +0 -0
  15. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/doorlocks.py +0 -0
  16. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/events.py +0 -0
  17. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/lights.py +0 -0
  18. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/liveviews.py +0 -0
  19. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/nvr.py +0 -0
  20. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/sensors.py +0 -0
  21. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/cli/viewers.py +0 -0
  22. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/__init__.py +0 -0
  23. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/base.py +0 -0
  24. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/convert.py +0 -0
  25. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/devices.py +0 -0
  26. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/nvr.py +0 -0
  27. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/user.py +0 -0
  28. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/data/websocket.py +0 -0
  29. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/exceptions.py +0 -0
  30. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/py.typed +0 -0
  31. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/release_cache.json +0 -0
  32. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/stream.py +0 -0
  33. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/test_util/__init__.py +0 -0
  34. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/test_util/anonymize.py +0 -0
  35. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/utils.py +0 -0
  36. {uiprotect-1.8.0 → uiprotect-1.9.0}/src/uiprotect/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uiprotect
3
- Version: 1.8.0
3
+ Version: 1.9.0
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 = "1.8.0"
3
+ version = "1.9.0"
4
4
  description = "Python API for Unifi Protect (Unofficial)"
5
5
  authors = ["UI Protect Maintainers <ui@koston.org>"]
6
6
  license = "MIT"
@@ -193,8 +193,8 @@ class Bootstrap(ProtectBaseObject):
193
193
  )
194
194
  data["macLookup"] = {}
195
195
  data["idLookup"] = {}
196
- for model_type in ModelType.bootstrap_models_types_set():
197
- key = model_type.devices_key
196
+ for model_type in ModelType.bootstrap_models_types_set:
197
+ key = model_type.devices_key # type: ignore[attr-defined]
198
198
  items: dict[str, ProtectModel] = {}
199
199
  for item in data[key]:
200
200
  if (
@@ -230,8 +230,8 @@ class Bootstrap(ProtectBaseObject):
230
230
  if "idLookup" in data:
231
231
  del data["idLookup"]
232
232
 
233
- for model_type in ModelType.bootstrap_models_types_set():
234
- attr = model_type.devices_key
233
+ for model_type in ModelType.bootstrap_models_types_set:
234
+ attr = model_type.devices_key # type: ignore[attr-defined]
235
235
  if attr in data and isinstance(data[attr], dict):
236
236
  data[attr] = list(data[attr].values())
237
237
 
@@ -353,7 +353,7 @@ class Bootstrap(ProtectBaseObject):
353
353
  if TYPE_CHECKING:
354
354
  assert isinstance(obj, NVR)
355
355
  self.nvr = obj
356
- elif model_type in ModelType.bootstrap_models_types_set():
356
+ elif model_type in ModelType.bootstrap_models_types_set:
357
357
  if TYPE_CHECKING:
358
358
  assert isinstance(obj, ProtectAdoptableDeviceModel)
359
359
  if not self._api.ignore_unadopted or (
@@ -550,7 +550,7 @@ class Bootstrap(ProtectBaseObject):
550
550
  if action_action == "update":
551
551
  if model_type is ModelType.NVR:
552
552
  return self._process_nvr_update(packet, data, ignore_stats)
553
- if model_type in ModelType.bootstrap_models_types_and_event_set():
553
+ if model_type in ModelType.bootstrap_models_types_and_event_set:
554
554
  return self._process_device_update(
555
555
  model_type,
556
556
  packet,
@@ -109,6 +109,12 @@ class ModelType(str, UnknownValuesEnumMixin, enum.Enum):
109
109
  RECORDING_SCHEDULE = "recordingSchedule"
110
110
  UNKNOWN = "unknown"
111
111
 
112
+ bootstrap_model_types: tuple[ModelType, ...]
113
+ bootstrap_models: tuple[str, ...]
114
+ bootstrap_models_set: set[str]
115
+ bootstrap_models_types_set: set[ModelType]
116
+ bootstrap_models_types_and_event_set: set[ModelType]
117
+
112
118
  @cached_property
113
119
  def devices_key(self) -> str:
114
120
  """Return the devices key."""
@@ -119,9 +125,8 @@ class ModelType(str, UnknownValuesEnumMixin, enum.Enum):
119
125
  def from_string(cls, value: str) -> ModelType:
120
126
  return cls(value)
121
127
 
122
- @staticmethod
123
- @cache
124
- def bootstrap_model_types() -> tuple[ModelType, ...]:
128
+ @classmethod
129
+ def _bootstrap_model_types(cls) -> tuple[ModelType, ...]:
125
130
  """Return the bootstrap models as a tuple."""
126
131
  # TODO:
127
132
  # legacyUFV
@@ -139,31 +144,40 @@ class ModelType(str, UnknownValuesEnumMixin, enum.Enum):
139
144
  ModelType.CHIME,
140
145
  )
141
146
 
142
- @staticmethod
143
- @cache
144
- def bootstrap_models() -> tuple[str, ...]:
147
+ @classmethod
148
+ def _bootstrap_models(cls) -> tuple[str, ...]:
145
149
  """Return the bootstrap models strings as a tuple."""
146
150
  return tuple(
147
- model_type.value for model_type in ModelType.bootstrap_model_types()
151
+ model_type.value for model_type in ModelType._bootstrap_model_types()
148
152
  )
149
153
 
150
- @staticmethod
151
- @cache
152
- def bootstrap_models_set() -> set[str]:
154
+ @classmethod
155
+ def _bootstrap_models_set(cls) -> set[str]:
153
156
  """Return the set of bootstrap models strings as a set."""
154
- return set(ModelType.bootstrap_models())
157
+ return set(ModelType._bootstrap_models())
155
158
 
156
- @staticmethod
157
- @cache
158
- def bootstrap_models_types_set() -> set[ModelType]:
159
+ @classmethod
160
+ def _bootstrap_models_types_set(cls) -> set[ModelType]:
159
161
  """Return the set of bootstrap models as a set."""
160
- return set(ModelType.bootstrap_model_types())
162
+ return set(ModelType._bootstrap_model_types())
161
163
 
162
- @staticmethod
163
- @cache
164
- def bootstrap_models_types_and_event_set() -> set[ModelType]:
164
+ @classmethod
165
+ def _bootstrap_models_types_and_event_set(cls) -> set[ModelType]:
165
166
  """Return the set of bootstrap models and the event model as a set."""
166
- return ModelType.bootstrap_models_types_set() | {ModelType.EVENT}
167
+ return ModelType._bootstrap_models_types_set() | {ModelType.EVENT}
168
+
169
+ def _immutable(self, name: str, value: Any) -> None:
170
+ raise AttributeError("Cannot modify ModelType")
171
+
172
+
173
+ ModelType.bootstrap_model_types = ModelType._bootstrap_model_types()
174
+ ModelType.bootstrap_models = ModelType._bootstrap_models()
175
+ ModelType.bootstrap_models_set = ModelType._bootstrap_models_set()
176
+ ModelType.bootstrap_models_types_set = ModelType._bootstrap_models_types_set()
177
+ ModelType.bootstrap_models_types_and_event_set = (
178
+ ModelType._bootstrap_models_types_and_event_set()
179
+ )
180
+ ModelType.__setattr__ = ModelType._immutable # type: ignore[method-assign, assignment]
167
181
 
168
182
 
169
183
  @enum.unique
File without changes
File without changes