uiprotect 1.2.1__tar.gz → 1.2.2__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.2.1 → uiprotect-1.2.2}/PKG-INFO +1 -1
  2. {uiprotect-1.2.1 → uiprotect-1.2.2}/pyproject.toml +1 -1
  3. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/bootstrap.py +37 -36
  4. {uiprotect-1.2.1 → uiprotect-1.2.2}/LICENSE +0 -0
  5. {uiprotect-1.2.1 → uiprotect-1.2.2}/README.md +0 -0
  6. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/__init__.py +0 -0
  7. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/__main__.py +0 -0
  8. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/api.py +0 -0
  9. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/__init__.py +0 -0
  10. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/backup.py +0 -0
  11. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/base.py +0 -0
  12. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/cameras.py +0 -0
  13. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/chimes.py +0 -0
  14. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/doorlocks.py +0 -0
  15. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/events.py +0 -0
  16. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/lights.py +0 -0
  17. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/liveviews.py +0 -0
  18. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/nvr.py +0 -0
  19. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/sensors.py +0 -0
  20. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/cli/viewers.py +0 -0
  21. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/__init__.py +0 -0
  22. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/base.py +0 -0
  23. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/convert.py +0 -0
  24. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/devices.py +0 -0
  25. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/nvr.py +0 -0
  26. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/types.py +0 -0
  27. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/user.py +0 -0
  28. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/data/websocket.py +0 -0
  29. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/exceptions.py +0 -0
  30. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/py.typed +0 -0
  31. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/release_cache.json +0 -0
  32. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/stream.py +0 -0
  33. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/test_util/__init__.py +0 -0
  34. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/test_util/anonymize.py +0 -0
  35. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/utils.py +0 -0
  36. {uiprotect-1.2.1 → uiprotect-1.2.2}/src/uiprotect/websocket.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uiprotect
3
- Version: 1.2.1
3
+ Version: 1.2.2
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.2.1"
3
+ version = "1.2.2"
4
4
  description = "Python API for Unifi Protect (Unofficial)"
5
5
  authors = ["UI Protect Maintainers <ui@koston.org>"]
6
6
  license = "MIT"
@@ -473,47 +473,48 @@ class Bootstrap(ProtectBaseObject):
473
473
  key = f"{model_type}s"
474
474
  devices: dict[str, ProtectModelWithId] = getattr(self, key)
475
475
  action_id: str = action["id"]
476
- if action_id in devices:
477
- if action_id not in devices:
478
- raise ValueError(f"Unknown device update for {model_type}: {action_id}")
479
- obj = devices[action_id]
480
- data = obj.unifi_dict_to_dict(data)
481
- old_obj = obj.copy()
482
- obj = obj.update_from_dict(deepcopy(data))
483
-
484
- if isinstance(obj, Event):
485
- self.process_event(obj)
486
- elif isinstance(obj, Camera):
487
- if "last_ring" in data and obj.last_ring:
488
- is_recent = obj.last_ring + RECENT_EVENT_MAX >= utc_now()
489
- _LOGGER.debug("last_ring for %s (%s)", obj.id, is_recent)
490
- if is_recent:
491
- obj.set_ring_timeout()
492
- elif (
493
- isinstance(obj, Sensor)
494
- and "alarm_triggered_at" in data
495
- and obj.alarm_triggered_at
496
- ):
476
+ if action_id not in devices:
477
+ # ignore updates to events that phase out
478
+ if model_type != _ModelType_Event_value:
479
+ _LOGGER.debug("Unexpected %s: %s", key, action_id)
480
+ return None
481
+
482
+ obj = devices[action_id]
483
+ model = obj.model
484
+ data = obj.unifi_dict_to_dict(data)
485
+ old_obj = obj.copy()
486
+ obj = obj.update_from_dict(deepcopy(data))
487
+
488
+ if model is ModelType.EVENT:
489
+ if TYPE_CHECKING:
490
+ assert isinstance(obj, Event)
491
+ self.process_event(obj)
492
+ elif model is ModelType.CAMERA:
493
+ if TYPE_CHECKING:
494
+ assert isinstance(obj, Camera)
495
+ if "last_ring" in data and obj.last_ring:
496
+ is_recent = obj.last_ring + RECENT_EVENT_MAX >= utc_now()
497
+ _LOGGER.debug("last_ring for %s (%s)", obj.id, is_recent)
498
+ if is_recent:
499
+ obj.set_ring_timeout()
500
+ elif model is ModelType.SENSOR:
501
+ if TYPE_CHECKING:
502
+ assert isinstance(obj, Sensor)
503
+ if "alarm_triggered_at" in data and obj.alarm_triggered_at:
497
504
  is_recent = obj.alarm_triggered_at + RECENT_EVENT_MAX >= utc_now()
498
505
  _LOGGER.debug("alarm_triggered_at for %s (%s)", obj.id, is_recent)
499
506
  if is_recent:
500
507
  obj.set_alarm_timeout()
501
508
 
502
- devices[action_id] = obj
503
-
504
- self._create_stat(packet, data, False)
505
- return WSSubscriptionMessage(
506
- action=WSAction.UPDATE,
507
- new_update_id=self.last_update_id,
508
- changed_data=data,
509
- new_obj=obj,
510
- old_obj=old_obj,
511
- )
512
-
513
- # ignore updates to events that phase out
514
- if model_type != _ModelType_Event_value:
515
- _LOGGER.debug("Unexpected %s: %s", key, action_id)
516
- return None
509
+ devices[action_id] = obj
510
+ self._create_stat(packet, data, False)
511
+ return WSSubscriptionMessage(
512
+ action=WSAction.UPDATE,
513
+ new_update_id=self.last_update_id,
514
+ changed_data=data,
515
+ new_obj=obj,
516
+ old_obj=old_obj,
517
+ )
517
518
 
518
519
  def process_ws_packet(
519
520
  self,
File without changes
File without changes