homeassistant-stubs 2024.6.4__py3-none-any.whl → 2024.7.0b0__py3-none-any.whl

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 (605) hide show
  1. homeassistant-stubs/auth/__init__.pyi +2 -0
  2. homeassistant-stubs/auth/auth_store.pyi +1 -0
  3. homeassistant-stubs/auth/providers/homeassistant.pyi +8 -1
  4. homeassistant-stubs/block_async_io.pyi +23 -0
  5. homeassistant-stubs/components/accuweather/sensor.pyi +5 -9
  6. homeassistant-stubs/components/accuweather/weather.pyi +1 -1
  7. homeassistant-stubs/components/acer_projector/switch.pyi +2 -1
  8. homeassistant-stubs/components/air_quality/__init__.pyi +4 -3
  9. homeassistant-stubs/components/airgradient/__init__.pyi +8 -0
  10. homeassistant-stubs/components/airgradient/button.pyi +28 -0
  11. homeassistant-stubs/components/airgradient/const.pyi +2 -0
  12. homeassistant-stubs/components/airgradient/coordinator.pyi +2 -2
  13. homeassistant-stubs/components/airgradient/number.pyi +32 -0
  14. homeassistant-stubs/components/airgradient/select.pyi +14 -12
  15. homeassistant-stubs/components/airgradient/sensor.pyi +28 -10
  16. homeassistant-stubs/components/airgradient/switch.pyi +33 -0
  17. homeassistant-stubs/components/airnow/const.pyi +1 -0
  18. homeassistant-stubs/components/airnow/coordinator.pyi +1 -1
  19. homeassistant-stubs/components/airnow/sensor.pyi +1 -2
  20. homeassistant-stubs/components/airzone/__init__.pyi +4 -4
  21. homeassistant-stubs/components/airzone/binary_sensor.pyi +2 -2
  22. homeassistant-stubs/components/airzone/climate.pyi +3 -2
  23. homeassistant-stubs/components/airzone/diagnostics.pyi +2 -4
  24. homeassistant-stubs/components/airzone/entity.pyi +2 -1
  25. homeassistant-stubs/components/airzone/select.pyi +2 -2
  26. homeassistant-stubs/components/airzone/sensor.pyi +3 -2
  27. homeassistant-stubs/components/airzone/water_heater.pyi +3 -2
  28. homeassistant-stubs/components/airzone_cloud/__init__.pyi +3 -3
  29. homeassistant-stubs/components/airzone_cloud/binary_sensor.pyi +2 -3
  30. homeassistant-stubs/components/airzone_cloud/climate.pyi +8 -10
  31. homeassistant-stubs/components/airzone_cloud/diagnostics.pyi +2 -4
  32. homeassistant-stubs/components/airzone_cloud/select.pyi +2 -3
  33. homeassistant-stubs/components/airzone_cloud/sensor.pyi +2 -3
  34. homeassistant-stubs/components/airzone_cloud/water_heater.pyi +2 -3
  35. homeassistant-stubs/components/aladdin_connect/api.pyi +0 -1
  36. homeassistant-stubs/components/aladdin_connect/coordinator.pyi +0 -2
  37. homeassistant-stubs/components/aladdin_connect/cover.pyi +0 -1
  38. homeassistant-stubs/components/aladdin_connect/entity.pyi +0 -1
  39. homeassistant-stubs/components/aladdin_connect/sensor.pyi +0 -2
  40. homeassistant-stubs/components/alarm_control_panel/__init__.pyi +3 -3
  41. homeassistant-stubs/components/alexa/capabilities.pyi +2 -2
  42. homeassistant-stubs/components/alexa/entities.pyi +25 -24
  43. homeassistant-stubs/components/alpha_vantage/sensor.pyi +2 -1
  44. homeassistant-stubs/components/ambient_network/coordinator.pyi +2 -0
  45. homeassistant-stubs/components/ambient_network/sensor.pyi +1 -0
  46. homeassistant-stubs/components/androidtv/entity.pyi +1 -0
  47. homeassistant-stubs/components/androidtv/remote.pyi +21 -0
  48. homeassistant-stubs/components/androidtv_remote/config_flow.pyi +11 -1
  49. homeassistant-stubs/components/androidtv_remote/const.pyi +3 -0
  50. homeassistant-stubs/components/androidtv_remote/entity.pyi +2 -1
  51. homeassistant-stubs/components/androidtv_remote/media_player.pyi +4 -1
  52. homeassistant-stubs/components/androidtv_remote/remote.pyi +3 -0
  53. homeassistant-stubs/components/anel_pwrctrl/switch.pyi +2 -1
  54. homeassistant-stubs/components/apprise/notify.pyi +2 -1
  55. homeassistant-stubs/components/apsystems/__init__.pyi +9 -2
  56. homeassistant-stubs/components/apsystems/entity.pyi +10 -0
  57. homeassistant-stubs/components/apsystems/number.pyi +25 -0
  58. homeassistant-stubs/components/apsystems/sensor.pyi +6 -7
  59. homeassistant-stubs/components/aqualogic/sensor.pyi +2 -1
  60. homeassistant-stubs/components/aqualogic/switch.pyi +2 -1
  61. homeassistant-stubs/components/aquostv/media_player.pyi +2 -1
  62. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +8 -7
  63. homeassistant-stubs/components/assist_pipeline/select.pyi +1 -1
  64. homeassistant-stubs/components/asuswrt/config_flow.pyi +1 -0
  65. homeassistant-stubs/components/automation/__init__.pyi +10 -5
  66. homeassistant-stubs/components/automation/config.pyi +11 -1
  67. homeassistant-stubs/components/automation/trace.pyi +2 -2
  68. homeassistant-stubs/components/axis/config_flow.pyi +1 -0
  69. homeassistant-stubs/components/baf/binary_sensor.pyi +2 -4
  70. homeassistant-stubs/components/baf/entity.pyi +6 -1
  71. homeassistant-stubs/components/baf/number.pyi +2 -4
  72. homeassistant-stubs/components/baf/sensor.pyi +2 -4
  73. homeassistant-stubs/components/baf/switch.pyi +2 -4
  74. homeassistant-stubs/components/bang_olufsen/const.pyi +2 -0
  75. homeassistant-stubs/components/bang_olufsen/media_player.pyi +3 -2
  76. homeassistant-stubs/components/bayesian/binary_sensor.pyi +2 -1
  77. homeassistant-stubs/components/binary_sensor/__init__.pyi +3 -2
  78. homeassistant-stubs/components/bitcoin/sensor.pyi +2 -1
  79. homeassistant-stubs/components/blockchain/sensor.pyi +2 -1
  80. homeassistant-stubs/components/blueprint/errors.pyi +1 -1
  81. homeassistant-stubs/components/blueprint/websocket_api.pyi +6 -3
  82. homeassistant-stubs/components/bluetooth/passive_update_coordinator.pyi +3 -3
  83. homeassistant-stubs/components/bmw_connected_drive/const.pyi +0 -1
  84. homeassistant-stubs/components/bmw_connected_drive/select.pyi +1 -1
  85. homeassistant-stubs/components/bmw_connected_drive/sensor.pyi +1 -1
  86. homeassistant-stubs/components/brother/config_flow.pyi +9 -1
  87. homeassistant-stubs/components/button/__init__.pyi +4 -3
  88. homeassistant-stubs/components/calendar/__init__.pyi +2 -4
  89. homeassistant-stubs/components/camera/__init__.pyi +8 -7
  90. homeassistant-stubs/components/cert_expiry/sensor.pyi +2 -1
  91. homeassistant-stubs/components/clickatell/notify.pyi +2 -1
  92. homeassistant-stubs/components/clicksend/notify.pyi +2 -1
  93. homeassistant-stubs/components/climate/__init__.pyi +5 -4
  94. homeassistant-stubs/components/cloud/__init__.pyi +1 -1
  95. homeassistant-stubs/components/cloud/account_link.pyi +1 -1
  96. homeassistant-stubs/components/cloud/binary_sensor.pyi +1 -1
  97. homeassistant-stubs/components/cloud/const.pyi +6 -1
  98. homeassistant-stubs/components/cloud/http_api.pyi +1 -1
  99. homeassistant-stubs/components/cloud/repairs.pyi +1 -3
  100. homeassistant-stubs/components/cloud/stt.pyi +1 -1
  101. homeassistant-stubs/components/cloud/system_health.pyi +1 -3
  102. homeassistant-stubs/components/cloud/tts.pyi +1 -1
  103. homeassistant-stubs/components/config/auth_provider_homeassistant.pyi +1 -0
  104. homeassistant-stubs/components/config/scene.pyi +3 -1
  105. homeassistant-stubs/components/counter/__init__.pyi +2 -2
  106. homeassistant-stubs/components/cover/__init__.pyi +3 -2
  107. homeassistant-stubs/components/demo/tts.pyi +2 -1
  108. homeassistant-stubs/components/derivative/__init__.pyi +2 -1
  109. homeassistant-stubs/components/derivative/config_flow.pyi +11 -4
  110. homeassistant-stubs/components/derivative/sensor.pyi +3 -1
  111. homeassistant-stubs/components/device_automation/__init__.pyi +2 -2
  112. homeassistant-stubs/components/dlna_dmr/config_flow.pyi +1 -0
  113. homeassistant-stubs/components/dnsip/__init__.pyi +4 -2
  114. homeassistant-stubs/components/dnsip/config_flow.pyi +4 -3
  115. homeassistant-stubs/components/dnsip/const.pyi +2 -0
  116. homeassistant-stubs/components/dnsip/sensor.pyi +4 -3
  117. homeassistant-stubs/components/ecovacs/binary_sensor.pyi +3 -3
  118. homeassistant-stubs/components/ecovacs/button.pyi +5 -5
  119. homeassistant-stubs/components/ecovacs/config_flow.pyi +1 -0
  120. homeassistant-stubs/components/ecovacs/controller.pyi +4 -4
  121. homeassistant-stubs/components/ecovacs/entity.pyi +8 -10
  122. homeassistant-stubs/components/ecovacs/event.pyi +3 -3
  123. homeassistant-stubs/components/ecovacs/image.pyi +2 -2
  124. homeassistant-stubs/components/ecovacs/lawn_mower.pyi +3 -3
  125. homeassistant-stubs/components/ecovacs/number.pyi +3 -3
  126. homeassistant-stubs/components/ecovacs/select.pyi +3 -3
  127. homeassistant-stubs/components/ecovacs/sensor.pyi +6 -6
  128. homeassistant-stubs/components/ecovacs/switch.pyi +4 -4
  129. homeassistant-stubs/components/ecovacs/vacuum.pyi +9 -5
  130. homeassistant-stubs/components/ecowitt/binary_sensor.pyi +1 -0
  131. homeassistant-stubs/components/efergy/__init__.pyi +3 -2
  132. homeassistant-stubs/components/efergy/sensor.pyi +3 -4
  133. homeassistant-stubs/components/electrasmart/__init__.pyi +12 -0
  134. homeassistant-stubs/components/electrasmart/climate.pyi +64 -0
  135. homeassistant-stubs/components/electrasmart/config_flow.pyi +24 -0
  136. homeassistant-stubs/components/electrasmart/const.pyi +10 -0
  137. homeassistant-stubs/components/elkm1/alarm_control_panel.pyi +2 -1
  138. homeassistant-stubs/components/elkm1/const.pyi +2 -1
  139. homeassistant-stubs/components/elkm1/sensor.pyi +2 -1
  140. homeassistant-stubs/components/energy/websocket_api.pyi +5 -5
  141. homeassistant-stubs/components/enigma2/__init__.pyi +3 -2
  142. homeassistant-stubs/components/enigma2/config_flow.pyi +10 -1
  143. homeassistant-stubs/components/enigma2/media_player.pyi +3 -2
  144. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +8 -2
  145. homeassistant-stubs/components/enphase_envoy/const.pyi +2 -0
  146. homeassistant-stubs/components/enphase_envoy/diagnostics.pyi +3 -1
  147. homeassistant-stubs/components/esphome/__init__.pyi +5 -5
  148. homeassistant-stubs/components/esphome/alarm_control_panel.pyi +3 -5
  149. homeassistant-stubs/components/esphome/binary_sensor.pyi +2 -3
  150. homeassistant-stubs/components/esphome/button.pyi +3 -5
  151. homeassistant-stubs/components/esphome/camera.pyi +3 -5
  152. homeassistant-stubs/components/esphome/climate.pyi +3 -6
  153. homeassistant-stubs/components/esphome/cover.pyi +3 -5
  154. homeassistant-stubs/components/esphome/date.pyi +3 -5
  155. homeassistant-stubs/components/esphome/datetime.pyi +3 -5
  156. homeassistant-stubs/components/esphome/diagnostics.pyi +3 -3
  157. homeassistant-stubs/components/esphome/domain_data.pyi +4 -8
  158. homeassistant-stubs/components/esphome/entity.pyi +2 -4
  159. homeassistant-stubs/components/esphome/entry_data.pyi +4 -3
  160. homeassistant-stubs/components/esphome/event.pyi +3 -5
  161. homeassistant-stubs/components/esphome/fan.pyi +3 -6
  162. homeassistant-stubs/components/esphome/light.pyi +3 -6
  163. homeassistant-stubs/components/esphome/lock.pyi +3 -5
  164. homeassistant-stubs/components/esphome/manager.pyi +4 -5
  165. homeassistant-stubs/components/esphome/media_player.pyi +3 -5
  166. homeassistant-stubs/components/esphome/number.pyi +3 -5
  167. homeassistant-stubs/components/esphome/select.pyi +2 -4
  168. homeassistant-stubs/components/esphome/switch.pyi +3 -5
  169. homeassistant-stubs/components/esphome/text.pyi +3 -5
  170. homeassistant-stubs/components/esphome/time.pyi +3 -5
  171. homeassistant-stubs/components/esphome/update.pyi +22 -2
  172. homeassistant-stubs/components/esphome/valve.pyi +3 -5
  173. homeassistant-stubs/components/event/__init__.pyi +3 -1
  174. homeassistant-stubs/components/evohome/__init__.pyi +8 -49
  175. homeassistant-stubs/components/evohome/climate.pyi +2 -2
  176. homeassistant-stubs/components/evohome/const.pyi +39 -16
  177. homeassistant-stubs/components/evohome/coordinator.pyi +33 -0
  178. homeassistant-stubs/components/evohome/helpers.pyi +13 -0
  179. homeassistant-stubs/components/fan/__init__.pyi +3 -2
  180. homeassistant-stubs/components/fastdotcom/__init__.pyi +2 -7
  181. homeassistant-stubs/components/fastdotcom/config_flow.pyi +0 -2
  182. homeassistant-stubs/components/feedreader/__init__.pyi +10 -5
  183. homeassistant-stubs/components/feedreader/config_flow.pyi +30 -0
  184. homeassistant-stubs/components/feedreader/const.pyi +5 -0
  185. homeassistant-stubs/components/feedreader/coordinator.pyi +4 -4
  186. homeassistant-stubs/components/filter/sensor.pyi +2 -1
  187. homeassistant-stubs/components/flux_led/light.pyi +4 -3
  188. homeassistant-stubs/components/fritz/switch.pyi +1 -1
  189. homeassistant-stubs/components/fritzbox/climate.pyi +14 -9
  190. homeassistant-stubs/components/fronius/config_flow.pyi +3 -2
  191. homeassistant-stubs/components/frontend/__init__.pyi +9 -4
  192. homeassistant-stubs/components/fully_kiosk/camera.pyi +21 -0
  193. homeassistant-stubs/components/fully_kiosk/image.pyi +30 -0
  194. homeassistant-stubs/components/fully_kiosk/media_player.pyi +2 -0
  195. homeassistant-stubs/components/fully_kiosk/notify.pyi +25 -0
  196. homeassistant-stubs/components/generic_hygrostat/__init__.pyi +4 -0
  197. homeassistant-stubs/components/generic_hygrostat/config_flow.pyi +19 -0
  198. homeassistant-stubs/components/generic_hygrostat/humidifier.pyi +7 -2
  199. homeassistant-stubs/components/generic_thermostat/__init__.pyi +6 -0
  200. homeassistant-stubs/components/generic_thermostat/climate.pyi +7 -1
  201. homeassistant-stubs/components/generic_thermostat/config_flow.pyi +19 -0
  202. homeassistant-stubs/components/geo_location/__init__.pyi +4 -3
  203. homeassistant-stubs/components/glances/__init__.pyi +3 -2
  204. homeassistant-stubs/components/glances/sensor.pyi +2 -3
  205. homeassistant-stubs/components/goalzero/__init__.pyi +3 -5
  206. homeassistant-stubs/components/goalzero/binary_sensor.pyi +2 -3
  207. homeassistant-stubs/components/goalzero/coordinator.pyi +3 -1
  208. homeassistant-stubs/components/goalzero/sensor.pyi +2 -3
  209. homeassistant-stubs/components/goalzero/switch.pyi +2 -3
  210. homeassistant-stubs/components/google_assistant_sdk/__init__.pyi +2 -2
  211. homeassistant-stubs/components/google_assistant_sdk/diagnostics.pyi +9 -0
  212. homeassistant-stubs/components/google_assistant_sdk/helpers.pyi +1 -0
  213. homeassistant-stubs/components/google_sheets/__init__.pyi +4 -3
  214. homeassistant-stubs/components/google_sheets/config_flow.pyi +3 -2
  215. homeassistant-stubs/components/gpsd/sensor.pyi +2 -1
  216. homeassistant-stubs/components/group/binary_sensor.pyi +2 -1
  217. homeassistant-stubs/components/group/cover.pyi +2 -1
  218. homeassistant-stubs/components/group/entity.pyi +2 -2
  219. homeassistant-stubs/components/group/event.pyi +2 -1
  220. homeassistant-stubs/components/group/fan.pyi +2 -1
  221. homeassistant-stubs/components/group/light.pyi +2 -1
  222. homeassistant-stubs/components/group/lock.pyi +2 -1
  223. homeassistant-stubs/components/group/media_player.pyi +2 -1
  224. homeassistant-stubs/components/group/notify.pyi +2 -1
  225. homeassistant-stubs/components/group/registry.pyi +8 -2
  226. homeassistant-stubs/components/group/switch.pyi +2 -1
  227. homeassistant-stubs/components/history_stats/sensor.pyi +4 -1
  228. homeassistant-stubs/components/homeassistant/const.pyi +3 -1
  229. homeassistant-stubs/components/homekit/aidmanager.pyi +2 -2
  230. homeassistant-stubs/components/homekit_controller/config_flow.pyi +1 -0
  231. homeassistant-stubs/components/homeworks/__init__.pyi +2 -5
  232. homeassistant-stubs/components/homeworks/config_flow.pyi +1 -6
  233. homeassistant-stubs/components/http/__init__.pyi +20 -3
  234. homeassistant-stubs/components/http/cors.pyi +1 -1
  235. homeassistant-stubs/components/http/data_validator.pyi +2 -1
  236. homeassistant-stubs/components/humidifier/__init__.pyi +3 -2
  237. homeassistant-stubs/components/humidifier/device_action.pyi +1 -1
  238. homeassistant-stubs/components/husqvarna_automower/__init__.pyi +3 -3
  239. homeassistant-stubs/components/husqvarna_automower/binary_sensor.pyi +2 -3
  240. homeassistant-stubs/components/husqvarna_automower/button.pyi +22 -0
  241. homeassistant-stubs/components/husqvarna_automower/device_tracker.pyi +2 -3
  242. homeassistant-stubs/components/husqvarna_automower/diagnostics.pyi +2 -2
  243. homeassistant-stubs/components/husqvarna_automower/entity.pyi +7 -1
  244. homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +14 -5
  245. homeassistant-stubs/components/husqvarna_automower/number.pyi +4 -5
  246. homeassistant-stubs/components/husqvarna_automower/select.pyi +2 -3
  247. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +10 -5
  248. homeassistant-stubs/components/husqvarna_automower/switch.pyi +4 -8
  249. homeassistant-stubs/components/hydrawise/coordinator.pyi +3 -3
  250. homeassistant-stubs/components/hydrawise/sensor.pyi +3 -0
  251. homeassistant-stubs/components/ibeacon/config_flow.pyi +1 -0
  252. homeassistant-stubs/components/idasen_desk/coordinator.pyi +2 -5
  253. homeassistant-stubs/components/idasen_desk/sensor.pyi +3 -0
  254. homeassistant-stubs/components/image/__init__.pyi +3 -2
  255. homeassistant-stubs/components/image_upload/__init__.pyi +7 -3
  256. homeassistant-stubs/components/imap/__init__.pyi +5 -4
  257. homeassistant-stubs/components/imap/diagnostics.pyi +3 -5
  258. homeassistant-stubs/components/imap/sensor.pyi +5 -5
  259. homeassistant-stubs/components/input_button/__init__.pyi +3 -4
  260. homeassistant-stubs/components/input_select/__init__.pyi +2 -2
  261. homeassistant-stubs/components/input_text/__init__.pyi +3 -4
  262. homeassistant-stubs/components/integration/__init__.pyi +2 -0
  263. homeassistant-stubs/components/integration/config_flow.pyi +1 -1
  264. homeassistant-stubs/components/integration/const.pyi +1 -0
  265. homeassistant-stubs/components/integration/sensor.pyi +33 -12
  266. homeassistant-stubs/components/intent/timers.pyi +7 -3
  267. homeassistant-stubs/components/islamic_prayer_times/__init__.pyi +4 -3
  268. homeassistant-stubs/components/islamic_prayer_times/sensor.pyi +3 -3
  269. homeassistant-stubs/components/isy994/services.pyi +3 -2
  270. homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +6 -12
  271. homeassistant-stubs/components/jewish_calendar/entity.pyi +19 -0
  272. homeassistant-stubs/components/jewish_calendar/sensor.pyi +8 -13
  273. homeassistant-stubs/components/knocki/__init__.pyi +12 -0
  274. homeassistant-stubs/components/knocki/config_flow.pyi +12 -0
  275. homeassistant-stubs/components/knocki/const.pyi +4 -0
  276. homeassistant-stubs/components/knocki/coordinator.pyi +13 -0
  277. homeassistant-stubs/components/knocki/event.pyi +25 -0
  278. homeassistant-stubs/components/knx/config_flow.pyi +1 -1
  279. homeassistant-stubs/components/knx/device_trigger.pyi +1 -1
  280. homeassistant-stubs/components/knx/trigger.pyi +2 -3
  281. homeassistant-stubs/components/knx/websocket.pyi +1 -0
  282. homeassistant-stubs/components/lacrosse/sensor.pyi +2 -1
  283. homeassistant-stubs/components/lamarzocco/__init__.pyi +8 -3
  284. homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +4 -5
  285. homeassistant-stubs/components/lamarzocco/button.pyi +4 -5
  286. homeassistant-stubs/components/lamarzocco/calendar.pyi +9 -3
  287. homeassistant-stubs/components/lamarzocco/config_flow.pyi +7 -3
  288. homeassistant-stubs/components/lamarzocco/const.pyi +1 -2
  289. homeassistant-stubs/components/lamarzocco/coordinator.pyi +13 -11
  290. homeassistant-stubs/components/lamarzocco/diagnostics.pyi +10 -5
  291. homeassistant-stubs/components/lamarzocco/entity.pyi +3 -3
  292. homeassistant-stubs/components/lamarzocco/number.pyi +9 -13
  293. homeassistant-stubs/components/lamarzocco/select.pyi +13 -7
  294. homeassistant-stubs/components/lamarzocco/sensor.pyi +4 -5
  295. homeassistant-stubs/components/lamarzocco/switch.pyi +20 -7
  296. homeassistant-stubs/components/lamarzocco/update.pyi +5 -10
  297. homeassistant-stubs/components/lawn_mower/__init__.pyi +3 -2
  298. homeassistant-stubs/components/lidarr/__init__.pyi +12 -2
  299. homeassistant-stubs/components/lidarr/config_flow.pyi +2 -1
  300. homeassistant-stubs/components/lidarr/coordinator.pyi +0 -1
  301. homeassistant-stubs/components/lidarr/sensor.pyi +3 -4
  302. homeassistant-stubs/components/lifx/light.pyi +3 -2
  303. homeassistant-stubs/components/light/__init__.pyi +8 -6
  304. homeassistant-stubs/components/light/device_action.pyi +1 -1
  305. homeassistant-stubs/components/litterrobot/__init__.pyi +4 -3
  306. homeassistant-stubs/components/litterrobot/binary_sensor.pyi +2 -4
  307. homeassistant-stubs/components/litterrobot/button.pyi +2 -4
  308. homeassistant-stubs/components/litterrobot/select.pyi +2 -3
  309. homeassistant-stubs/components/litterrobot/sensor.pyi +2 -4
  310. homeassistant-stubs/components/litterrobot/switch.pyi +2 -4
  311. homeassistant-stubs/components/litterrobot/time.pyi +2 -4
  312. homeassistant-stubs/components/litterrobot/update.pyi +3 -4
  313. homeassistant-stubs/components/litterrobot/vacuum.pyi +2 -4
  314. homeassistant-stubs/components/lock/__init__.pyi +4 -3
  315. homeassistant-stubs/components/logbook/processor.pyi +4 -3
  316. homeassistant-stubs/components/london_underground/sensor.pyi +2 -1
  317. homeassistant-stubs/components/mastodon/notify.pyi +2 -1
  318. homeassistant-stubs/components/matrix/notify.pyi +2 -1
  319. homeassistant-stubs/components/matter/binary_sensor.pyi +1 -1
  320. homeassistant-stubs/components/matter/discovery.pyi +3 -3
  321. homeassistant-stubs/components/matter/entity.pyi +8 -1
  322. homeassistant-stubs/components/matter/event.pyi +0 -2
  323. homeassistant-stubs/components/matter/lock.pyi +1 -0
  324. homeassistant-stubs/components/matter/models.pyi +1 -2
  325. homeassistant-stubs/components/matter/number.pyi +24 -0
  326. homeassistant-stubs/components/matter/sensor.pyi +1 -1
  327. homeassistant-stubs/components/media_player/__init__.pyi +3 -2
  328. homeassistant-stubs/components/media_player/intent.pyi +2 -1
  329. homeassistant-stubs/components/mikrotik/__init__.pyi +2 -1
  330. homeassistant-stubs/components/mikrotik/device_tracker.pyi +2 -3
  331. homeassistant-stubs/components/min_max/sensor.pyi +2 -1
  332. homeassistant-stubs/components/modbus/sensor.pyi +2 -2
  333. homeassistant-stubs/components/monzo/config_flow.pyi +5 -1
  334. homeassistant-stubs/components/monzo/coordinator.pyi +1 -0
  335. homeassistant-stubs/components/motionmount/select.pyi +5 -2
  336. homeassistant-stubs/components/mqtt/async_client.pyi +22 -0
  337. homeassistant-stubs/components/mqtt/client.pyi +13 -28
  338. homeassistant-stubs/components/mqtt/climate.pyi +2 -3
  339. homeassistant-stubs/components/mqtt/cover.pyi +2 -3
  340. homeassistant-stubs/components/mqtt/device_tracker.pyi +2 -3
  341. homeassistant-stubs/components/mqtt/event.pyi +2 -3
  342. homeassistant-stubs/components/mqtt/fan.pyi +2 -3
  343. homeassistant-stubs/components/mqtt/humidifier.pyi +2 -3
  344. homeassistant-stubs/components/mqtt/image.pyi +2 -3
  345. homeassistant-stubs/components/mqtt/lawn_mower.pyi +2 -3
  346. homeassistant-stubs/components/mqtt/light/__init__.pyi +1 -1
  347. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -3
  348. homeassistant-stubs/components/mqtt/light/schema_json.pyi +2 -3
  349. homeassistant-stubs/components/mqtt/light/schema_template.pyi +2 -3
  350. homeassistant-stubs/components/mqtt/mixins.pyi +4 -4
  351. homeassistant-stubs/components/mqtt/models.pyi +2 -3
  352. homeassistant-stubs/components/mqtt/number.pyi +2 -3
  353. homeassistant-stubs/components/mqtt/select.pyi +2 -3
  354. homeassistant-stubs/components/mqtt/sensor.pyi +2 -3
  355. homeassistant-stubs/components/mqtt/siren.pyi +2 -3
  356. homeassistant-stubs/components/mqtt/text.pyi +2 -3
  357. homeassistant-stubs/components/mqtt/update.pyi +2 -3
  358. homeassistant-stubs/components/mqtt/util.pyi +23 -2
  359. homeassistant-stubs/components/mqtt/vacuum.pyi +2 -3
  360. homeassistant-stubs/components/mqtt/valve.pyi +2 -3
  361. homeassistant-stubs/components/mqtt/water_heater.pyi +2 -3
  362. homeassistant-stubs/components/mysensors/config_flow.pyi +1 -0
  363. homeassistant-stubs/components/mysensors/sensor.pyi +1 -1
  364. homeassistant-stubs/components/myuplink/__init__.pyi +4 -1
  365. homeassistant-stubs/components/myuplink/binary_sensor.pyi +2 -4
  366. homeassistant-stubs/components/myuplink/diagnostics.pyi +2 -4
  367. homeassistant-stubs/components/myuplink/number.pyi +2 -4
  368. homeassistant-stubs/components/myuplink/sensor.pyi +3 -5
  369. homeassistant-stubs/components/myuplink/switch.pyi +2 -4
  370. homeassistant-stubs/components/myuplink/update.pyi +2 -4
  371. homeassistant-stubs/components/nam/const.pyi +1 -0
  372. homeassistant-stubs/components/nam/sensor.pyi +1 -1
  373. homeassistant-stubs/components/nanoleaf/__init__.pyi +6 -14
  374. homeassistant-stubs/components/nanoleaf/button.pyi +4 -7
  375. homeassistant-stubs/components/nanoleaf/coordinator.pyi +12 -0
  376. homeassistant-stubs/components/nanoleaf/device_trigger.pyi +1 -0
  377. homeassistant-stubs/components/nanoleaf/diagnostics.pyi +2 -4
  378. homeassistant-stubs/components/nanoleaf/entity.pyi +4 -4
  379. homeassistant-stubs/components/nanoleaf/event.pyi +18 -0
  380. homeassistant-stubs/components/nanoleaf/light.pyi +4 -7
  381. homeassistant-stubs/components/number/__init__.pyi +3 -1
  382. homeassistant-stubs/components/number/const.pyi +2 -1
  383. homeassistant-stubs/components/ping/binary_sensor.pyi +2 -8
  384. homeassistant-stubs/components/ping/config_flow.pyi +2 -4
  385. homeassistant-stubs/components/ping/device_tracker.pyi +4 -14
  386. homeassistant-stubs/components/plugwise/button.pyi +20 -0
  387. homeassistant-stubs/components/plugwise/const.pyi +3 -0
  388. homeassistant-stubs/components/plugwise/coordinator.pyi +5 -3
  389. homeassistant-stubs/components/plugwise/number.pyi +2 -4
  390. homeassistant-stubs/components/plugwise/select.pyi +3 -5
  391. homeassistant-stubs/components/proximity/config_flow.pyi +2 -1
  392. homeassistant-stubs/components/radarr/__init__.pyi +14 -2
  393. homeassistant-stubs/components/radarr/binary_sensor.pyi +3 -4
  394. homeassistant-stubs/components/radarr/calendar.pyi +2 -4
  395. homeassistant-stubs/components/radarr/config_flow.pyi +3 -4
  396. homeassistant-stubs/components/radarr/coordinator.pyi +2 -2
  397. homeassistant-stubs/components/radarr/sensor.pyi +2 -4
  398. homeassistant-stubs/components/rainmachine/switch.pyi +1 -0
  399. homeassistant-stubs/components/recorder/const.pyi +3 -1
  400. homeassistant-stubs/components/recorder/core.pyi +2 -2
  401. homeassistant-stubs/components/recorder/db_schema.pyi +2 -1
  402. homeassistant-stubs/components/recorder/purge.pyi +1 -1
  403. homeassistant-stubs/components/recorder/statistics.pyi +7 -4
  404. homeassistant-stubs/components/recorder/table_managers/event_data.pyi +3 -3
  405. homeassistant-stubs/components/recorder/table_managers/event_types.pyi +1 -1
  406. homeassistant-stubs/components/recorder/table_managers/state_attributes.pyi +3 -3
  407. homeassistant-stubs/components/recorder/table_managers/states_meta.pyi +1 -1
  408. homeassistant-stubs/components/recorder/util.pyi +4 -3
  409. homeassistant-stubs/components/remote/__init__.pyi +5 -4
  410. homeassistant-stubs/components/rest/binary_sensor.pyi +2 -1
  411. homeassistant-stubs/components/rest/notify.pyi +2 -1
  412. homeassistant-stubs/components/rest/sensor.pyi +2 -1
  413. homeassistant-stubs/components/rest/switch.pyi +2 -1
  414. homeassistant-stubs/components/rfxtrx/config_flow.pyi +1 -0
  415. homeassistant-stubs/components/roborock/__init__.pyi +30 -0
  416. homeassistant-stubs/components/roborock/binary_sensor.pyi +29 -0
  417. homeassistant-stubs/components/roborock/button.pyi +28 -0
  418. homeassistant-stubs/components/roborock/config_flow.pyi +30 -0
  419. homeassistant-stubs/components/roborock/const.pyi +13 -0
  420. homeassistant-stubs/components/roborock/coordinator.pyi +47 -0
  421. homeassistant-stubs/components/roborock/device.pyi +53 -0
  422. homeassistant-stubs/components/roborock/diagnostics.pyi +13 -0
  423. homeassistant-stubs/components/roborock/image.pyi +37 -0
  424. homeassistant-stubs/components/roborock/models.pyi +27 -0
  425. homeassistant-stubs/components/roborock/number.pyi +35 -0
  426. homeassistant-stubs/components/roborock/select.pyi +37 -0
  427. homeassistant-stubs/components/roborock/sensor.pyi +47 -0
  428. homeassistant-stubs/components/roborock/switch.pyi +37 -0
  429. homeassistant-stubs/components/roborock/time.pyi +38 -0
  430. homeassistant-stubs/components/roborock/vacuum.pyi +39 -0
  431. homeassistant-stubs/components/roku/media_player.pyi +2 -1
  432. homeassistant-stubs/components/schedule/__init__.pyi +5 -5
  433. homeassistant-stubs/components/select/__init__.pyi +3 -1
  434. homeassistant-stubs/components/sensor/__init__.pyi +3 -1
  435. homeassistant-stubs/components/sensor/const.pyi +3 -2
  436. homeassistant-stubs/components/sensor/device_condition.pyi +1 -0
  437. homeassistant-stubs/components/sensor/device_trigger.pyi +1 -0
  438. homeassistant-stubs/components/shelly/__init__.pyi +1 -2
  439. homeassistant-stubs/components/shelly/climate.pyi +3 -0
  440. homeassistant-stubs/components/shelly/coordinator.pyi +2 -1
  441. homeassistant-stubs/components/shelly/switch.pyi +2 -18
  442. homeassistant-stubs/components/shelly/valve.pyi +1 -1
  443. homeassistant-stubs/components/simplisafe/alarm_control_panel.pyi +4 -5
  444. homeassistant-stubs/components/siren/__init__.pyi +4 -3
  445. homeassistant-stubs/components/sql/sensor.pyi +2 -1
  446. homeassistant-stubs/components/starlink/const.pyi +1 -0
  447. homeassistant-stubs/components/starlink/device_tracker.pyi +6 -2
  448. homeassistant-stubs/components/statistics/__init__.pyi +6 -0
  449. homeassistant-stubs/components/statistics/config_flow.pyi +23 -0
  450. homeassistant-stubs/components/statistics/sensor.pyi +4 -1
  451. homeassistant-stubs/components/stream/fmp4utils.pyi +2 -2
  452. homeassistant-stubs/components/stream/worker.pyi +3 -2
  453. homeassistant-stubs/components/streamlabswater/__init__.pyi +1 -6
  454. homeassistant-stubs/components/streamlabswater/config_flow.pyi +0 -1
  455. homeassistant-stubs/components/suez_water/config_flow.pyi +0 -1
  456. homeassistant-stubs/components/suez_water/sensor.pyi +3 -8
  457. homeassistant-stubs/components/switch/__init__.pyi +4 -3
  458. homeassistant-stubs/components/switch/light.pyi +2 -1
  459. homeassistant-stubs/components/switcher_kis/__init__.pyi +3 -0
  460. homeassistant-stubs/components/switcher_kis/switch.pyi +3 -2
  461. homeassistant-stubs/components/synology_dsm/config_flow.pyi +2 -2
  462. homeassistant-stubs/components/systemmonitor/config_flow.pyi +0 -2
  463. homeassistant-stubs/components/systemmonitor/sensor.pyi +4 -7
  464. homeassistant-stubs/components/tag/__init__.pyi +4 -5
  465. homeassistant-stubs/components/tami4/__init__.pyi +1 -1
  466. homeassistant-stubs/components/tami4/coordinator.pyi +3 -5
  467. homeassistant-stubs/components/tami4/sensor.pyi +3 -3
  468. homeassistant-stubs/components/tautulli/__init__.pyi +3 -2
  469. homeassistant-stubs/components/tautulli/coordinator.pyi +2 -2
  470. homeassistant-stubs/components/tautulli/sensor.pyi +3 -3
  471. homeassistant-stubs/components/threshold/__init__.pyi +2 -1
  472. homeassistant-stubs/components/threshold/binary_sensor.pyi +11 -3
  473. homeassistant-stubs/components/threshold/config_flow.pyi +8 -0
  474. homeassistant-stubs/components/tibber/__init__.pyi +1 -0
  475. homeassistant-stubs/components/tibber/sensor.pyi +12 -6
  476. homeassistant-stubs/components/tibber/services.pyi +15 -0
  477. homeassistant-stubs/components/time_date/sensor.pyi +3 -3
  478. homeassistant-stubs/components/timer/__init__.pyi +2 -2
  479. homeassistant-stubs/components/todo/__init__.pyi +3 -2
  480. homeassistant-stubs/components/tplink/__init__.pyi +9 -6
  481. homeassistant-stubs/components/tplink/binary_sensor.pyi +22 -0
  482. homeassistant-stubs/components/tplink/button.pyi +22 -0
  483. homeassistant-stubs/components/tplink/climate.pyi +42 -0
  484. homeassistant-stubs/components/tplink/config_flow.pyi +4 -4
  485. homeassistant-stubs/components/tplink/const.pyi +3 -1
  486. homeassistant-stubs/components/tplink/coordinator.pyi +2 -2
  487. homeassistant-stubs/components/tplink/diagnostics.pyi +2 -4
  488. homeassistant-stubs/components/tplink/entity.pyi +49 -7
  489. homeassistant-stubs/components/tplink/fan.pyi +31 -0
  490. homeassistant-stubs/components/tplink/light.pyi +19 -19
  491. homeassistant-stubs/components/tplink/number.pyi +27 -0
  492. homeassistant-stubs/components/tplink/select.pyi +26 -0
  493. homeassistant-stubs/components/tplink/sensor.pyi +14 -22
  494. homeassistant-stubs/components/tplink/switch.pyi +14 -34
  495. homeassistant-stubs/components/tplink_omada/controller.pyi +4 -15
  496. homeassistant-stubs/components/tplink_omada/coordinator.pyi +20 -1
  497. homeassistant-stubs/components/tplink_omada/device_tracker.pyi +36 -0
  498. homeassistant-stubs/components/transmission/__init__.pyi +9 -3
  499. homeassistant-stubs/components/transmission/sensor.pyi +2 -2
  500. homeassistant-stubs/components/transmission/switch.pyi +2 -4
  501. homeassistant-stubs/components/trend/__init__.pyi +2 -1
  502. homeassistant-stubs/components/trend/binary_sensor.pyi +6 -2
  503. homeassistant-stubs/components/tts/notify.pyi +2 -1
  504. homeassistant-stubs/components/unifi/config_flow.pyi +1 -1
  505. homeassistant-stubs/components/unifi/sensor.pyi +1 -0
  506. homeassistant-stubs/components/unifi/services.pyi +1 -0
  507. homeassistant-stubs/components/unifiprotect/__init__.pyi +8 -9
  508. homeassistant-stubs/components/unifiprotect/binary_sensor.pyi +29 -21
  509. homeassistant-stubs/components/unifiprotect/button.pyi +8 -9
  510. homeassistant-stubs/components/unifiprotect/camera.pyi +10 -10
  511. homeassistant-stubs/components/unifiprotect/const.pyi +0 -1
  512. homeassistant-stubs/components/unifiprotect/data.pyi +27 -14
  513. homeassistant-stubs/components/unifiprotect/diagnostics.pyi +2 -4
  514. homeassistant-stubs/components/unifiprotect/entity.pyi +27 -17
  515. homeassistant-stubs/components/unifiprotect/light.pyi +3 -6
  516. homeassistant-stubs/components/unifiprotect/lock.pyi +3 -8
  517. homeassistant-stubs/components/unifiprotect/media_player.pyi +4 -8
  518. homeassistant-stubs/components/unifiprotect/media_source.pyi +2 -3
  519. homeassistant-stubs/components/unifiprotect/migrate.pyi +5 -5
  520. homeassistant-stubs/components/unifiprotect/models.pyi +16 -17
  521. homeassistant-stubs/components/unifiprotect/number.pyi +8 -12
  522. homeassistant-stubs/components/unifiprotect/repairs.pyi +5 -3
  523. homeassistant-stubs/components/unifiprotect/select.pyi +9 -11
  524. homeassistant-stubs/components/unifiprotect/sensor.pyi +25 -23
  525. homeassistant-stubs/components/unifiprotect/services.pyi +0 -4
  526. homeassistant-stubs/components/unifiprotect/switch.pyi +15 -24
  527. homeassistant-stubs/components/unifiprotect/text.pyi +8 -11
  528. homeassistant-stubs/components/unifiprotect/utils.pyi +6 -11
  529. homeassistant-stubs/components/unifiprotect/views.pyi +2 -4
  530. homeassistant-stubs/components/update/__init__.pyi +3 -1
  531. homeassistant-stubs/components/vacuum/__init__.pyi +2 -1
  532. homeassistant-stubs/components/vallox/sensor.pyi +5 -1
  533. homeassistant-stubs/components/valve/__init__.pyi +3 -2
  534. homeassistant-stubs/components/water_heater/__init__.pyi +4 -3
  535. homeassistant-stubs/components/weather/__init__.pyi +4 -5
  536. homeassistant-stubs/components/webhook/__init__.pyi +1 -1
  537. homeassistant-stubs/components/webostv/__init__.pyi +7 -0
  538. homeassistant-stubs/components/websocket_api/__init__.pyi +3 -4
  539. homeassistant-stubs/components/websocket_api/decorators.pyi +2 -1
  540. homeassistant-stubs/components/wemo/entity.pyi +2 -2
  541. homeassistant-stubs/components/wemo/fan.pyi +2 -1
  542. homeassistant-stubs/components/withings/coordinator.pyi +3 -3
  543. homeassistant-stubs/components/withings/sensor.pyi +6 -2
  544. homeassistant-stubs/components/worldclock/sensor.pyi +2 -1
  545. homeassistant-stubs/components/xiaomi_ble/sensor.pyi +1 -1
  546. homeassistant-stubs/components/zone/__init__.pyi +3 -3
  547. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  548. homeassistant-stubs/components/zwave_js/api.pyi +1 -5
  549. homeassistant-stubs/components/zwave_js/config_flow.pyi +8 -1
  550. homeassistant-stubs/components/zwave_js/const.pyi +5 -0
  551. homeassistant-stubs/components/zwave_js/discovery.pyi +4 -4
  552. homeassistant-stubs/components/zwave_js/helpers.pyi +2 -2
  553. homeassistant-stubs/components/zwave_js/sensor.pyi +2 -0
  554. homeassistant-stubs/components/zwave_js/services.pyi +3 -2
  555. homeassistant-stubs/config.pyi +4 -5
  556. homeassistant-stubs/config_entries.pyi +6 -3
  557. homeassistant-stubs/const.pyi +9 -3
  558. homeassistant-stubs/core.pyi +13 -8
  559. homeassistant-stubs/data_entry_flow.pyi +12 -2
  560. homeassistant-stubs/exceptions.pyi +6 -5
  561. homeassistant-stubs/helpers/__init__.pyi +0 -5
  562. homeassistant-stubs/helpers/collection.pyi +14 -11
  563. homeassistant-stubs/helpers/condition.pyi +3 -2
  564. homeassistant-stubs/helpers/config_validation.pyi +5 -4
  565. homeassistant-stubs/helpers/deprecation.pyi +10 -0
  566. homeassistant-stubs/helpers/device.pyi +8 -0
  567. homeassistant-stubs/helpers/device_registry.pyi +14 -2
  568. homeassistant-stubs/helpers/entity.pyi +3 -2
  569. homeassistant-stubs/helpers/entity_component.pyi +3 -4
  570. homeassistant-stubs/helpers/entity_platform.pyi +2 -3
  571. homeassistant-stubs/helpers/frame.pyi +1 -0
  572. homeassistant-stubs/helpers/http.pyi +1 -1
  573. homeassistant-stubs/helpers/intent.pyi +6 -4
  574. homeassistant-stubs/helpers/llm.pyi +17 -3
  575. homeassistant-stubs/helpers/schema_config_entry_flow.pyi +2 -2
  576. homeassistant-stubs/helpers/script.pyi +3 -2
  577. homeassistant-stubs/helpers/selector.pyi +10 -8
  578. homeassistant-stubs/helpers/service.pyi +6 -3
  579. homeassistant-stubs/helpers/template.pyi +8 -6
  580. homeassistant-stubs/helpers/trace.pyi +3 -2
  581. homeassistant-stubs/helpers/typing.pyi +6 -1
  582. homeassistant-stubs/helpers/update_coordinator.pyi +3 -3
  583. homeassistant-stubs/loader.pyi +1 -2
  584. homeassistant-stubs/requirements.pyi +0 -3
  585. homeassistant-stubs/setup.pyi +4 -3
  586. homeassistant-stubs/util/loop.pyi +2 -1
  587. homeassistant-stubs/util/unit_conversion.pyi +7 -1
  588. {homeassistant_stubs-2024.6.4.dist-info → homeassistant_stubs-2024.7.0b0.dist-info}/METADATA +2 -2
  589. {homeassistant_stubs-2024.6.4.dist-info → homeassistant_stubs-2024.7.0b0.dist-info}/RECORD +591 -548
  590. homeassistant-stubs/auth/providers/legacy_api_password.pyi +0 -30
  591. homeassistant-stubs/components/air_quality/group.pyi +0 -5
  592. homeassistant-stubs/components/alarm_control_panel/group.pyi +0 -6
  593. homeassistant-stubs/components/climate/group.pyi +0 -6
  594. homeassistant-stubs/components/cover/group.pyi +0 -6
  595. homeassistant-stubs/components/device_tracker/group.pyi +0 -6
  596. homeassistant-stubs/components/fastdotcom/services.pyi +0 -7
  597. homeassistant-stubs/components/lock/group.pyi +0 -6
  598. homeassistant-stubs/components/media_player/group.pyi +0 -6
  599. homeassistant-stubs/components/sensor/group.pyi +0 -5
  600. homeassistant-stubs/components/vacuum/group.pyi +0 -6
  601. homeassistant-stubs/components/water_heater/group.pyi +0 -6
  602. homeassistant-stubs/components/weather/group.pyi +0 -5
  603. homeassistant-stubs/components/wled/binary_sensor.pyi +0 -20
  604. {homeassistant_stubs-2024.6.4.dist-info → homeassistant_stubs-2024.7.0b0.dist-info}/LICENSE +0 -0
  605. {homeassistant_stubs-2024.6.4.dist-info → homeassistant_stubs-2024.7.0b0.dist-info}/WHEEL +0 -0
@@ -22,7 +22,6 @@ CONFIG_OPTIONS: Incomplete
22
22
  DEFAULT_PORT: int
23
23
  DEFAULT_ATTRIBUTION: str
24
24
  DEFAULT_BRAND: str
25
- DEFAULT_SCAN_INTERVAL: int
26
25
  DEFAULT_VERIFY_SSL: bool
27
26
  DEFAULT_MAX_MEDIA: int
28
27
  DEVICES_THAT_ADOPT: Incomplete
@@ -1,50 +1,63 @@
1
1
  from .const import AUTH_RETRIES as AUTH_RETRIES, CONF_DISABLE_RTSP as CONF_DISABLE_RTSP, CONF_MAX_MEDIA as CONF_MAX_MEDIA, DEFAULT_MAX_MEDIA as DEFAULT_MAX_MEDIA, DEVICES_THAT_ADOPT as DEVICES_THAT_ADOPT, DISPATCH_ADD as DISPATCH_ADD, DISPATCH_ADOPT as DISPATCH_ADOPT, DISPATCH_CHANNELS as DISPATCH_CHANNELS, DOMAIN as DOMAIN
2
2
  from .utils import async_get_devices_by_type as async_get_devices_by_type
3
3
  from _typeshed import Incomplete
4
- from collections.abc import Callable as Callable, Generator, Iterable
4
+ from collections.abc import Callable as Callable, Iterable
5
5
  from datetime import datetime, timedelta
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HomeAssistant as HomeAssistant, callback as callback
8
- from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
8
+ from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect, async_dispatcher_send as async_dispatcher_send
9
9
  from homeassistant.helpers.event import async_track_time_interval as async_track_time_interval
10
10
  from typing import Any
11
+ from typing_extensions import Generator
11
12
  from uiprotect import ProtectApiClient as ProtectApiClient
12
- from uiprotect.data import Bootstrap as Bootstrap, ModelType, NVR, ProtectAdoptableDeviceModel, WSSubscriptionMessage as WSSubscriptionMessage
13
+ from uiprotect.data import Camera, ModelType, NVR, ProtectAdoptableDeviceModel, WSSubscriptionMessage as WSSubscriptionMessage
14
+ from uiprotect.websocket import WebsocketState
13
15
 
14
16
  _LOGGER: Incomplete
15
17
  ProtectDeviceType: Incomplete
18
+ UFPConfigEntry = ConfigEntry[ProtectData]
16
19
 
17
- def async_last_update_was_successful(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
20
+ def async_last_update_was_successful(hass: HomeAssistant, entry: UFPConfigEntry) -> bool: ...
21
+ def _async_dispatch_id(entry: UFPConfigEntry, dispatch: str) -> str: ...
18
22
 
19
23
  class ProtectData:
20
- _hass: Incomplete
21
24
  _entry: Incomplete
25
+ _hass: Incomplete
22
26
  _update_interval: Incomplete
23
27
  _subscriptions: Incomplete
24
28
  _pending_camera_ids: Incomplete
25
- _unsub_interval: Incomplete
26
- _unsub_websocket: Incomplete
29
+ _unsubs: Incomplete
27
30
  _auth_failures: int
28
31
  last_update_success: bool
29
32
  api: Incomplete
30
- def __init__(self, hass: HomeAssistant, protect: ProtectApiClient, update_interval: timedelta, entry: ConfigEntry) -> None: ...
33
+ adopt_signal: Incomplete
34
+ add_signal: Incomplete
35
+ channels_signal: Incomplete
36
+ def __init__(self, hass: HomeAssistant, protect: ProtectApiClient, update_interval: timedelta, entry: UFPConfigEntry) -> None: ...
31
37
  @property
32
38
  def disable_stream(self) -> bool: ...
33
39
  @property
34
40
  def max_events(self) -> int: ...
35
- def get_by_types(self, device_types: Iterable[ModelType], ignore_unadopted: bool = True) -> Generator[ProtectAdoptableDeviceModel, None, None]: ...
36
- async def async_setup(self) -> None: ...
41
+ def async_subscribe_adopt(self, add_callback: Callable[[ProtectAdoptableDeviceModel], None]) -> None: ...
42
+ def get_by_types(self, device_types: Iterable[ModelType], ignore_unadopted: bool = True) -> Generator[ProtectAdoptableDeviceModel]: ...
43
+ def get_cameras(self, ignore_unadopted: bool = True) -> Generator[Camera]: ...
44
+ def async_setup(self) -> None: ...
45
+ def _async_websocket_state_changed(self, state: WebsocketState) -> None: ...
46
+ def _async_update_change(self, success: bool, force_update: bool = False, exception: Exception | None = None) -> None: ...
37
47
  async def async_stop(self, *args: Any) -> None: ...
38
- async def async_refresh(self, *_: Any, force: bool = False) -> None: ...
48
+ async def async_refresh(self) -> None: ...
39
49
  def async_add_pending_camera_id(self, camera_id: str) -> None: ...
40
50
  def _async_add_device(self, device: ProtectAdoptableDeviceModel) -> None: ...
41
51
  def _async_remove_device(self, device: ProtectAdoptableDeviceModel) -> None: ...
42
52
  def _async_update_device(self, device: ProtectAdoptableDeviceModel | NVR, changed_data: dict[str, Any]) -> None: ...
43
53
  def _async_process_ws_message(self, message: WSSubscriptionMessage) -> None: ...
44
- def _async_process_updates(self, updates: Bootstrap | None) -> None: ...
54
+ def _async_process_updates(self) -> None: ...
45
55
  def _async_poll(self, now: datetime) -> None: ...
46
- def async_subscribe_device_id(self, mac: str, update_callback: Callable[[ProtectDeviceType], None]) -> CALLBACK_TYPE: ...
47
- def async_unsubscribe_device_id(self, mac: str, update_callback: Callable[[ProtectDeviceType], None]) -> None: ...
56
+ def async_subscribe(self, mac: str, update_callback: Callable[[ProtectDeviceType], None]) -> CALLBACK_TYPE: ...
57
+ def _async_unsubscribe(self, mac: str, update_callback: Callable[[ProtectDeviceType], None]) -> None: ...
48
58
  def _async_signal_device_update(self, device: ProtectDeviceType) -> None: ...
49
59
 
50
60
  def async_ufp_instance_for_config_entry_ids(hass: HomeAssistant, config_entry_ids: set[str]) -> ProtectApiClient | None: ...
61
+ def async_get_ufp_entries(hass: HomeAssistant) -> list[UFPConfigEntry]: ...
62
+ def async_get_data_for_nvr_id(hass: HomeAssistant, nvr_id: str) -> ProtectData | None: ...
63
+ def async_get_data_for_entry_id(hass: HomeAssistant, entry_id: str) -> ProtectData | None: ...
@@ -1,7 +1,5 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
3
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
1
+ from .data import UFPConfigEntry as UFPConfigEntry
4
2
  from homeassistant.core import HomeAssistant as HomeAssistant
5
3
  from typing import Any
6
4
 
7
- async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: ConfigEntry) -> dict[str, Any]: ...
5
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: UFPConfigEntry) -> dict[str, Any]: ...
@@ -1,51 +1,61 @@
1
1
  from .const import ATTR_EVENT_ID as ATTR_EVENT_ID, ATTR_EVENT_SCORE as ATTR_EVENT_SCORE, DEFAULT_ATTRIBUTION as DEFAULT_ATTRIBUTION, DEFAULT_BRAND as DEFAULT_BRAND, DOMAIN as DOMAIN
2
2
  from .data import ProtectData as ProtectData
3
- from .models import PermRequired as PermRequired, ProtectEventMixin as ProtectEventMixin, ProtectRequiredKeysMixin as ProtectRequiredKeysMixin
3
+ from .models import PermRequired as PermRequired, ProtectEntityDescription as ProtectEntityDescription, ProtectEventMixin as ProtectEventMixin
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Callable as Callable, Sequence
6
+ from datetime import datetime
6
7
  from homeassistant.core import callback as callback
7
8
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
8
9
  from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
9
- from homeassistant.helpers.typing import UNDEFINED as UNDEFINED
10
- from typing import Any
11
10
  from uiprotect.data import Event as Event, ModelType, NVR as NVR, ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
12
11
 
13
12
  _LOGGER: Incomplete
14
13
 
15
- def _async_device_entities(data: ProtectData, klass: type[ProtectDeviceEntity], model_type: ModelType, descs: Sequence[ProtectRequiredKeysMixin], unadopted_descs: Sequence[ProtectRequiredKeysMixin], ufp_device: ProtectAdoptableDeviceModel | None = None) -> list[ProtectDeviceEntity]: ...
16
- def async_all_device_entities(data: ProtectData, klass: type[ProtectDeviceEntity], camera_descs: Sequence[ProtectRequiredKeysMixin] | None = None, light_descs: Sequence[ProtectRequiredKeysMixin] | None = None, sense_descs: Sequence[ProtectRequiredKeysMixin] | None = None, viewer_descs: Sequence[ProtectRequiredKeysMixin] | None = None, lock_descs: Sequence[ProtectRequiredKeysMixin] | None = None, chime_descs: Sequence[ProtectRequiredKeysMixin] | None = None, all_descs: Sequence[ProtectRequiredKeysMixin] | None = None, unadopted_descs: Sequence[ProtectRequiredKeysMixin] | None = None, ufp_device: ProtectAdoptableDeviceModel | None = None) -> list[ProtectDeviceEntity]: ...
14
+ def _async_device_entities(data: ProtectData, klass: type[BaseProtectEntity], model_type: ModelType, descs: Sequence[ProtectEntityDescription], unadopted_descs: Sequence[ProtectEntityDescription] | None = None, ufp_device: ProtectAdoptableDeviceModel | None = None) -> list[BaseProtectEntity]: ...
17
15
 
18
- class ProtectDeviceEntity(Entity):
19
- device: ProtectAdoptableDeviceModel
16
+ _ALL_MODEL_TYPES: Incomplete
17
+
18
+ def _combine_model_descs(model_type: ModelType, model_descriptions: dict[ModelType, Sequence[ProtectEntityDescription]] | None, all_descs: Sequence[ProtectEntityDescription] | None) -> list[ProtectEntityDescription]: ...
19
+ def async_all_device_entities(data: ProtectData, klass: type[BaseProtectEntity], model_descriptions: dict[ModelType, Sequence[ProtectEntityDescription]] | None = None, all_descs: Sequence[ProtectEntityDescription] | None = None, unadopted_descs: list[ProtectEntityDescription] | None = None, ufp_device: ProtectAdoptableDeviceModel | None = None) -> list[BaseProtectEntity]: ...
20
+
21
+ class BaseProtectEntity(Entity):
22
+ device: ProtectAdoptableDeviceModel | NVR
20
23
  _attr_should_poll: bool
24
+ _attr_attribution = DEFAULT_ATTRIBUTION
25
+ _state_attrs: tuple[str, ...]
26
+ _attr_has_entity_name: bool
27
+ _async_get_ufp_enabled: Callable[[ProtectAdoptableDeviceModel], bool] | None
21
28
  data: Incomplete
22
- _async_get_ufp_enabled: Incomplete
23
29
  _attr_unique_id: Incomplete
24
30
  _attr_name: Incomplete
25
31
  entity_description: Incomplete
26
- _attr_attribution: Incomplete
27
- def __init__(self, data: ProtectData, device: ProtectAdoptableDeviceModel, description: EntityDescription | None = None) -> None: ...
32
+ _state_getters: Incomplete
33
+ def __init__(self, data: ProtectData, device: ProtectAdoptableDeviceModel | NVR, description: EntityDescription | None = None) -> None: ...
28
34
  async def async_update(self) -> None: ...
29
35
  _attr_device_info: Incomplete
30
36
  def _async_set_device_info(self) -> None: ...
31
37
  _attr_available: Incomplete
32
38
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
33
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
34
39
  def _async_updated_event(self, device: ProtectAdoptableDeviceModel | NVR) -> None: ...
35
40
  async def async_added_to_hass(self) -> None: ...
36
41
 
37
- class ProtectNVREntity(ProtectDeviceEntity):
42
+ class ProtectDeviceEntity(BaseProtectEntity):
43
+ device: ProtectAdoptableDeviceModel
44
+
45
+ class ProtectNVREntity(BaseProtectEntity):
38
46
  device: NVR
39
- def __init__(self, entry: ProtectData, device: NVR, description: EntityDescription | None = None) -> None: ...
40
47
  _attr_device_info: Incomplete
41
48
  def _async_set_device_info(self) -> None: ...
42
49
  _attr_available: Incomplete
43
50
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
44
51
 
45
52
  class EventEntityMixin(ProtectDeviceEntity):
46
- _unrecorded_attributes: Incomplete
47
53
  entity_description: ProtectEventMixin
48
- _event: Incomplete
49
- def __init__(self, *args: Any, **kwarg: Any) -> None: ...
54
+ _unrecorded_attributes: Incomplete
55
+ _event: Event | None
56
+ _event_end: datetime | None
57
+ def _set_event_done(self) -> None: ...
50
58
  _attr_extra_state_attributes: Incomplete
51
- def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
59
+ def _set_event_attrs(self, event: Event) -> None: ...
60
+ def _async_event_with_immediate_end(self) -> None: ...
61
+ def _event_already_ended(self, prev_event: Event | None, prev_event_end: datetime | None) -> bool: ...
@@ -1,18 +1,15 @@
1
- from .const import DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
1
+ from .data import UFPConfigEntry as UFPConfigEntry
3
2
  from .entity import ProtectDeviceEntity as ProtectDeviceEntity
4
3
  from _typeshed import Incomplete
5
4
  from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ColorMode as ColorMode, LightEntity as LightEntity
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
5
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
- from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
9
6
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
10
7
  from typing import Any
11
8
  from uiprotect.data import Light as Light, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
12
9
 
13
10
  _LOGGER: Incomplete
14
11
 
15
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
12
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
16
13
  def unifi_brightness_to_hass(value: int) -> int: ...
17
14
  def hass_to_unifi_brightness(value: int) -> int: ...
18
15
 
@@ -21,7 +18,7 @@ class ProtectLight(ProtectDeviceEntity, LightEntity):
21
18
  _attr_icon: str
22
19
  _attr_color_mode: Incomplete
23
20
  _attr_supported_color_modes: Incomplete
24
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
21
+ _state_attrs: Incomplete
25
22
  _attr_is_on: Incomplete
26
23
  _attr_brightness: Incomplete
27
24
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
@@ -1,25 +1,20 @@
1
- from .const import DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
1
+ from .data import UFPConfigEntry as UFPConfigEntry
3
2
  from .entity import ProtectDeviceEntity as ProtectDeviceEntity
4
3
  from _typeshed import Incomplete
5
4
  from homeassistant.components.lock import LockEntity as LockEntity, LockEntityDescription as LockEntityDescription
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
5
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
- from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
9
6
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
10
7
  from typing import Any
11
8
  from uiprotect.data import Doorlock, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
12
9
 
13
10
  _LOGGER: Incomplete
14
11
 
15
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
12
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
16
13
 
17
14
  class ProtectLock(ProtectDeviceEntity, LockEntity):
18
15
  device: Doorlock
19
16
  entity_description: LockEntityDescription
20
- _attr_name: Incomplete
21
- def __init__(self, data: ProtectData, doorlock: Doorlock) -> None: ...
22
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
17
+ _state_attrs: Incomplete
23
18
  _attr_is_locked: bool
24
19
  _attr_is_locking: bool
25
20
  _attr_is_unlocking: bool
@@ -1,33 +1,29 @@
1
- from .const import DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
1
+ from .data import UFPConfigEntry as UFPConfigEntry
3
2
  from .entity import ProtectDeviceEntity as ProtectDeviceEntity
4
3
  from _typeshed import Incomplete
5
4
  from homeassistant.components import media_source as media_source
6
5
  from homeassistant.components.media_player import BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityDescription as MediaPlayerEntityDescription, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType, async_process_play_media_url as async_process_play_media_url
7
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
9
7
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
- from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
11
8
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
9
  from typing import Any
13
10
  from uiprotect.data import Camera, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
14
11
 
15
12
  _LOGGER: Incomplete
13
+ _SPEAKER_DESCRIPTION: Incomplete
16
14
 
17
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
15
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
18
16
 
19
17
  class ProtectMediaPlayer(ProtectDeviceEntity, MediaPlayerEntity):
20
18
  device: Camera
21
19
  entity_description: MediaPlayerEntityDescription
22
20
  _attr_supported_features: Incomplete
23
- _attr_name: Incomplete
24
21
  _attr_media_content_type: Incomplete
25
- def __init__(self, data: ProtectData, camera: Camera) -> None: ...
22
+ _state_attrs: Incomplete
26
23
  _attr_volume_level: Incomplete
27
24
  _attr_state: Incomplete
28
25
  _attr_available: Incomplete
29
26
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
30
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
31
27
  async def async_set_volume_level(self, volume: float) -> None: ...
32
28
  async def async_media_stop(self) -> None: ...
33
29
  async def async_play_media(self, media_type: MediaType | str, media_id: str, **kwargs: Any) -> None: ...
@@ -1,5 +1,5 @@
1
1
  from .const import DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
2
+ from .data import ProtectData as ProtectData, async_get_ufp_entries as async_get_ufp_entries
3
3
  from .views import async_generate_event_video_url as async_generate_event_video_url, async_generate_thumbnail_url as async_generate_thumbnail_url
4
4
  from _typeshed import Incomplete
5
5
  from datetime import date, datetime, timedelta
@@ -11,7 +11,7 @@ from homeassistant.const import Platform as Platform
11
11
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
12
12
  from homeassistant.helpers import entity_registry as er
13
13
  from typing import Any, NoReturn
14
- from uiprotect.data import Camera, Event, EventType
14
+ from uiprotect.data import Camera as Camera, Event, EventType
15
15
 
16
16
  VIDEO_FORMAT: str
17
17
  THUMBNAIL_WIDTH: int
@@ -36,7 +36,6 @@ class IdentifierTimeType(str, Enum):
36
36
  EVENT_MAP: dict[SimpleEventType, set[EventType]]
37
37
  EVENT_NAME_MAP: Incomplete
38
38
 
39
- def get_ufp_event(event_type: SimpleEventType) -> set[EventType]: ...
40
39
  async def async_get_media_source(hass: HomeAssistant) -> MediaSource: ...
41
40
  def _get_month_start_end(start: datetime) -> tuple[datetime, datetime]: ...
42
41
  def _bad_identifier(identifier: str, err: Exception | None = None) -> NoReturn: ...
@@ -1,8 +1,8 @@
1
1
  from .const import DOMAIN as DOMAIN
2
+ from .data import UFPConfigEntry as UFPConfigEntry
2
3
  from _typeshed import Incomplete
3
4
  from homeassistant.components.automation import automations_with_entity as automations_with_entity
4
5
  from homeassistant.components.script import scripts_with_entity as scripts_with_entity
5
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
6
  from homeassistant.const import Platform as Platform
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
8
  from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity
@@ -20,7 +20,7 @@ class EntityUsage(TypedDict):
20
20
  automations: dict[str, list[str]]
21
21
  scripts: dict[str, list[str]]
22
22
 
23
- def check_if_used(hass: HomeAssistant, entry: ConfigEntry, entities: dict[str, EntityRef]) -> dict[str, EntityUsage]: ...
24
- def create_repair_if_used(hass: HomeAssistant, entry: ConfigEntry, breaks_in: str, entities: dict[str, EntityRef]) -> None: ...
25
- async def async_migrate_data(hass: HomeAssistant, entry: ConfigEntry, protect: ProtectApiClient, bootstrap: Bootstrap) -> None: ...
26
- def async_deprecate_hdr_package(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
23
+ def check_if_used(hass: HomeAssistant, entry: UFPConfigEntry, entities: dict[str, EntityRef]) -> dict[str, EntityUsage]: ...
24
+ def create_repair_if_used(hass: HomeAssistant, entry: UFPConfigEntry, breaks_in: str, entities: dict[str, EntityRef]) -> None: ...
25
+ async def async_migrate_data(hass: HomeAssistant, entry: UFPConfigEntry, protect: ProtectApiClient, bootstrap: Bootstrap) -> None: ...
26
+ def async_deprecate_hdr_package(hass: HomeAssistant, entry: UFPConfigEntry) -> None: ...
@@ -1,45 +1,44 @@
1
- from .utils import get_nested_attr as get_nested_attr
2
1
  from _typeshed import Incomplete
3
2
  from collections.abc import Callable as Callable, Coroutine
4
3
  from dataclasses import dataclass
5
4
  from enum import Enum
6
5
  from homeassistant.helpers.entity import EntityDescription as EntityDescription
7
6
  from typing import Any, Generic, TypeVar
8
- from uiprotect.data import Event as Event, NVR, ProtectAdoptableDeviceModel
7
+ from uiprotect.data import Event as Event, NVR, ProtectAdoptableDeviceModel, SmartDetectObjectType as SmartDetectObjectType
9
8
 
10
9
  _LOGGER: Incomplete
11
10
  T = TypeVar('T', bound=ProtectAdoptableDeviceModel | NVR)
12
11
 
13
- def split_tuple(value: tuple[str, ...] | str | None) -> tuple[str, ...] | None: ...
14
-
15
12
  class PermRequired(int, Enum):
16
13
  NO_WRITE: int
17
14
  WRITE: int
18
15
  DELETE: int
19
16
 
20
17
  @dataclass(frozen=True, kw_only=True)
21
- class ProtectRequiredKeysMixin(EntityDescription, Generic[T]):
22
- ufp_required_field: tuple[str, ...] | str | None = ...
23
- ufp_value: tuple[str, ...] | str | None = ...
18
+ class ProtectEntityDescription(EntityDescription, Generic[T]):
19
+ ufp_required_field: str | None = ...
20
+ ufp_value: str | None = ...
24
21
  ufp_value_fn: Callable[[T], Any] | None = ...
25
- ufp_enabled: tuple[str, ...] | str | None = ...
22
+ ufp_enabled: str | None = ...
26
23
  ufp_perm: PermRequired | None = ...
27
- def __post_init__(self) -> None: ...
24
+ has_required: Callable[[T], bool] = ...
25
+ get_ufp_enabled: Callable[[T], bool] | None = ...
28
26
  def get_ufp_value(self, obj: T) -> Any: ...
29
- def get_ufp_enabled(self, obj: T) -> bool: ...
30
- def has_required(self, obj: T) -> bool: ...
31
- def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm) -> None: ...
27
+ def __post_init__(self) -> None: ...
28
+ def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, has_required, get_ufp_enabled) -> None: ...
32
29
 
33
30
  @dataclass(frozen=True, kw_only=True)
34
- class ProtectEventMixin(ProtectRequiredKeysMixin[T]):
31
+ class ProtectEventMixin(ProtectEntityDescription[T]):
35
32
  ufp_event_obj: str | None = ...
33
+ ufp_obj_type: SmartDetectObjectType | None = ...
36
34
  def get_event_obj(self, obj: T) -> Event | None: ...
37
- def get_is_on(self, obj: T, event: Event | None) -> bool: ...
38
- def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, ufp_event_obj) -> None: ...
35
+ def has_matching_smart(self, event: Event) -> bool: ...
36
+ def __post_init__(self) -> None: ...
37
+ def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, has_required, get_ufp_enabled, ufp_event_obj, ufp_obj_type) -> None: ...
39
38
 
40
39
  @dataclass(frozen=True, kw_only=True)
41
- class ProtectSetableKeysMixin(ProtectRequiredKeysMixin[T]):
40
+ class ProtectSetableKeysMixin(ProtectEntityDescription[T]):
42
41
  ufp_set_method: str | None = ...
43
42
  ufp_set_method_fn: Callable[[T, Any], Coroutine[Any, Any, None]] | None = ...
44
43
  async def ufp_set(self, obj: T, value: Any) -> None: ...
45
- def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, ufp_set_method, ufp_set_method_fn) -> None: ...
44
+ def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, has_required, get_ufp_enabled, ufp_set_method, ufp_set_method_fn) -> None: ...
@@ -1,26 +1,21 @@
1
- from .const import DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
1
+ from .data import ProtectData as ProtectData, UFPConfigEntry as UFPConfigEntry
3
2
  from .entity import ProtectDeviceEntity as ProtectDeviceEntity, async_all_device_entities as async_all_device_entities
4
- from .models import PermRequired as PermRequired, ProtectSetableKeysMixin as ProtectSetableKeysMixin, T as T
3
+ from .models import PermRequired as PermRequired, ProtectEntityDescription as ProtectEntityDescription, ProtectSetableKeysMixin as ProtectSetableKeysMixin, T as T
5
4
  from _typeshed import Incomplete
5
+ from collections.abc import Sequence
6
6
  from dataclasses import dataclass
7
7
  from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
8
  from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfTime as UnitOfTime
10
9
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
- from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
12
10
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
13
- from typing import Any
14
- from uiprotect.data import Camera as Camera, Doorlock, Light, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
15
-
16
- _LOGGER: Incomplete
11
+ from uiprotect.data import Camera as Camera, Doorlock, Light, ModelType, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
17
12
 
18
13
  @dataclass(frozen=True, kw_only=True)
19
14
  class ProtectNumberEntityDescription(ProtectSetableKeysMixin[T], NumberEntityDescription):
20
15
  ufp_max: int | float
21
16
  ufp_min: int | float
22
17
  ufp_step: int | float
23
- def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, max_value, min_value, mode, native_max_value, native_min_value, native_step, native_unit_of_measurement, step, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, ufp_set_method, ufp_set_method_fn, ufp_max, ufp_min, ufp_step) -> None: ...
18
+ def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, max_value, min_value, mode, native_max_value, native_min_value, native_step, native_unit_of_measurement, step, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, has_required, get_ufp_enabled, ufp_set_method, ufp_set_method_fn, ufp_max, ufp_min, ufp_step) -> None: ...
24
19
 
25
20
  def _get_pir_duration(obj: Light) -> int: ...
26
21
  async def _set_pir_duration(obj: Light, value: float) -> None: ...
@@ -33,12 +28,14 @@ LIGHT_NUMBERS: tuple[ProtectNumberEntityDescription, ...]
33
28
  SENSE_NUMBERS: tuple[ProtectNumberEntityDescription, ...]
34
29
  DOORLOCK_NUMBERS: tuple[ProtectNumberEntityDescription, ...]
35
30
  CHIME_NUMBERS: tuple[ProtectNumberEntityDescription, ...]
31
+ _MODEL_DESCRIPTIONS: dict[ModelType, Sequence[ProtectEntityDescription]]
36
32
 
37
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
33
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
38
34
 
39
35
  class ProtectNumbers(ProtectDeviceEntity, NumberEntity):
40
36
  device: Camera | Light
41
37
  entity_description: ProtectNumberEntityDescription
38
+ _state_attrs: Incomplete
42
39
  _attr_native_max_value: Incomplete
43
40
  _attr_native_min_value: Incomplete
44
41
  _attr_native_step: Incomplete
@@ -46,4 +43,3 @@ class ProtectNumbers(ProtectDeviceEntity, NumberEntity):
46
43
  _attr_native_value: Incomplete
47
44
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
48
45
  async def async_set_native_value(self, value: float) -> None: ...
49
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
@@ -1,4 +1,5 @@
1
1
  from .const import CONF_ALLOW_EA as CONF_ALLOW_EA
2
+ from .data import UFPConfigEntry as UFPConfigEntry, async_get_data_for_entry_id as async_get_data_for_entry_id
2
3
  from .utils import async_create_api_client as async_create_api_client
3
4
  from homeassistant import data_entry_flow as data_entry_flow
4
5
  from homeassistant.components.repairs import ConfirmRepairFlow as ConfirmRepairFlow, RepairsFlow as RepairsFlow
@@ -9,8 +10,8 @@ from uiprotect.data import Bootstrap as Bootstrap, Camera as Camera
9
10
 
10
11
  class ProtectRepair(RepairsFlow):
11
12
  _api: ProtectApiClient
12
- _entry: ConfigEntry
13
- def __init__(self, *, api: ProtectApiClient, entry: ConfigEntry) -> None: ...
13
+ _entry: UFPConfigEntry
14
+ def __init__(self, *, api: ProtectApiClient, entry: UFPConfigEntry) -> None: ...
14
15
  def _async_get_placeholders(self) -> dict[str, str]: ...
15
16
 
16
17
  class EAConfirmRepair(ProtectRepair):
@@ -26,7 +27,7 @@ class RTSPRepair(ProtectRepair):
26
27
  _camera_id: str
27
28
  _camera: Camera | None
28
29
  _bootstrap: Bootstrap | None
29
- def __init__(self, *, api: ProtectApiClient, entry: ConfigEntry, camera_id: str) -> None: ...
30
+ def __init__(self, *, api: ProtectApiClient, entry: UFPConfigEntry, camera_id: str) -> None: ...
30
31
  def _async_get_placeholders(self) -> dict[str, str]: ...
31
32
  async def _get_boostrap(self) -> Bootstrap: ...
32
33
  async def _get_camera(self) -> Camera: ...
@@ -35,4 +36,5 @@ class RTSPRepair(ProtectRepair):
35
36
  async def async_step_start(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
36
37
  async def async_step_confirm(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
37
38
 
39
+ def _async_get_or_create_api_client(hass: HomeAssistant, entry: ConfigEntry) -> ProtectApiClient: ...
38
40
  async def async_create_fix_flow(hass: HomeAssistant, issue_id: str, data: dict[str, str | int | float | None] | None) -> RepairsFlow: ...
@@ -1,21 +1,19 @@
1
- from .const import DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN, TYPE_EMPTY_VALUE as TYPE_EMPTY_VALUE
2
- from .data import ProtectData as ProtectData
1
+ from .const import TYPE_EMPTY_VALUE as TYPE_EMPTY_VALUE
2
+ from .data import ProtectData as ProtectData, UFPConfigEntry as UFPConfigEntry
3
3
  from .entity import ProtectDeviceEntity as ProtectDeviceEntity, async_all_device_entities as async_all_device_entities
4
- from .models import PermRequired as PermRequired, ProtectSetableKeysMixin as ProtectSetableKeysMixin, T as T
4
+ from .models import PermRequired as PermRequired, ProtectEntityDescription as ProtectEntityDescription, ProtectSetableKeysMixin as ProtectSetableKeysMixin, T as T
5
5
  from .utils import async_get_light_motion_current as async_get_light_motion_current
6
6
  from _typeshed import Incomplete
7
- from collections.abc import Callable as Callable
7
+ from collections.abc import Callable as Callable, Sequence
8
8
  from dataclasses import dataclass
9
9
  from enum import Enum
10
10
  from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
11
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
12
11
  from homeassistant.const import EntityCategory as EntityCategory
13
12
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
14
- from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
15
13
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
16
14
  from typing import Any, Final
17
15
  from uiprotect.api import ProtectApiClient as ProtectApiClient
18
- from uiprotect.data import Camera, Doorlock, Light, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId, Sensor, Viewer
16
+ from uiprotect.data import Camera, Doorlock, Light, ModelType, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId, Sensor, Viewer
19
17
 
20
18
  _LOGGER: Incomplete
21
19
  _KEY_LIGHT_MOTION: str
@@ -38,7 +36,7 @@ class ProtectSelectEntityDescription(ProtectSetableKeysMixin[T], SelectEntityDes
38
36
  ufp_options: list[dict[str, Any]] | None = ...
39
37
  ufp_options_fn: Callable[[ProtectApiClient], list[dict[str, Any]]] | None = ...
40
38
  ufp_enum_type: type[Enum] | None = ...
41
- def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, options, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, ufp_set_method, ufp_set_method_fn, ufp_options, ufp_options_fn, ufp_enum_type) -> None: ...
39
+ def __init__(self, *, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, translation_placeholders, unit_of_measurement, options, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, has_required, get_ufp_enabled, ufp_set_method, ufp_set_method_fn, ufp_options, ufp_options_fn, ufp_enum_type) -> None: ...
42
40
 
43
41
  def _get_viewer_options(api: ProtectApiClient) -> list[dict[str, Any]]: ...
44
42
  def _get_doorbell_options(api: ProtectApiClient) -> list[dict[str, Any]]: ...
@@ -55,13 +53,14 @@ LIGHT_SELECTS: tuple[ProtectSelectEntityDescription, ...]
55
53
  SENSE_SELECTS: tuple[ProtectSelectEntityDescription, ...]
56
54
  DOORLOCK_SELECTS: tuple[ProtectSelectEntityDescription, ...]
57
55
  VIEWER_SELECTS: tuple[ProtectSelectEntityDescription, ...]
56
+ _MODEL_DESCRIPTIONS: dict[ModelType, Sequence[ProtectEntityDescription]]
58
57
 
59
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
58
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
60
59
 
61
60
  class ProtectSelects(ProtectDeviceEntity, SelectEntity):
62
61
  device: Camera | Light | Viewer
63
62
  entity_description: ProtectSelectEntityDescription
64
- _attr_name: Incomplete
63
+ _state_attrs: Incomplete
65
64
  def __init__(self, data: ProtectData, device: Camera | Light | Viewer, description: ProtectSelectEntityDescription) -> None: ...
66
65
  _attr_current_option: Incomplete
67
66
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
@@ -70,4 +69,3 @@ class ProtectSelects(ProtectDeviceEntity, SelectEntity):
70
69
  _unifi_to_hass_options: Incomplete
71
70
  def _async_set_options(self, data: ProtectData, description: ProtectSelectEntityDescription) -> None: ...
72
71
  async def async_select_option(self, option: str) -> None: ...
73
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...