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
@@ -1,35 +1,27 @@
1
- from . import legacy_device_id as legacy_device_id
2
- from .const import ATTR_CURRENT_A as ATTR_CURRENT_A, ATTR_CURRENT_POWER_W as ATTR_CURRENT_POWER_W, ATTR_TODAY_ENERGY_KWH as ATTR_TODAY_ENERGY_KWH, ATTR_TOTAL_ENERGY_KWH as ATTR_TOTAL_ENERGY_KWH, DOMAIN as DOMAIN
1
+ from . import TPLinkConfigEntry as TPLinkConfigEntry
2
+ from .const import UNIT_MAPPING as UNIT_MAPPING
3
3
  from .coordinator import TPLinkDataUpdateCoordinator as TPLinkDataUpdateCoordinator
4
- from .entity import CoordinatedTPLinkEntity as CoordinatedTPLinkEntity
5
- from .models import TPLinkData as TPLinkData
4
+ from .entity import CoordinatedTPLinkFeatureEntity as CoordinatedTPLinkFeatureEntity, TPLinkFeatureEntityDescription as TPLinkFeatureEntityDescription
6
5
  from _typeshed import Incomplete
7
6
  from dataclasses import dataclass
8
7
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
9
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
10
- from homeassistant.const import ATTR_VOLTAGE as ATTR_VOLTAGE, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower
11
8
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
12
9
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
13
- from kasa import SmartDevice as SmartDevice
10
+ from kasa import Device as Device, Feature
14
11
 
15
- @dataclass(frozen=True)
16
- class TPLinkSensorEntityDescription(SensorEntityDescription):
17
- emeter_attr: str | None = ...
18
- precision: int | None = ...
19
- 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, last_reset, native_unit_of_measurement, options, state_class, suggested_display_precision, suggested_unit_of_measurement, emeter_attr, precision) -> None: ...
12
+ @dataclass(frozen=True, kw_only=True)
13
+ class TPLinkSensorEntityDescription(SensorEntityDescription, TPLinkFeatureEntityDescription):
14
+ 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, last_reset, native_unit_of_measurement, options, state_class, suggested_display_precision, suggested_unit_of_measurement) -> None: ...
20
15
 
21
- ENERGY_SENSORS: tuple[TPLinkSensorEntityDescription, ...]
16
+ SENSOR_DESCRIPTIONS: tuple[TPLinkSensorEntityDescription, ...]
17
+ SENSOR_DESCRIPTIONS_MAP: Incomplete
22
18
 
23
- def async_emeter_from_device(device: SmartDevice, description: TPLinkSensorEntityDescription) -> float | None: ...
24
- def _async_sensors_for_device(device: SmartDevice, coordinator: TPLinkDataUpdateCoordinator, has_parent: bool = False) -> list[SmartPlugSensor]: ...
25
- async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
19
+ async def async_setup_entry(hass: HomeAssistant, config_entry: TPLinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
26
20
 
27
- class SmartPlugSensor(CoordinatedTPLinkEntity, SensorEntity):
21
+ class TPLinkSensorEntity(CoordinatedTPLinkFeatureEntity, SensorEntity):
28
22
  entity_description: TPLinkSensorEntityDescription
29
- _attr_unique_id: Incomplete
30
- _attr_translation_placeholders: Incomplete
31
- _attr_translation_key: Incomplete
32
- def __init__(self, device: SmartDevice, coordinator: TPLinkDataUpdateCoordinator, description: TPLinkSensorEntityDescription, has_parent: bool = False) -> None: ...
23
+ def __init__(self, device: Device, coordinator: TPLinkDataUpdateCoordinator, *, feature: Feature, description: TPLinkSensorEntityDescription, parent: Device | None = None) -> None: ...
24
+ _attr_suggested_display_precision: Incomplete
33
25
  _attr_native_value: Incomplete
26
+ _attr_native_unit_of_measurement: Incomplete
34
27
  def _async_update_attrs(self) -> None: ...
35
- def _handle_coordinator_update(self) -> None: ...
@@ -1,48 +1,28 @@
1
- from . import legacy_device_id as legacy_device_id
2
- from .const import DOMAIN as DOMAIN
1
+ from . import TPLinkConfigEntry as TPLinkConfigEntry
3
2
  from .coordinator import TPLinkDataUpdateCoordinator as TPLinkDataUpdateCoordinator
4
- from .entity import CoordinatedTPLinkEntity as CoordinatedTPLinkEntity, async_refresh_after as async_refresh_after
5
- from .models import TPLinkData as TPLinkData
3
+ from .entity import CoordinatedTPLinkFeatureEntity as CoordinatedTPLinkFeatureEntity, TPLinkFeatureEntityDescription as TPLinkFeatureEntityDescription, async_refresh_after as async_refresh_after
6
4
  from _typeshed import Incomplete
7
- from homeassistant.components.switch import SwitchEntity as SwitchEntity
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
- from homeassistant.const import EntityCategory as EntityCategory
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.switch import SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
10
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
8
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
- from kasa import SmartDevice as SmartDevice, SmartPlug
9
+ from kasa import Device as Device, Feature
13
10
  from typing import Any
14
11
 
15
12
  _LOGGER: Incomplete
16
13
 
17
- async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
14
+ @dataclass(frozen=True, kw_only=True)
15
+ class TPLinkSwitchEntityDescription(SwitchEntityDescription, TPLinkFeatureEntityDescription):
16
+ 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) -> None: ...
18
17
 
19
- class SmartPlugLedSwitch(CoordinatedTPLinkEntity, SwitchEntity):
20
- device: SmartPlug
21
- _attr_translation_key: str
22
- _attr_entity_category: Incomplete
23
- _attr_unique_id: Incomplete
24
- def __init__(self, device: SmartPlug, coordinator: TPLinkDataUpdateCoordinator) -> None: ...
25
- async def async_turn_on(self, **kwargs: Any) -> None: ...
26
- async def async_turn_off(self, **kwargs: Any) -> None: ...
27
- _attr_is_on: Incomplete
28
- def _async_update_attrs(self) -> None: ...
29
- def _handle_coordinator_update(self) -> None: ...
18
+ SWITCH_DESCRIPTIONS: tuple[TPLinkSwitchEntityDescription, ...]
19
+ SWITCH_DESCRIPTIONS_MAP: Incomplete
30
20
 
31
- class SmartPlugSwitch(CoordinatedTPLinkEntity, SwitchEntity):
32
- _attr_name: str | None
33
- _attr_unique_id: Incomplete
34
- def __init__(self, device: SmartDevice, coordinator: TPLinkDataUpdateCoordinator) -> None: ...
35
- async def async_turn_on(self, **kwargs: Any) -> None: ...
36
- async def async_turn_off(self, **kwargs: Any) -> None: ...
37
- _attr_is_on: Incomplete
38
- def _async_update_attrs(self) -> None: ...
39
- def _handle_coordinator_update(self) -> None: ...
21
+ async def async_setup_entry(hass: HomeAssistant, config_entry: TPLinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
40
22
 
41
- class SmartPlugSwitchChild(SmartPlugSwitch):
42
- _plug: Incomplete
43
- _attr_unique_id: Incomplete
44
- _attr_name: Incomplete
45
- def __init__(self, device: SmartDevice, coordinator: TPLinkDataUpdateCoordinator, plug: SmartDevice) -> None: ...
23
+ class TPLinkSwitch(CoordinatedTPLinkFeatureEntity, SwitchEntity):
24
+ entity_description: TPLinkSwitchEntityDescription
25
+ def __init__(self, device: Device, coordinator: TPLinkDataUpdateCoordinator, *, feature: Feature, description: TPLinkSwitchEntityDescription, parent: Device | None = None) -> None: ...
46
26
  async def async_turn_on(self, **kwargs: Any) -> None: ...
47
27
  async def async_turn_off(self, **kwargs: Any) -> None: ...
48
28
  _attr_is_on: Incomplete
@@ -1,25 +1,13 @@
1
- from .coordinator import OmadaCoordinator as OmadaCoordinator
1
+ from .coordinator import OmadaClientsCoordinator as OmadaClientsCoordinator, OmadaGatewayCoordinator as OmadaGatewayCoordinator, OmadaSwitchPortCoordinator as OmadaSwitchPortCoordinator
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.core import HomeAssistant as HomeAssistant
4
4
  from tplink_omada_client import OmadaSiteClient as OmadaSiteClient
5
- from tplink_omada_client.devices import OmadaGateway, OmadaSwitch as OmadaSwitch, OmadaSwitchPortDetails
6
-
7
- POLL_SWITCH_PORT: int
8
- POLL_GATEWAY: int
9
-
10
- class OmadaSwitchPortCoordinator(OmadaCoordinator[OmadaSwitchPortDetails]):
11
- _network_switch: Incomplete
12
- def __init__(self, hass: HomeAssistant, omada_client: OmadaSiteClient, network_switch: OmadaSwitch) -> None: ...
13
- async def poll_update(self) -> dict[str, OmadaSwitchPortDetails]: ...
14
-
15
- class OmadaGatewayCoordinator(OmadaCoordinator[OmadaGateway]):
16
- mac: Incomplete
17
- def __init__(self, hass: HomeAssistant, omada_client: OmadaSiteClient, mac: str) -> None: ...
18
- async def poll_update(self) -> dict[str, OmadaGateway]: ...
5
+ from tplink_omada_client.devices import OmadaSwitch as OmadaSwitch
19
6
 
20
7
  class OmadaSiteController:
21
8
  _gateway_coordinator: OmadaGatewayCoordinator | None
22
9
  _initialized_gateway_coordinator: bool
10
+ _clients_coordinator: OmadaClientsCoordinator | None
23
11
  _hass: Incomplete
24
12
  _omada_client: Incomplete
25
13
  _switch_port_coordinators: Incomplete
@@ -28,3 +16,4 @@ class OmadaSiteController:
28
16
  def omada_client(self) -> OmadaSiteClient: ...
29
17
  def get_switch_port_coordinator(self, switch: OmadaSwitch) -> OmadaSwitchPortCoordinator: ...
30
18
  async def get_gateway_coordinator(self) -> OmadaGatewayCoordinator | None: ...
19
+ def get_clients_coordinator(self) -> OmadaClientsCoordinator: ...
@@ -1,12 +1,31 @@
1
1
  from _typeshed import Incomplete
2
2
  from homeassistant.core import HomeAssistant as HomeAssistant
3
3
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
4
- from tplink_omada_client import OmadaSiteClient as OmadaSiteClient
4
+ from tplink_omada_client import OmadaSiteClient as OmadaSiteClient, OmadaSwitchPortDetails
5
+ from tplink_omada_client.clients import OmadaWirelessClient
6
+ from tplink_omada_client.devices import OmadaGateway, OmadaSwitch as OmadaSwitch
5
7
 
6
8
  _LOGGER: Incomplete
9
+ POLL_SWITCH_PORT: int
10
+ POLL_GATEWAY: int
11
+ POLL_CLIENTS: int
7
12
 
8
13
  class OmadaCoordinator(DataUpdateCoordinator[dict[str, _T]]):
9
14
  omada_client: Incomplete
10
15
  def __init__(self, hass: HomeAssistant, omada_client: OmadaSiteClient, name: str, poll_delay: int = 300) -> None: ...
11
16
  async def _async_update_data(self) -> dict[str, _T]: ...
12
17
  async def poll_update(self) -> dict[str, _T]: ...
18
+
19
+ class OmadaSwitchPortCoordinator(OmadaCoordinator[OmadaSwitchPortDetails]):
20
+ _network_switch: Incomplete
21
+ def __init__(self, hass: HomeAssistant, omada_client: OmadaSiteClient, network_switch: OmadaSwitch) -> None: ...
22
+ async def poll_update(self) -> dict[str, OmadaSwitchPortDetails]: ...
23
+
24
+ class OmadaGatewayCoordinator(OmadaCoordinator[OmadaGateway]):
25
+ mac: Incomplete
26
+ def __init__(self, hass: HomeAssistant, omada_client: OmadaSiteClient, mac: str) -> None: ...
27
+ async def poll_update(self) -> dict[str, OmadaGateway]: ...
28
+
29
+ class OmadaClientsCoordinator(OmadaCoordinator[OmadaWirelessClient]):
30
+ def __init__(self, hass: HomeAssistant, omada_client: OmadaSiteClient) -> None: ...
31
+ async def poll_update(self) -> dict[str, OmadaWirelessClient]: ...
@@ -0,0 +1,36 @@
1
+ from .config_flow import CONF_SITE as CONF_SITE
2
+ from .const import DOMAIN as DOMAIN
3
+ from .controller import OmadaClientsCoordinator as OmadaClientsCoordinator, OmadaSiteController as OmadaSiteController
4
+ from _typeshed import Incomplete
5
+ from homeassistant.components.device_tracker import ScannerEntity as ScannerEntity, SourceType as SourceType
6
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
9
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
10
+ from tplink_omada_client.clients import OmadaWirelessClient
11
+
12
+ _LOGGER: Incomplete
13
+
14
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
15
+
16
+ class OmadaClientScannerEntity(CoordinatorEntity[OmadaClientsCoordinator], ScannerEntity):
17
+ _client_details: OmadaWirelessClient | None
18
+ _site_id: Incomplete
19
+ _client_id: Incomplete
20
+ _attr_name: Incomplete
21
+ def __init__(self, site_id: str, client_id: str, display_name: str, coordinator: OmadaClientsCoordinator) -> None: ...
22
+ @property
23
+ def source_type(self) -> SourceType: ...
24
+ def _do_update(self) -> None: ...
25
+ async def async_added_to_hass(self) -> None: ...
26
+ def _handle_coordinator_update(self) -> None: ...
27
+ @property
28
+ def ip_address(self) -> str | None: ...
29
+ @property
30
+ def mac_address(self) -> str | None: ...
31
+ @property
32
+ def hostname(self) -> str | None: ...
33
+ @property
34
+ def is_connected(self) -> bool: ...
35
+ @property
36
+ def unique_id(self) -> str | None: ...
@@ -3,11 +3,12 @@ from .const import ATTR_DELETE_DATA as ATTR_DELETE_DATA, ATTR_TORRENT as ATTR_TO
3
3
  from .coordinator import TransmissionDataUpdateCoordinator as TransmissionDataUpdateCoordinator
4
4
  from .errors import AuthenticationError as AuthenticationError, CannotConnect as CannotConnect, UnknownError as UnknownError
5
5
  from _typeshed import Incomplete
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigEntryState as ConfigEntryState
7
7
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_ID as CONF_ID, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_PATH as CONF_PATH, CONF_PORT as CONF_PORT, CONF_SSL as CONF_SSL, CONF_USERNAME as CONF_USERNAME, Platform as Platform
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
9
- from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
9
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady, HomeAssistantError as HomeAssistantError
10
10
  from homeassistant.helpers import selector as selector
11
+ from homeassistant.helpers.typing import ConfigType as ConfigType
11
12
  from typing import Any
12
13
 
13
14
  _LOGGER: Incomplete
@@ -18,8 +19,13 @@ SERVICE_ADD_TORRENT_SCHEMA: Incomplete
18
19
  SERVICE_REMOVE_TORRENT_SCHEMA: Incomplete
19
20
  SERVICE_START_TORRENT_SCHEMA: Incomplete
20
21
  SERVICE_STOP_TORRENT_SCHEMA: Incomplete
22
+ CONFIG_SCHEMA: Incomplete
23
+ TransmissionConfigEntry = ConfigEntry[TransmissionDataUpdateCoordinator]
21
24
 
22
- async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
25
+ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
26
+ async def async_setup_entry(hass: HomeAssistant, config_entry: TransmissionConfigEntry) -> bool: ...
23
27
  async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
24
28
  async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
29
+ def _get_coordinator_from_service_data(hass: HomeAssistant, entry_id: str) -> TransmissionDataUpdateCoordinator: ...
30
+ def setup_hass_services(hass: HomeAssistant) -> None: ...
25
31
  async def get_api(hass: HomeAssistant, entry: dict[str, Any]) -> transmission_rpc.Client: ...
@@ -1,10 +1,10 @@
1
+ from . import TransmissionConfigEntry as TransmissionConfigEntry
1
2
  from .const import DOMAIN as DOMAIN, STATE_ATTR_TORRENT_INFO as STATE_ATTR_TORRENT_INFO, STATE_DOWNLOADING as STATE_DOWNLOADING, STATE_SEEDING as STATE_SEEDING, STATE_UP_DOWN as STATE_UP_DOWN, SUPPORTED_ORDER_MODES as SUPPORTED_ORDER_MODES
2
3
  from .coordinator import TransmissionDataUpdateCoordinator as TransmissionDataUpdateCoordinator
3
4
  from _typeshed import Incomplete
4
5
  from collections.abc import Callable as Callable
5
6
  from dataclasses import dataclass
6
7
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
7
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
8
  from homeassistant.const import STATE_IDLE as STATE_IDLE, UnitOfDataRate as UnitOfDataRate
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
@@ -24,7 +24,7 @@ class TransmissionSensorEntityDescription(SensorEntityDescription):
24
24
 
25
25
  SENSOR_TYPES: tuple[TransmissionSensorEntityDescription, ...]
26
26
 
27
- async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
27
+ async def async_setup_entry(hass: HomeAssistant, config_entry: TransmissionConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
28
28
 
29
29
  class TransmissionSensor(CoordinatorEntity[TransmissionDataUpdateCoordinator], SensorEntity):
30
30
  entity_description: TransmissionSensorEntityDescription
@@ -1,18 +1,16 @@
1
+ from . import TransmissionConfigEntry as TransmissionConfigEntry
1
2
  from .const import DOMAIN as DOMAIN
2
3
  from .coordinator import TransmissionDataUpdateCoordinator as TransmissionDataUpdateCoordinator
3
4
  from _typeshed import Incomplete
4
5
  from collections.abc import Callable as Callable
5
6
  from dataclasses import dataclass
6
7
  from homeassistant.components.switch import SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
7
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
10
10
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
11
  from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
12
12
  from typing import Any
13
13
 
14
- _LOGGING: Incomplete
15
-
16
14
  @dataclass(frozen=True, kw_only=True)
17
15
  class TransmissionSwitchEntityDescription(SwitchEntityDescription):
18
16
  is_on_func: Callable[[TransmissionDataUpdateCoordinator], bool | None]
@@ -22,7 +20,7 @@ class TransmissionSwitchEntityDescription(SwitchEntityDescription):
22
20
 
23
21
  SWITCH_TYPES: tuple[TransmissionSwitchEntityDescription, ...]
24
22
 
25
- async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
23
+ async def async_setup_entry(hass: HomeAssistant, config_entry: TransmissionConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
26
24
 
27
25
  class TransmissionSwitch(CoordinatorEntity[TransmissionDataUpdateCoordinator], SwitchEntity):
28
26
  entity_description: TransmissionSwitchEntityDescription
@@ -1,7 +1,8 @@
1
1
  from _typeshed import Incomplete
2
2
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
3
- from homeassistant.const import Platform as Platform
3
+ from homeassistant.const import CONF_ENTITY_ID as CONF_ENTITY_ID, Platform as Platform
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.helpers.device import async_remove_stale_devices_links_keep_entity_device as async_remove_stale_devices_links_keep_entity_device
5
6
 
6
7
  PLATFORMS: Incomplete
7
8
 
@@ -2,10 +2,12 @@ from . import PLATFORMS as PLATFORMS
2
2
  from .const import ATTR_GRADIENT as ATTR_GRADIENT, ATTR_INVERT as ATTR_INVERT, ATTR_MIN_GRADIENT as ATTR_MIN_GRADIENT, ATTR_SAMPLE_COUNT as ATTR_SAMPLE_COUNT, ATTR_SAMPLE_DURATION as ATTR_SAMPLE_DURATION, CONF_INVERT as CONF_INVERT, CONF_MAX_SAMPLES as CONF_MAX_SAMPLES, CONF_MIN_GRADIENT as CONF_MIN_GRADIENT, CONF_MIN_SAMPLES as CONF_MIN_SAMPLES, CONF_SAMPLE_DURATION as CONF_SAMPLE_DURATION, DEFAULT_MAX_SAMPLES as DEFAULT_MAX_SAMPLES, DEFAULT_MIN_GRADIENT as DEFAULT_MIN_GRADIENT, DEFAULT_MIN_SAMPLES as DEFAULT_MIN_SAMPLES, DEFAULT_SAMPLE_DURATION as DEFAULT_SAMPLE_DURATION, DOMAIN as DOMAIN
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Mapping
5
- from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, DEVICE_CLASSES_SCHEMA as DEVICE_CLASSES_SCHEMA, ENTITY_ID_FORMAT as ENTITY_ID_FORMAT, PLATFORM_SCHEMA as PLATFORM_SCHEMA
5
+ from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, DEVICE_CLASSES_SCHEMA as DEVICE_CLASSES_SCHEMA, ENTITY_ID_FORMAT as ENTITY_ID_FORMAT
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_FRIENDLY_NAME as ATTR_FRIENDLY_NAME, CONF_ATTRIBUTE as CONF_ATTRIBUTE, CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_ENTITY_ID as CONF_ENTITY_ID, CONF_FRIENDLY_NAME as CONF_FRIENDLY_NAME, CONF_SENSORS as CONF_SENSORS, STATE_ON as STATE_ON, STATE_UNAVAILABLE as STATE_UNAVAILABLE, STATE_UNKNOWN as STATE_UNKNOWN
8
8
  from homeassistant.core import Event as Event, EventStateChangedData as EventStateChangedData, HomeAssistant as HomeAssistant, callback as callback
9
+ from homeassistant.helpers import device_registry as dr
10
+ from homeassistant.helpers.device import async_device_info_to_link_from_entity as async_device_info_to_link_from_entity
9
11
  from homeassistant.helpers.entity import generate_entity_id as generate_entity_id
10
12
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
13
  from homeassistant.helpers.event import async_track_state_change_event as async_track_state_change_event
@@ -20,6 +22,7 @@ _LOGGER: Incomplete
20
22
  def _validate_min_max(data: dict[str, Any]) -> dict[str, Any]: ...
21
23
 
22
24
  SENSOR_SCHEMA: Incomplete
25
+ PLATFORM_SCHEMA: Incomplete
23
26
 
24
27
  async def async_setup_platform(hass: HomeAssistant, config: ConfigType, async_add_entities: AddEntitiesCallback, discovery_info: DiscoveryInfoType | None = None) -> None: ...
25
28
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
@@ -38,8 +41,9 @@ class SensorTrend(BinarySensorEntity, RestoreEntity):
38
41
  _attr_name: Incomplete
39
42
  _attr_device_class: Incomplete
40
43
  _attr_unique_id: Incomplete
44
+ _attr_device_info: Incomplete
41
45
  entity_id: Incomplete
42
- def __init__(self, name: str, entity_id: str, attribute: str | None, invert: bool, sample_duration: int, min_gradient: float, min_samples: int, max_samples: int, unique_id: str | None = None, device_class: BinarySensorDeviceClass | None = None, sensor_entity_id: str | None = None) -> None: ...
46
+ def __init__(self, name: str, entity_id: str, attribute: str | None, invert: bool, sample_duration: int, min_gradient: float, min_samples: int, max_samples: int, unique_id: str | None = None, device_class: BinarySensorDeviceClass | None = None, sensor_entity_id: str | None = None, device_info: dr.DeviceInfo | None = None) -> None: ...
43
47
  @property
44
48
  def is_on(self) -> bool | None: ...
45
49
  @property
@@ -1,6 +1,6 @@
1
1
  from . import ATTR_LANGUAGE as ATTR_LANGUAGE, ATTR_MEDIA_PLAYER_ENTITY_ID as ATTR_MEDIA_PLAYER_ENTITY_ID, ATTR_MESSAGE as ATTR_MESSAGE, DOMAIN as DOMAIN
2
2
  from _typeshed import Incomplete
3
- from homeassistant.components.notify import BaseNotificationService as BaseNotificationService, PLATFORM_SCHEMA as PLATFORM_SCHEMA
3
+ from homeassistant.components.notify import BaseNotificationService as BaseNotificationService
4
4
  from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_ENTITY_ID as CONF_ENTITY_ID, CONF_NAME as CONF_NAME
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant, split_entity_id as split_entity_id
6
6
  from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
@@ -10,6 +10,7 @@ CONF_MEDIA_PLAYER: str
10
10
  CONF_TTS_SERVICE: str
11
11
  ENTITY_LEGACY_PROVIDER_GROUP: str
12
12
  _LOGGER: Incomplete
13
+ PLATFORM_SCHEMA: Incomplete
13
14
 
14
15
  async def async_get_service(hass: HomeAssistant, config: ConfigType, discovery_info: DiscoveryInfoType | None = None) -> TTSNotificationService: ...
15
16
 
@@ -6,7 +6,7 @@ from _typeshed import Incomplete
6
6
  from aiounifi.interfaces.sites import Sites as Sites
7
7
  from collections.abc import Mapping
8
8
  from homeassistant.components import ssdp as ssdp
9
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
9
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigEntryState as ConfigEntryState, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
10
10
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL
11
11
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
12
12
  from homeassistant.helpers.device_registry import format_mac as format_mac
@@ -25,6 +25,7 @@ def async_client_rx_value_fn(hub: UnifiHub, client: Client) -> float: ...
25
25
  def async_client_tx_value_fn(hub: UnifiHub, client: Client) -> float: ...
26
26
  def async_client_uptime_value_fn(hub: UnifiHub, client: Client) -> datetime: ...
27
27
  def async_wlan_client_value_fn(hub: UnifiHub, wlan: Wlan) -> int: ...
28
+ def async_device_clients_value_fn(hub: UnifiHub, device: Device) -> int: ...
28
29
  def async_device_uptime_value_fn(hub: UnifiHub, device: Device) -> datetime | None: ...
29
30
  def async_device_uptime_value_changed_fn(old: StateType | date | datetime | Decimal, new: datetime | float | str | None) -> bool: ...
30
31
  def async_device_outlet_power_supported_fn(hub: UnifiHub, obj_id: str) -> bool: ...
@@ -1,5 +1,6 @@
1
1
  from _typeshed import Incomplete
2
2
  from collections.abc import Mapping
3
+ from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
3
4
  from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID
4
5
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
5
6
  from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC
@@ -1,12 +1,11 @@
1
- from .const import AUTH_RETRIES as AUTH_RETRIES, CONF_ALLOW_EA as CONF_ALLOW_EA, DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DEVICES_THAT_ADOPT as DEVICES_THAT_ADOPT, DOMAIN as DOMAIN, MIN_REQUIRED_PROTECT_V as MIN_REQUIRED_PROTECT_V, OUTDATED_LOG_MESSAGE as OUTDATED_LOG_MESSAGE, PLATFORMS as PLATFORMS
2
- from .data import ProtectData as ProtectData, async_ufp_instance_for_config_entry_ids as async_ufp_instance_for_config_entry_ids
1
+ from .const import AUTH_RETRIES as AUTH_RETRIES, CONF_ALLOW_EA as CONF_ALLOW_EA, DEVICES_THAT_ADOPT as DEVICES_THAT_ADOPT, DOMAIN as DOMAIN, MIN_REQUIRED_PROTECT_V as MIN_REQUIRED_PROTECT_V, OUTDATED_LOG_MESSAGE as OUTDATED_LOG_MESSAGE, PLATFORMS as PLATFORMS
2
+ from .data import ProtectData as ProtectData, UFPConfigEntry as UFPConfigEntry
3
3
  from .discovery import async_start_discovery as async_start_discovery
4
4
  from .migrate import async_migrate_data as async_migrate_data
5
- from .services import async_cleanup_services as async_cleanup_services, async_setup_services as async_setup_services
5
+ from .services import async_setup_services as async_setup_services
6
6
  from .utils import _async_unifi_mac_from_hass as _async_unifi_mac_from_hass, async_create_api_client as async_create_api_client, async_get_devices as async_get_devices
7
7
  from .views import ThumbnailProxyView as ThumbnailProxyView, VideoProxyView as VideoProxyView
8
8
  from _typeshed import Incomplete
9
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
10
9
  from homeassistant.const import EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
11
10
  from homeassistant.core import HomeAssistant as HomeAssistant
12
11
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
@@ -22,8 +21,8 @@ CONFIG_SCHEMA: Incomplete
22
21
  EARLY_ACCESS_URL: str
23
22
 
24
23
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
25
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
26
- async def _async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, data_service: ProtectData, bootstrap: Bootstrap) -> None: ...
27
- async def _async_options_updated(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
28
- async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
29
- async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
24
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry) -> bool: ...
25
+ async def _async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, data_service: ProtectData, bootstrap: Bootstrap) -> None: ...
26
+ async def _async_options_updated(hass: HomeAssistant, entry: UFPConfigEntry) -> None: ...
27
+ async def async_unload_entry(hass: HomeAssistant, entry: UFPConfigEntry) -> bool: ...
28
+ async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: UFPConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
@@ -1,64 +1,72 @@
1
1
  import dataclasses
2
- from .const import DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN
3
- from .data import ProtectData as ProtectData
4
- from .entity import EventEntityMixin as EventEntityMixin, ProtectDeviceEntity as ProtectDeviceEntity, ProtectNVREntity as ProtectNVREntity, async_all_device_entities as async_all_device_entities
5
- from .models import PermRequired as PermRequired, ProtectEventMixin as ProtectEventMixin, ProtectRequiredKeysMixin as ProtectRequiredKeysMixin
2
+ from .data import ProtectData as ProtectData, UFPConfigEntry as UFPConfigEntry
3
+ from .entity import BaseProtectEntity as BaseProtectEntity, EventEntityMixin as EventEntityMixin, ProtectDeviceEntity as ProtectDeviceEntity, ProtectNVREntity as ProtectNVREntity, async_all_device_entities as async_all_device_entities
4
+ from .models import PermRequired as PermRequired, ProtectEntityDescription as ProtectEntityDescription, ProtectEventMixin as ProtectEventMixin
6
5
  from _typeshed import Incomplete
6
+ from collections.abc import Sequence
7
7
  from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
8
  from homeassistant.const import EntityCategory as EntityCategory
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, Light as Light, NVR as NVR, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId, Sensor
11
+ from uiprotect.data import Camera, Light as Light, ModelType, NVR as NVR, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId, Sensor as Sensor
15
12
  from uiprotect.data.nvr import UOSDisk as UOSDisk
16
13
 
17
- _LOGGER: Incomplete
18
14
  _KEY_DOOR: str
19
15
 
20
16
  @dataclasses.dataclass(frozen=True, kw_only=True)
21
- class ProtectBinaryEntityDescription(ProtectRequiredKeysMixin, BinarySensorEntityDescription):
22
- 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: ...
17
+ class ProtectBinaryEntityDescription(ProtectEntityDescription, BinarySensorEntityDescription):
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, ufp_required_field, ufp_value, ufp_value_fn, ufp_enabled, ufp_perm, has_required, get_ufp_enabled) -> None: ...
23
19
 
24
20
  @dataclasses.dataclass(frozen=True, kw_only=True)
25
21
  class ProtectBinaryEventEntityDescription(ProtectEventMixin, BinarySensorEntityDescription):
26
- 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: ...
22
+ 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: ...
27
23
 
28
24
  MOUNT_DEVICE_CLASS_MAP: Incomplete
29
25
  CAMERA_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
30
26
  LIGHT_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
27
+ MOUNTABLE_SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
31
28
  SENSE_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
32
29
  EVENT_SENSORS: tuple[ProtectBinaryEventEntityDescription, ...]
33
30
  DOORLOCK_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
34
31
  VIEWER_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
35
32
  DISK_SENSORS: tuple[ProtectBinaryEntityDescription, ...]
36
-
37
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
38
- def _async_event_entities(data: ProtectData, ufp_device: ProtectAdoptableDeviceModel | None = None) -> list[ProtectDeviceEntity]: ...
39
- def _async_nvr_entities(data: ProtectData) -> list[ProtectDeviceEntity]: ...
33
+ _MODEL_DESCRIPTIONS: dict[ModelType, Sequence[ProtectEntityDescription]]
34
+ _MOUNTABLE_MODEL_DESCRIPTIONS: dict[ModelType, Sequence[ProtectEntityDescription]]
40
35
 
41
36
  class ProtectDeviceBinarySensor(ProtectDeviceEntity, BinarySensorEntity):
42
37
  device: Camera | Light | Sensor
43
38
  entity_description: ProtectBinaryEntityDescription
39
+ _state_attrs: tuple[str, ...]
44
40
  _attr_is_on: Incomplete
41
+ def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
42
+
43
+ class MountableProtectDeviceBinarySensor(ProtectDeviceBinarySensor):
44
+ device: Sensor
45
+ _state_attrs: tuple[str, ...]
45
46
  _attr_device_class: Incomplete
46
47
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
47
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
48
48
 
49
49
  class ProtectDiskBinarySensor(ProtectNVREntity, BinarySensorEntity):
50
50
  _disk: UOSDisk
51
51
  entity_description: ProtectBinaryEntityDescription
52
+ _state_attrs: Incomplete
52
53
  def __init__(self, data: ProtectData, device: NVR, description: ProtectBinaryEntityDescription, disk: UOSDisk) -> None: ...
53
54
  _attr_available: bool
54
55
  _attr_is_on: Incomplete
55
56
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
56
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
57
57
 
58
58
  class ProtectEventBinarySensor(EventEntityMixin, BinarySensorEntity):
59
59
  entity_description: ProtectBinaryEventEntityDescription
60
- _attr_is_on: Incomplete
61
- _event: Incomplete
60
+ _state_attrs: Incomplete
61
+ _attr_is_on: bool
62
62
  _attr_extra_state_attributes: Incomplete
63
+ def _set_event_done(self) -> None: ...
64
+ _event: Incomplete
65
+ _event_end: Incomplete
63
66
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
64
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
67
+
68
+ MODEL_DESCRIPTIONS_WITH_CLASS: Incomplete
69
+
70
+ def _async_event_entities(data: ProtectData, ufp_device: ProtectAdoptableDeviceModel | None = None) -> list[ProtectDeviceEntity]: ...
71
+ def _async_nvr_entities(data: ProtectData) -> list[BaseProtectEntity]: ...
72
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
@@ -1,24 +1,24 @@
1
- from .const import DEVICES_THAT_ADOPT as DEVICES_THAT_ADOPT, DISPATCH_ADD as DISPATCH_ADD, DISPATCH_ADOPT as DISPATCH_ADOPT, DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
1
+ from .const import DEVICES_THAT_ADOPT as DEVICES_THAT_ADOPT, DOMAIN as DOMAIN
2
+ from .data import 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 _typeshed import Incomplete
6
+ from collections.abc import Sequence
6
7
  from dataclasses import dataclass
7
8
  from homeassistant.components.button import ButtonDeviceClass as ButtonDeviceClass, ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
9
  from homeassistant.const import Platform as Platform
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
11
  from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
12
12
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
13
13
  from typing import Final
14
- from uiprotect.data import ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
14
+ from uiprotect.data import ModelType, ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
15
15
 
16
16
  _LOGGER: Incomplete
17
17
 
18
18
  @dataclass(frozen=True, kw_only=True)
19
19
  class ProtectButtonEntityDescription(ProtectSetableKeysMixin[T], ButtonEntityDescription):
20
20
  ufp_press: str | None = ...
21
- 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, ufp_press) -> None: ...
21
+ 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, ufp_press) -> None: ...
22
22
 
23
23
  DEVICE_CLASS_CHIME_BUTTON: Final[str]
24
24
  KEY_ADOPT: str
@@ -26,14 +26,13 @@ ALL_DEVICE_BUTTONS: tuple[ProtectButtonEntityDescription, ...]
26
26
  ADOPT_BUTTON: Incomplete
27
27
  SENSOR_BUTTONS: tuple[ProtectButtonEntityDescription, ...]
28
28
  CHIME_BUTTONS: tuple[ProtectButtonEntityDescription, ...]
29
+ _MODEL_DESCRIPTIONS: dict[ModelType, Sequence[ProtectEntityDescription]]
29
30
 
30
31
  def _async_remove_adopt_button(hass: HomeAssistant, device: ProtectAdoptableDeviceModel) -> None: ...
31
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
32
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
32
33
 
33
34
  class ProtectButton(ProtectDeviceEntity, ButtonEntity):
34
35
  entity_description: ProtectButtonEntityDescription
35
- _attr_name: Incomplete
36
- def __init__(self, data: ProtectData, device: ProtectAdoptableDeviceModel, description: ProtectButtonEntityDescription) -> None: ...
37
36
  _attr_available: Incomplete
38
37
  def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None: ...
39
38
  async def async_press(self) -> None: ...
@@ -1,27 +1,28 @@
1
- from .const import ATTR_BITRATE as ATTR_BITRATE, ATTR_CHANNEL_ID as ATTR_CHANNEL_ID, ATTR_FPS as ATTR_FPS, ATTR_HEIGHT as ATTR_HEIGHT, ATTR_WIDTH as ATTR_WIDTH, DISPATCH_ADOPT as DISPATCH_ADOPT, DISPATCH_CHANNELS as DISPATCH_CHANNELS, DOMAIN as DOMAIN
2
- from .data import ProtectData as ProtectData
1
+ from .const import ATTR_BITRATE as ATTR_BITRATE, ATTR_CHANNEL_ID as ATTR_CHANNEL_ID, ATTR_FPS as ATTR_FPS, ATTR_HEIGHT as ATTR_HEIGHT, ATTR_WIDTH as ATTR_WIDTH, DOMAIN as DOMAIN
2
+ from .data import ProtectData as ProtectData, UFPConfigEntry as UFPConfigEntry
3
3
  from .entity import ProtectDeviceEntity as ProtectDeviceEntity
4
4
  from .utils import get_camera_base_name as get_camera_base_name
5
5
  from _typeshed import Incomplete
6
- from collections.abc import Generator
7
6
  from homeassistant.components.camera import Camera as Camera, CameraEntityFeature as CameraEntityFeature
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
10
8
  from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
11
9
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
10
  from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity
13
- from typing import Any
11
+ from typing_extensions import Generator
14
12
  from uiprotect.data import Camera as UFPCamera, CameraChannel as CameraChannel, ProtectAdoptableDeviceModel as ProtectAdoptableDeviceModel, ProtectModelWithId as ProtectModelWithId
15
13
 
16
14
  _LOGGER: Incomplete
17
15
 
18
- def _create_rtsp_repair(hass: HomeAssistant, entry: ConfigEntry, data: ProtectData, camera: UFPCamera) -> None: ...
19
- def _get_camera_channels(hass: HomeAssistant, entry: ConfigEntry, data: ProtectData, ufp_device: UFPCamera | None = None) -> Generator[tuple[UFPCamera, CameraChannel, bool], None, None]: ...
20
- def _async_camera_entities(hass: HomeAssistant, entry: ConfigEntry, data: ProtectData, ufp_device: UFPCamera | None = None) -> list[ProtectDeviceEntity]: ...
21
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
16
+ def _create_rtsp_repair(hass: HomeAssistant, entry: UFPConfigEntry, data: ProtectData, camera: UFPCamera) -> None: ...
17
+ def _get_camera_channels(hass: HomeAssistant, entry: UFPConfigEntry, data: ProtectData, ufp_device: UFPCamera | None = None) -> Generator[tuple[UFPCamera, CameraChannel, bool]]: ...
18
+ def _async_camera_entities(hass: HomeAssistant, entry: UFPConfigEntry, data: ProtectData, ufp_device: UFPCamera | None = None) -> list[ProtectDeviceEntity]: ...
19
+ async def async_setup_entry(hass: HomeAssistant, entry: UFPConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
20
+
21
+ _EMPTY_CAMERA_FEATURES: Incomplete
22
22
 
23
23
  class ProtectCamera(ProtectDeviceEntity, Camera):
24
24
  device: UFPCamera
25
+ _state_attrs: Incomplete
25
26
  channel: Incomplete
26
27
  _secure: Incomplete
27
28
  _disable_stream: Incomplete
@@ -33,7 +34,6 @@ class ProtectCamera(ProtectDeviceEntity, Camera):
33
34
  _stream_source: Incomplete
34
35
  _attr_supported_features: Incomplete
35
36
  def _async_set_stream_source(self) -> None: ...
36
- def _async_get_state_attrs(self) -> tuple[Any, ...]: ...
37
37
  _attr_motion_detection_enabled: Incomplete
38
38
  _attr_is_recording: Incomplete
39
39
  _attr_available: Incomplete