python-aidot-cameras 0.12.0__tar.gz → 0.12.1__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.
Files changed (134) hide show
  1. {python_aidot_cameras-0.12.0/python_aidot_cameras.egg-info → python_aidot_cameras-0.12.1}/PKG-INFO +1 -1
  2. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/client.py +19 -4
  3. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/pyproject.toml +1 -1
  4. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1/python_aidot_cameras.egg-info}/PKG-INFO +1 -1
  5. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/LICENSE +0 -0
  6. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/MANIFEST.in +0 -0
  7. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/README.md +0 -0
  8. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/__init__.py +0 -0
  9. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/__main__.py +0 -0
  10. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/__init__.py +0 -0
  11. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/__init__.py +0 -0
  12. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/clock.py +0 -0
  13. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/__init__.py +0 -0
  14. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/base.py +0 -0
  15. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/g711.py +0 -0
  16. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/g722.py +0 -0
  17. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/h264.py +0 -0
  18. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/opus.py +0 -0
  19. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/codecs/vpx.py +0 -0
  20. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/contrib/__init__.py +0 -0
  21. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/contrib/media.py +0 -0
  22. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/contrib/signaling.py +0 -0
  23. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/events.py +0 -0
  24. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/exceptions.py +0 -0
  25. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/jitterbuffer.py +0 -0
  26. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/mediastreams.py +0 -0
  27. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rate.py +0 -0
  28. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcconfiguration.py +0 -0
  29. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcdatachannel.py +0 -0
  30. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcdtlstransport.py +0 -0
  31. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcicetransport.py +0 -0
  32. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcpeerconnection.py +0 -0
  33. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcrtpparameters.py +0 -0
  34. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcrtpreceiver.py +0 -0
  35. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcrtpsender.py +0 -0
  36. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcrtptransceiver.py +0 -0
  37. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcsctptransport.py +0 -0
  38. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtcsessiondescription.py +0 -0
  39. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/rtp.py +0 -0
  40. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/sdp.py +0 -0
  41. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/stats.py +0 -0
  42. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/_vendor/aiortc/utils.py +0 -0
  43. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/__init__.py +0 -0
  44. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/client.py +0 -0
  45. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/constants.py +0 -0
  46. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/controls.py +0 -0
  47. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/go2rtc.py +0 -0
  48. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/lan_control.py +0 -0
  49. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/models.py +0 -0
  50. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/playback.py +0 -0
  51. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/protocol.py +0 -0
  52. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/sdes.py +0 -0
  53. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/sdes_open.py +0 -0
  54. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/tutk.py +0 -0
  55. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/webrtc.py +0 -0
  56. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/camera/webrtc_open.py +0 -0
  57. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/const.py +0 -0
  58. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/credentials.py +0 -0
  59. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/crypto.py +0 -0
  60. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/device_client.py +0 -0
  61. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/discover.py +0 -0
  62. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/exceptions.py +0 -0
  63. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/g711.py +0 -0
  64. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/aidot_cameras/py.typed +0 -0
  65. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/python_aidot_cameras.egg-info/SOURCES.txt +0 -0
  66. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/python_aidot_cameras.egg-info/dependency_links.txt +0 -0
  67. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/python_aidot_cameras.egg-info/entry_points.txt +0 -0
  68. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/python_aidot_cameras.egg-info/requires.txt +0 -0
  69. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/python_aidot_cameras.egg-info/top_level.txt +0 -0
  70. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/setup.cfg +0 -0
  71. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_aioice_compat.py +0 -0
  72. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_alarm_event.py +0 -0
  73. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_backoff.py +0 -0
  74. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_deferred_hardening.py +0 -0
  75. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_device_login_guard.py +0 -0
  76. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_device_user_info_cache.py +0 -0
  77. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_dtls_not_ready_burst.py +0 -0
  78. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_dtls_pinning.py +0 -0
  79. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_dtls_serve_decode_skip.py +0 -0
  80. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_dtls_serve_open_timeout.py +0 -0
  81. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_dtls_skip_signaling_wait.py +0 -0
  82. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_dtls_slow_probe.py +0 -0
  83. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_egress_guard.py +0 -0
  84. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_go2rtc.py +0 -0
  85. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_go2rtc_cli.py +0 -0
  86. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_h264_decode_rate_limit.py +0 -0
  87. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_highport_nomination.py +0 -0
  88. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_ice_config_cache.py +0 -0
  89. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_keepalive_renew.py +0 -0
  90. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_keyframe_prompter.py +0 -0
  91. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_lan_control.py +0 -0
  92. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_light_active_color_mode.py +0 -0
  93. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_live_stream_param.py +0 -0
  94. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_logging_caps.py +0 -0
  95. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_motion_poll.py +0 -0
  96. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_mqtt_session_reconnect.py +0 -0
  97. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_narrow_pc_ice.py +0 -0
  98. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_no_undefined_names.py +0 -0
  99. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_offline_keepalive_pause.py +0 -0
  100. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_open_fail_logger.py +0 -0
  101. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_open_gate_delay.py +0 -0
  102. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_persistent_mqtt.py +0 -0
  103. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_persistent_mqtt_robustness.py +0 -0
  104. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_playback_tls.py +0 -0
  105. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_post_merge_hardening.py +0 -0
  106. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_retry_policy.py +0 -0
  107. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_adaptive.py +0 -0
  108. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_bridge_break_gate.py +0 -0
  109. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_echo_wait_timeout.py +0 -0
  110. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_fast_liveplay.py +0 -0
  111. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_ffmpeg_stderr_log.py +0 -0
  112. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_idle_release.py +0 -0
  113. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_open_cleanup.py +0 -0
  114. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_serve_audio.py +0 -0
  115. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_serve_cmd.py +0 -0
  116. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_sprop.py +0 -0
  117. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_talk.py +0 -0
  118. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_teardown_exit_log.py +0 -0
  119. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_sdes_watchdog.py +0 -0
  120. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_security_hardening.py +0 -0
  121. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_serializable_login_info.py +0 -0
  122. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_serve_relay.py +0 -0
  123. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_session_stats.py +0 -0
  124. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_speak.py +0 -0
  125. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_stream_cap.py +0 -0
  126. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_stream_drain_ownership.py +0 -0
  127. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_stream_idle.py +0 -0
  128. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_stream_teardown.py +0 -0
  129. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_talk.py +0 -0
  130. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_terminal_ack.py +0 -0
  131. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_token_file_robustness.py +0 -0
  132. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_token_refresh.py +0 -0
  133. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_upstream_compat.py +0 -0
  134. {python_aidot_cameras-0.12.0 → python_aidot_cameras-0.12.1}/tests/test_wait_or_event.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-aidot-cameras
3
- Version: 0.12.0
3
+ Version: 0.12.1
4
4
  Summary: Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)
5
5
  Author-email: cbrightly <chris.brightly@gmail.com>
6
6
  License-Expression: MIT
@@ -464,6 +464,13 @@ class CameraClient(_UpstreamAidotClient):
464
464
  The HTTP calls themselves are still upstream's ``CloudApi``.
465
465
  """
466
466
  final_device_list: list[dict[str, Any]] = []
467
+ # Devices upstream's client cannot construct (no usable aesKey): Zigbee
468
+ # sub-devices, remotes, and other accessories that were never supported
469
+ # here. They are counted and reported once, not warned about
470
+ # individually - an account with a dozen Zigbee sensors would otherwise
471
+ # log a dozen WARNINGs on every refresh for devices nothing was ever
472
+ # going to use.
473
+ unbuildable: dict[str, int] = {}
467
474
  houses = await self._cloud_api.get_houses() or []
468
475
  for house in houses:
469
476
  if house.get(CONF_IS_OWNER) is False:
@@ -473,11 +480,19 @@ class CameraClient(_UpstreamAidotClient):
473
480
  if _is_camera_device(device) or _upstream_can_build(device):
474
481
  final_device_list.append(device)
475
482
  else:
476
- _LOGGER.warning(
477
- "skipping device %s (%s): no AES key, upstream's device "
478
- "client cannot be built for it",
479
- device.get(CONF_ID), device.get(CONF_MODEL_ID),
483
+ model = device.get(CONF_MODEL_ID) or "unknown"
484
+ unbuildable[model] = unbuildable.get(model, 0) + 1
485
+ _LOGGER.debug(
486
+ "skipping device %s (%s): no usable aesKey, upstream's "
487
+ "device client cannot be built for it",
488
+ device.get(CONF_ID), model,
480
489
  )
490
+ if unbuildable:
491
+ _LOGGER.info(
492
+ "skipped %d device(s) with no usable aesKey (not supported here): %s",
493
+ sum(unbuildable.values()),
494
+ ", ".join(f"{m} x{n}" for m, n in sorted(unbuildable.items())),
495
+ )
481
496
 
482
497
  product_ids = ",".join(
483
498
  sorted(
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-aidot-cameras"
7
- version = "0.12.0"
7
+ version = "0.12.1"
8
8
  description = "Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-aidot-cameras
3
- Version: 0.12.0
3
+ Version: 0.12.1
4
4
  Summary: Control AiDot/Leedarson WiFi lights and cameras (WebRTC streaming, two-way audio, PTZ, controls)
5
5
  Author-email: cbrightly <chris.brightly@gmail.com>
6
6
  License-Expression: MIT