homeassistant-stubs 2025.6.2__py3-none-any.whl → 2025.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 (318) hide show
  1. homeassistant-stubs/bootstrap.pyi +1 -1
  2. homeassistant-stubs/components/abode/__init__.pyi +3 -12
  3. homeassistant-stubs/components/abode/services.pyi +20 -0
  4. homeassistant-stubs/components/adax/sensor.pyi +29 -0
  5. homeassistant-stubs/components/airly/config_flow.pyi +1 -1
  6. homeassistant-stubs/components/airthings/__init__.pyi +3 -5
  7. homeassistant-stubs/components/airthings/coordinator.pyi +13 -0
  8. homeassistant-stubs/components/airthings/sensor.pyi +5 -4
  9. homeassistant-stubs/components/alexa_devices/binary_sensor.pyi +2 -1
  10. homeassistant-stubs/components/alexa_devices/sensor.pyi +29 -0
  11. homeassistant-stubs/components/altruist/__init__.pyi +9 -0
  12. homeassistant-stubs/components/altruist/config_flow.pyi +15 -0
  13. homeassistant-stubs/components/altruist/const.pyi +2 -0
  14. homeassistant-stubs/components/altruist/coordinator.pyi +19 -0
  15. homeassistant-stubs/components/altruist/sensor.pyi +34 -0
  16. homeassistant-stubs/components/amcrest/__init__.pyi +4 -7
  17. homeassistant-stubs/components/amcrest/services.pyi +13 -0
  18. homeassistant-stubs/components/analytics/analytics.pyi +3 -1
  19. homeassistant-stubs/components/android_ip_webcam/camera.pyi +4 -0
  20. homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
  21. homeassistant-stubs/components/assist_satellite/__init__.pyi +2 -2
  22. homeassistant-stubs/components/assist_satellite/entity.pyi +13 -1
  23. homeassistant-stubs/components/axis/hub/hub.pyi +1 -1
  24. homeassistant-stubs/components/camera/__init__.pyi +0 -2
  25. homeassistant-stubs/components/camera/webrtc.pyi +1 -0
  26. homeassistant-stubs/components/climate/__init__.pyi +0 -2
  27. homeassistant-stubs/components/command_line/notify.pyi +1 -2
  28. homeassistant-stubs/components/command_line/sensor.pyi +1 -2
  29. homeassistant-stubs/components/command_line/utils.pyi +5 -2
  30. homeassistant-stubs/components/deconz/logbook.pyi +1 -1
  31. homeassistant-stubs/components/derivative/config_flow.pyi +1 -1
  32. homeassistant-stubs/components/derivative/const.pyi +1 -0
  33. homeassistant-stubs/components/derivative/sensor.pyi +9 -4
  34. homeassistant-stubs/components/device_automation/condition.pyi +17 -4
  35. homeassistant-stubs/components/devolo_home_control/__init__.pyi +3 -2
  36. homeassistant-stubs/components/devolo_home_control/climate.pyi +1 -1
  37. homeassistant-stubs/components/devolo_home_control/const.pyi +0 -1
  38. homeassistant-stubs/components/devolo_home_control/cover.pyi +1 -1
  39. homeassistant-stubs/components/devolo_home_control/entity.pyi +6 -0
  40. homeassistant-stubs/components/devolo_home_control/light.pyi +1 -1
  41. homeassistant-stubs/components/devolo_home_control/siren.pyi +1 -1
  42. homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +2 -0
  43. homeassistant-stubs/components/dnsip/sensor.pyi +3 -2
  44. homeassistant-stubs/components/downloader/__init__.pyi +1 -1
  45. homeassistant-stubs/components/downloader/services.pyi +3 -2
  46. homeassistant-stubs/components/ecovacs/binary_sensor.pyi +4 -4
  47. homeassistant-stubs/components/ecovacs/entity.pyi +9 -12
  48. homeassistant-stubs/components/ecovacs/number.pyi +4 -4
  49. homeassistant-stubs/components/ecovacs/select.pyi +5 -4
  50. homeassistant-stubs/components/ecovacs/sensor.pyi +3 -3
  51. homeassistant-stubs/components/eheimdigital/number.pyi +8 -9
  52. homeassistant-stubs/components/eheimdigital/select.pyi +8 -9
  53. homeassistant-stubs/components/eheimdigital/sensor.pyi +7 -8
  54. homeassistant-stubs/components/eheimdigital/time.pyi +8 -9
  55. homeassistant-stubs/components/elkm1/__init__.pyi +4 -9
  56. homeassistant-stubs/components/elkm1/services.pyi +21 -0
  57. homeassistant-stubs/components/enphase_envoy/__init__.pyi +2 -2
  58. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +1 -1
  59. homeassistant-stubs/components/enphase_envoy/diagnostics.pyi +1 -0
  60. homeassistant-stubs/components/enphase_envoy/sensor.pyi +1 -1
  61. homeassistant-stubs/components/eq3btsmart/climate.pyi +6 -8
  62. homeassistant-stubs/components/eq3btsmart/const.pyi +3 -2
  63. homeassistant-stubs/components/eq3btsmart/entity.pyi +5 -1
  64. homeassistant-stubs/components/eq3btsmart/number.pyi +3 -3
  65. homeassistant-stubs/components/eq3btsmart/switch.pyi +5 -3
  66. homeassistant-stubs/components/esphome/entity.pyi +2 -1
  67. homeassistant-stubs/components/esphome/entry_data.pyi +3 -0
  68. homeassistant-stubs/components/evohome/water_heater.pyi +1 -1
  69. homeassistant-stubs/components/fritz/binary_sensor.pyi +2 -1
  70. homeassistant-stubs/components/fritz/button.pyi +3 -1
  71. homeassistant-stubs/components/fritz/coordinator.pyi +8 -82
  72. homeassistant-stubs/components/fritz/device_tracker.pyi +3 -1
  73. homeassistant-stubs/components/fritz/entity.pyi +2 -1
  74. homeassistant-stubs/components/fritz/helpers.pyi +9 -0
  75. homeassistant-stubs/components/fritz/models.pyi +78 -0
  76. homeassistant-stubs/components/fritz/sensor.pyi +2 -1
  77. homeassistant-stubs/components/fritz/services.pyi +3 -2
  78. homeassistant-stubs/components/fritz/switch.pyi +3 -1
  79. homeassistant-stubs/components/fully_kiosk/services.pyi +7 -2
  80. homeassistant-stubs/components/go2rtc/__init__.pyi +10 -4
  81. homeassistant-stubs/components/google/__init__.pyi +3 -9
  82. homeassistant-stubs/components/google_assistant_sdk/__init__.pyi +3 -7
  83. homeassistant-stubs/components/google_assistant_sdk/services.pyi +13 -0
  84. homeassistant-stubs/components/google_photos/services.pyi +4 -2
  85. homeassistant-stubs/components/google_sheets/__init__.pyi +7 -10
  86. homeassistant-stubs/components/google_sheets/services.pyi +18 -0
  87. homeassistant-stubs/components/group/sensor.pyi +1 -1
  88. homeassistant-stubs/components/habitica/services.pyi +8 -1
  89. homeassistant-stubs/components/here_travel_time/model.pyi +2 -1
  90. homeassistant-stubs/components/home_connect/diagnostics.pyi +2 -0
  91. homeassistant-stubs/components/homeassistant/__init__.pyi +2 -3
  92. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +7 -7
  93. homeassistant-stubs/components/homeassistant_hardware/update.pyi +2 -6
  94. homeassistant-stubs/components/homeassistant_hardware/util.pyi +3 -1
  95. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +9 -5
  96. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +12 -5
  97. homeassistant-stubs/components/homee/config_flow.pyi +1 -0
  98. homeassistant-stubs/components/homee/diagnostics.pyi +12 -0
  99. homeassistant-stubs/components/homee/entity.pyi +3 -2
  100. homeassistant-stubs/components/homee/event.pyi +8 -4
  101. homeassistant-stubs/components/homee/siren.pyi +19 -0
  102. homeassistant-stubs/components/homewizard/select.pyi +35 -0
  103. homeassistant-stubs/components/immich/coordinator.pyi +2 -1
  104. homeassistant-stubs/components/immich/update.pyi +21 -0
  105. homeassistant-stubs/components/isy994/__init__.pyi +3 -1
  106. homeassistant-stubs/components/isy994/services.pyi +0 -2
  107. homeassistant-stubs/components/jewish_calendar/__init__.pyi +1 -1
  108. homeassistant-stubs/components/jewish_calendar/{service.pyi → services.pyi} +2 -1
  109. homeassistant-stubs/components/kaleidescape/__init__.pyi +4 -4
  110. homeassistant-stubs/components/kaleidescape/media_player.pyi +2 -3
  111. homeassistant-stubs/components/kaleidescape/remote.pyi +2 -3
  112. homeassistant-stubs/components/kaleidescape/sensor.pyi +2 -3
  113. homeassistant-stubs/components/lacrosse_view/__init__.pyi +3 -5
  114. homeassistant-stubs/components/lacrosse_view/coordinator.pyi +3 -2
  115. homeassistant-stubs/components/lacrosse_view/diagnostics.pyi +2 -4
  116. homeassistant-stubs/components/lacrosse_view/sensor.pyi +2 -2
  117. homeassistant-stubs/components/lametric/__init__.pyi +3 -4
  118. homeassistant-stubs/components/lametric/button.pyi +2 -4
  119. homeassistant-stubs/components/lametric/coordinator.pyi +3 -2
  120. homeassistant-stubs/components/lametric/diagnostics.pyi +2 -4
  121. homeassistant-stubs/components/lametric/entity.pyi +1 -1
  122. homeassistant-stubs/components/lametric/helpers.pyi +1 -1
  123. homeassistant-stubs/components/lametric/notify.pyi +2 -2
  124. homeassistant-stubs/components/lametric/number.pyi +2 -4
  125. homeassistant-stubs/components/lametric/select.pyi +2 -4
  126. homeassistant-stubs/components/lametric/sensor.pyi +2 -4
  127. homeassistant-stubs/components/lametric/switch.pyi +2 -4
  128. homeassistant-stubs/components/lametric/update.pyi +17 -0
  129. homeassistant-stubs/components/laundrify/__init__.pyi +4 -6
  130. homeassistant-stubs/components/laundrify/binary_sensor.pyi +2 -3
  131. homeassistant-stubs/components/laundrify/coordinator.pyi +1 -0
  132. homeassistant-stubs/components/laundrify/sensor.pyi +2 -3
  133. homeassistant-stubs/components/lcn/__init__.pyi +9 -10
  134. homeassistant-stubs/components/lcn/binary_sensor.pyi +9 -8
  135. homeassistant-stubs/components/lcn/climate.pyi +5 -6
  136. homeassistant-stubs/components/lcn/const.pyi +0 -4
  137. homeassistant-stubs/components/lcn/cover.pyi +6 -7
  138. homeassistant-stubs/components/lcn/entity.pyi +2 -3
  139. homeassistant-stubs/components/lcn/helpers.pyi +15 -5
  140. homeassistant-stubs/components/lcn/light.pyi +6 -7
  141. homeassistant-stubs/components/lcn/scene.pyi +5 -5
  142. homeassistant-stubs/components/lcn/sensor.pyi +7 -7
  143. homeassistant-stubs/components/lcn/services.pyi +5 -4
  144. homeassistant-stubs/components/lcn/switch.pyi +8 -9
  145. homeassistant-stubs/components/lcn/websocket.pyi +12 -13
  146. homeassistant-stubs/components/ld2410_ble/__init__.pyi +4 -6
  147. homeassistant-stubs/components/ld2410_ble/binary_sensor.pyi +2 -4
  148. homeassistant-stubs/components/ld2410_ble/coordinator.pyi +3 -3
  149. homeassistant-stubs/components/ld2410_ble/models.pyi +2 -0
  150. homeassistant-stubs/components/ld2410_ble/sensor.pyi +4 -5
  151. homeassistant-stubs/components/led_ble/__init__.pyi +5 -6
  152. homeassistant-stubs/components/led_ble/light.pyi +3 -4
  153. homeassistant-stubs/components/led_ble/models.pyi +2 -0
  154. homeassistant-stubs/components/lifx/__init__.pyi +4 -5
  155. homeassistant-stubs/components/lifx/binary_sensor.pyi +3 -4
  156. homeassistant-stubs/components/lifx/button.pyi +3 -4
  157. homeassistant-stubs/components/lifx/const.pyi +3 -1
  158. homeassistant-stubs/components/lifx/coordinator.pyi +3 -2
  159. homeassistant-stubs/components/lifx/diagnostics.pyi +3 -4
  160. homeassistant-stubs/components/lifx/light.pyi +3 -4
  161. homeassistant-stubs/components/lifx/manager.pyi +2 -2
  162. homeassistant-stubs/components/lifx/migration.pyi +3 -3
  163. homeassistant-stubs/components/lifx/select.pyi +3 -4
  164. homeassistant-stubs/components/lifx/sensor.pyi +3 -4
  165. homeassistant-stubs/components/lifx/util.pyi +3 -3
  166. homeassistant-stubs/components/linear_garage_door/__init__.pyi +4 -5
  167. homeassistant-stubs/components/linear_garage_door/coordinator.pyi +3 -2
  168. homeassistant-stubs/components/linear_garage_door/cover.pyi +2 -4
  169. homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +2 -4
  170. homeassistant-stubs/components/linear_garage_door/light.pyi +2 -4
  171. homeassistant-stubs/components/lookin/__init__.pyi +4 -5
  172. homeassistant-stubs/components/lookin/climate.pyi +3 -4
  173. homeassistant-stubs/components/lookin/coordinator.pyi +3 -3
  174. homeassistant-stubs/components/lookin/light.pyi +3 -4
  175. homeassistant-stubs/components/lookin/media_player.pyi +3 -4
  176. homeassistant-stubs/components/lookin/models.pyi +2 -0
  177. homeassistant-stubs/components/lookin/sensor.pyi +2 -4
  178. homeassistant-stubs/components/luftdaten/__init__.pyi +4 -6
  179. homeassistant-stubs/components/luftdaten/coordinator.pyi +15 -0
  180. homeassistant-stubs/components/luftdaten/diagnostics.pyi +3 -4
  181. homeassistant-stubs/components/luftdaten/sensor.pyi +4 -4
  182. homeassistant-stubs/components/matrix/__init__.pyi +2 -7
  183. homeassistant-stubs/components/matrix/const.pyi +3 -0
  184. homeassistant-stubs/components/matrix/services.pyi +12 -0
  185. homeassistant-stubs/components/matter/sensor.pyi +7 -2
  186. homeassistant-stubs/components/matter/vacuum.pyi +4 -4
  187. homeassistant-stubs/components/mealie/__init__.pyi +1 -1
  188. homeassistant-stubs/components/mealie/services.pyi +9 -3
  189. homeassistant-stubs/components/media_player/__init__.pyi +0 -2
  190. homeassistant-stubs/components/media_player/intent.pyi +1 -1
  191. homeassistant-stubs/components/miele/const.pyi +24 -0
  192. homeassistant-stubs/components/miele/sensor.pyi +1 -2
  193. homeassistant-stubs/components/mqtt/config_flow.pyi +4 -1
  194. homeassistant-stubs/components/mqtt/sensor.pyi +1 -4
  195. homeassistant-stubs/components/music_assistant/__init__.pyi +5 -1
  196. homeassistant-stubs/components/music_assistant/button.pyi +17 -0
  197. homeassistant-stubs/components/music_assistant/helpers.pyi +5 -0
  198. homeassistant-stubs/components/music_assistant/media_player.pyi +4 -4
  199. homeassistant-stubs/components/nextdns/binary_sensor.pyi +6 -12
  200. homeassistant-stubs/components/nextdns/button.pyi +2 -9
  201. homeassistant-stubs/components/nextdns/coordinator.pyi +2 -7
  202. homeassistant-stubs/components/nextdns/entity.pyi +14 -0
  203. homeassistant-stubs/components/nextdns/sensor.pyi +8 -15
  204. homeassistant-stubs/components/nextdns/switch.pyi +3 -6
  205. homeassistant-stubs/components/nfandroidtv/__init__.pyi +0 -1
  206. homeassistant-stubs/components/nfandroidtv/notify.pyi +5 -4
  207. homeassistant-stubs/components/nordpool/services.pyi +2 -1
  208. homeassistant-stubs/components/ntfy/__init__.pyi +1 -3
  209. homeassistant-stubs/components/ntfy/config_flow.pyi +3 -0
  210. homeassistant-stubs/components/ntfy/coordinator.pyi +16 -0
  211. homeassistant-stubs/components/ntfy/notify.pyi +1 -1
  212. homeassistant-stubs/components/ntfy/sensor.pyi +56 -0
  213. homeassistant-stubs/components/ohme/services.pyi +2 -1
  214. homeassistant-stubs/components/onedrive/__init__.pyi +1 -1
  215. homeassistant-stubs/components/onedrive/services.pyi +3 -2
  216. homeassistant-stubs/components/onewire/binary_sensor.pyi +3 -2
  217. homeassistant-stubs/components/onewire/const.pyi +0 -1
  218. homeassistant-stubs/components/onewire/entity.pyi +2 -3
  219. homeassistant-stubs/components/onewire/switch.pyi +3 -2
  220. homeassistant-stubs/components/onkyo/__init__.pyi +1 -1
  221. homeassistant-stubs/components/onkyo/services.pyi +3 -2
  222. homeassistant-stubs/components/openai_conversation/__init__.pyi +2 -1
  223. homeassistant-stubs/components/openai_conversation/config_flow.pyi +18 -14
  224. homeassistant-stubs/components/openai_conversation/const.pyi +1 -0
  225. homeassistant-stubs/components/openai_conversation/conversation.pyi +4 -4
  226. homeassistant-stubs/components/overseerr/__init__.pyi +1 -1
  227. homeassistant-stubs/components/overseerr/services.pyi +6 -4
  228. homeassistant-stubs/components/paperless_ngx/__init__.pyi +1 -1
  229. homeassistant-stubs/components/paperless_ngx/config_flow.pyi +2 -2
  230. homeassistant-stubs/components/paperless_ngx/coordinator.pyi +3 -5
  231. homeassistant-stubs/components/paperless_ngx/entity.pyi +2 -5
  232. homeassistant-stubs/components/paperless_ngx/sensor.pyi +8 -8
  233. homeassistant-stubs/components/paperless_ngx/update.pyi +25 -0
  234. homeassistant-stubs/components/plugwise/climate.pyi +0 -1
  235. homeassistant-stubs/components/qbus/climate.pyi +3 -2
  236. homeassistant-stubs/components/qbus/cover.pyi +39 -0
  237. homeassistant-stubs/components/qbus/entity.pyi +7 -3
  238. homeassistant-stubs/components/qbus/light.pyi +4 -3
  239. homeassistant-stubs/components/qbus/scene.pyi +2 -2
  240. homeassistant-stubs/components/qbus/switch.pyi +3 -2
  241. homeassistant-stubs/components/recorder/__init__.pyi +1 -1
  242. homeassistant-stubs/components/recorder/services.pyi +7 -12
  243. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  244. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  245. homeassistant-stubs/components/reolink/const.pyi +1 -0
  246. homeassistant-stubs/components/reolink/entity.pyi +1 -1
  247. homeassistant-stubs/components/reolink/host.pyi +1 -1
  248. homeassistant-stubs/components/reolink/services.pyi +2 -0
  249. homeassistant-stubs/components/rest/data.pyi +7 -6
  250. homeassistant-stubs/components/russound_rio/__init__.pyi +1 -0
  251. homeassistant-stubs/components/russound_rio/entity.pyi +6 -2
  252. homeassistant-stubs/components/russound_rio/media_player.pyi +1 -5
  253. homeassistant-stubs/components/russound_rio/number.pyi +30 -0
  254. homeassistant-stubs/components/russound_rio/switch.pyi +33 -0
  255. homeassistant-stubs/components/shopping_list/__init__.pyi +1 -0
  256. homeassistant-stubs/components/shopping_list/intent.pyi +9 -1
  257. homeassistant-stubs/components/squeezebox/button.pyi +0 -2
  258. homeassistant-stubs/components/squeezebox/entity.pyi +2 -0
  259. homeassistant-stubs/components/squeezebox/media_player.pyi +0 -2
  260. homeassistant-stubs/components/sun/__init__.pyi +1 -0
  261. homeassistant-stubs/components/sun/binary_sensor.pyi +36 -0
  262. homeassistant-stubs/components/sun/condition.pyi +13 -3
  263. homeassistant-stubs/components/sun/sensor.pyi +2 -0
  264. homeassistant-stubs/components/switch/light.pyi +1 -0
  265. homeassistant-stubs/components/switch_as_x/entity.pyi +1 -0
  266. homeassistant-stubs/components/synology_dsm/__init__.pyi +4 -1
  267. homeassistant-stubs/components/synology_dsm/{service.pyi → services.pyi} +4 -2
  268. homeassistant-stubs/components/tedee/binary_sensor.pyi +4 -0
  269. homeassistant-stubs/components/telegram_bot/__init__.pyi +34 -0
  270. homeassistant-stubs/components/telegram_bot/bot.pyi +63 -0
  271. homeassistant-stubs/components/telegram_bot/broadcast.pyi +5 -0
  272. homeassistant-stubs/components/telegram_bot/config_flow.pyi +53 -0
  273. homeassistant-stubs/components/telegram_bot/const.pyi +92 -0
  274. homeassistant-stubs/components/telegram_bot/polling.pyi +19 -0
  275. homeassistant-stubs/components/telegram_bot/webhooks.pyi +47 -0
  276. homeassistant-stubs/components/tplink/climate.pyi +1 -2
  277. homeassistant-stubs/components/trend/binary_sensor.pyi +1 -1
  278. homeassistant-stubs/components/tts/entity.pyi +1 -2
  279. homeassistant-stubs/components/unifi/button.pyi +5 -5
  280. homeassistant-stubs/components/unifi/device_tracker.pyi +5 -5
  281. homeassistant-stubs/components/unifi/entity.pyi +5 -8
  282. homeassistant-stubs/components/unifi/hub/hub.pyi +1 -1
  283. homeassistant-stubs/components/unifi/image.pyi +5 -5
  284. homeassistant-stubs/components/unifi/sensor.pyi +5 -5
  285. homeassistant-stubs/components/unifi/switch.pyi +7 -7
  286. homeassistant-stubs/components/unifi/update.pyi +3 -5
  287. homeassistant-stubs/components/unifiprotect/services.pyi +1 -0
  288. homeassistant-stubs/components/vacuum/__init__.pyi +0 -2
  289. homeassistant-stubs/components/websocket_api/commands.pyi +6 -3
  290. homeassistant-stubs/components/websocket_api/messages.pyi +1 -0
  291. homeassistant-stubs/components/wiz/__init__.pyi +3 -3
  292. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  293. homeassistant-stubs/components/zwave_js/api.pyi +2 -2
  294. homeassistant-stubs/components/zwave_js/device_trigger.pyi +0 -1
  295. homeassistant-stubs/components/zwave_js/services.pyi +2 -0
  296. homeassistant-stubs/components/zwave_js/trigger.pyi +3 -7
  297. homeassistant-stubs/components/zwave_js/triggers/event.pyi +9 -1
  298. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +9 -1
  299. homeassistant-stubs/const.pyi +1 -0
  300. homeassistant-stubs/helpers/condition.pyi +11 -3
  301. homeassistant-stubs/helpers/device_registry.pyi +5 -1
  302. homeassistant-stubs/helpers/entity.pyi +1 -4
  303. homeassistant-stubs/helpers/entity_registry.pyi +11 -1
  304. homeassistant-stubs/helpers/llm.pyi +0 -1
  305. homeassistant-stubs/helpers/selector.pyi +24 -4
  306. homeassistant-stubs/helpers/system_info.pyi +2 -0
  307. homeassistant-stubs/helpers/template.pyi +2 -1
  308. homeassistant-stubs/helpers/trigger.pyi +33 -2
  309. homeassistant-stubs/loader.pyi +3 -1
  310. homeassistant-stubs/util/timeout.pyi +6 -3
  311. homeassistant-stubs/util/yaml/loader.pyi +3 -1
  312. {homeassistant_stubs-2025.6.2.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/METADATA +2 -2
  313. {homeassistant_stubs-2025.6.2.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/RECORD +315 -279
  314. homeassistant-stubs/backports/enum.pyi +0 -7
  315. homeassistant-stubs/backports/functools.pyi +0 -7
  316. homeassistant-stubs/components/devolo_home_control/devolo_multi_level_switch.pyi +0 -10
  317. {homeassistant_stubs-2025.6.2.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/WHEEL +0 -0
  318. {homeassistant_stubs-2025.6.2.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -1,16 +1,29 @@
1
1
  import voluptuous as vol
2
2
  from . import DeviceAutomationType as DeviceAutomationType, async_get_device_automation_platform as async_get_device_automation_platform
3
3
  from .helpers import async_validate_device_automation_config as async_validate_device_automation_config
4
+ from _typeshed import Incomplete
4
5
  from homeassistant.const import CONF_DOMAIN as CONF_DOMAIN
5
6
  from homeassistant.core import HomeAssistant as HomeAssistant
6
7
  from homeassistant.helpers import condition as condition
7
- from homeassistant.helpers.condition import ConditionProtocol as ConditionProtocol, trace_condition_function as trace_condition_function
8
+ from homeassistant.helpers.condition import Condition as Condition, ConditionCheckerType as ConditionCheckerType, trace_condition_function as trace_condition_function
8
9
  from homeassistant.helpers.typing import ConfigType as ConfigType
9
10
  from typing import Any, Protocol
10
11
 
11
- class DeviceAutomationConditionProtocol(ConditionProtocol, Protocol):
12
+ class DeviceAutomationConditionProtocol(Protocol):
13
+ CONDITION_SCHEMA: vol.Schema
14
+ async def async_validate_condition_config(self, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
15
+ def async_condition_from_config(self, hass: HomeAssistant, config: ConfigType) -> ConditionCheckerType: ...
12
16
  async def async_get_condition_capabilities(self, hass: HomeAssistant, config: ConfigType) -> dict[str, vol.Schema]: ...
13
17
  async def async_get_conditions(self, hass: HomeAssistant, device_id: str) -> list[dict[str, Any]]: ...
14
18
 
15
- async def async_validate_condition_config(hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
16
- async def async_condition_from_config(hass: HomeAssistant, config: ConfigType) -> condition.ConditionCheckerType: ...
19
+ class DeviceCondition(Condition):
20
+ _config: Incomplete
21
+ _hass: Incomplete
22
+ def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
23
+ @classmethod
24
+ async def async_validate_condition_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
25
+ async def async_condition_from_config(self) -> condition.ConditionCheckerType: ...
26
+
27
+ CONDITIONS: dict[str, type[Condition]]
28
+
29
+ async def async_get_conditions(hass: HomeAssistant) -> dict[str, type[Condition]]: ...
@@ -1,4 +1,4 @@
1
- from .const import GATEWAY_SERIAL_PATTERN as GATEWAY_SERIAL_PATTERN, PLATFORMS as PLATFORMS
1
+ from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS
2
2
  from collections.abc import Mapping
3
3
  from devolo_home_control_api.homecontrol import HomeControl
4
4
  from devolo_home_control_api.mydevolo import Mydevolo
@@ -13,5 +13,6 @@ from typing import Any
13
13
  type DevoloHomeControlConfigEntry = ConfigEntry[list[HomeControl]]
14
14
  async def async_setup_entry(hass: HomeAssistant, entry: DevoloHomeControlConfigEntry) -> bool: ...
15
15
  async def async_unload_entry(hass: HomeAssistant, entry: DevoloHomeControlConfigEntry) -> bool: ...
16
- async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ConfigEntry, device_entry: DeviceEntry) -> bool: ...
16
+ async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: DevoloHomeControlConfigEntry, device_entry: DeviceEntry) -> bool: ...
17
17
  def configure_mydevolo(conf: Mapping[str, Any]) -> Mydevolo: ...
18
+ def check_mydevolo_and_get_gateway_ids(mydevolo: Mydevolo) -> list[str]: ...
@@ -1,5 +1,5 @@
1
1
  from . import DevoloHomeControlConfigEntry as DevoloHomeControlConfigEntry
2
- from .devolo_multi_level_switch import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
2
+ from .entity import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
3
3
  from _typeshed import Incomplete
4
4
  from devolo_home_control_api.devices.zwave import Zwave as Zwave
5
5
  from devolo_home_control_api.homecontrol import HomeControl as HomeControl
@@ -3,5 +3,4 @@ from homeassistant.const import Platform as Platform
3
3
 
4
4
  DOMAIN: str
5
5
  PLATFORMS: Incomplete
6
- GATEWAY_SERIAL_PATTERN: Incomplete
7
6
  SUPPORTED_MODEL_TYPES: Incomplete
@@ -1,5 +1,5 @@
1
1
  from . import DevoloHomeControlConfigEntry as DevoloHomeControlConfigEntry
2
- from .devolo_multi_level_switch import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
2
+ from .entity import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.components.cover import CoverDeviceClass as CoverDeviceClass, CoverEntity as CoverEntity, CoverEntityFeature as CoverEntityFeature
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant
@@ -25,3 +25,9 @@ class DevoloDeviceEntity(Entity):
25
25
  async def async_will_remove_from_hass(self) -> None: ...
26
26
  def _sync(self, message: tuple) -> None: ...
27
27
  def _generic_message(self, message: tuple) -> None: ...
28
+
29
+ class DevoloMultiLevelSwitchDeviceEntity(DevoloDeviceEntity):
30
+ _attr_name: Incomplete
31
+ _multi_level_switch_property: Incomplete
32
+ _value: Incomplete
33
+ def __init__(self, homecontrol: HomeControl, device_instance: Zwave, element_uid: str) -> None: ...
@@ -1,5 +1,5 @@
1
1
  from . import DevoloHomeControlConfigEntry as DevoloHomeControlConfigEntry
2
- from .devolo_multi_level_switch import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
2
+ from .entity import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
3
3
  from _typeshed import Incomplete
4
4
  from devolo_home_control_api.devices.zwave import Zwave as Zwave
5
5
  from devolo_home_control_api.homecontrol import HomeControl as HomeControl
@@ -1,5 +1,5 @@
1
1
  from . import DevoloHomeControlConfigEntry as DevoloHomeControlConfigEntry
2
- from .devolo_multi_level_switch import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
2
+ from .entity import DevoloMultiLevelSwitchDeviceEntity as DevoloMultiLevelSwitchDeviceEntity
3
3
  from _typeshed import Incomplete
4
4
  from devolo_home_control_api.devices.zwave import Zwave as Zwave
5
5
  from devolo_home_control_api.homecontrol import HomeControl as HomeControl
@@ -14,9 +14,11 @@ PARALLEL_UPDATES: int
14
14
  async def async_setup_entry(hass: HomeAssistant, entry: DevoloHomeNetworkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
15
15
 
16
16
  class DevoloScannerEntity(CoordinatorEntity[DevoloDataUpdateCoordinator[list[ConnectedStationInfo]]], ScannerEntity):
17
+ _attr_has_entity_name: bool
17
18
  _attr_translation_key: str
18
19
  _device: Incomplete
19
20
  _attr_mac_address: Incomplete
21
+ _attr_name: Incomplete
20
22
  def __init__(self, coordinator: DevoloDataUpdateCoordinator[list[ConnectedStationInfo]], device: Device, mac: str) -> None: ...
21
23
  @property
22
24
  def extra_state_attributes(self) -> dict[str, str]: ...
@@ -6,13 +6,14 @@ from homeassistant.const import CONF_NAME as CONF_NAME, CONF_PORT as CONF_PORT
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
8
8
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
+ from typing import Literal
9
10
 
10
11
  DEFAULT_RETRIES: int
11
12
  MAX_RESULTS: int
12
13
  _LOGGER: Incomplete
13
14
  SCAN_INTERVAL: Incomplete
14
15
 
15
- def sort_ips(ips: list, querytype: str) -> list: ...
16
+ def sort_ips(ips: list, querytype: Literal['A', 'AAAA']) -> list: ...
16
17
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
17
18
 
18
19
  class WanIpSensor(SensorEntity):
@@ -23,7 +24,7 @@ class WanIpSensor(SensorEntity):
23
24
  _attr_unique_id: Incomplete
24
25
  hostname: Incomplete
25
26
  resolver: Incomplete
26
- querytype: Incomplete
27
+ querytype: Literal['A', 'AAAA']
27
28
  _retries: Incomplete
28
29
  _attr_extra_state_attributes: Incomplete
29
30
  _attr_device_info: Incomplete
@@ -1,5 +1,5 @@
1
1
  from .const import CONF_DOWNLOAD_DIR as CONF_DOWNLOAD_DIR, _LOGGER as _LOGGER
2
- from .services import register_services as register_services
2
+ from .services import async_setup_services as async_setup_services
3
3
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant
5
5
 
@@ -1,7 +1,8 @@
1
1
  from .const import ATTR_FILENAME as ATTR_FILENAME, ATTR_OVERWRITE as ATTR_OVERWRITE, ATTR_SUBDIR as ATTR_SUBDIR, ATTR_URL as ATTR_URL, CONF_DOWNLOAD_DIR as CONF_DOWNLOAD_DIR, DOMAIN as DOMAIN, DOWNLOAD_COMPLETED_EVENT as DOWNLOAD_COMPLETED_EVENT, DOWNLOAD_FAILED_EVENT as DOWNLOAD_FAILED_EVENT, SERVICE_DOWNLOAD_FILE as SERVICE_DOWNLOAD_FILE, _LOGGER as _LOGGER
2
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
2
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
3
3
  from homeassistant.helpers.service import async_register_admin_service as async_register_admin_service
4
4
  from homeassistant.util import raise_if_invalid_filename as raise_if_invalid_filename, raise_if_invalid_path as raise_if_invalid_path
5
5
 
6
6
  def download_file(service: ServiceCall) -> None: ...
7
- def register_services(hass: HomeAssistant) -> None: ...
7
+ @callback
8
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,25 +1,25 @@
1
1
  from . import EcovacsConfigEntry as EcovacsConfigEntry
2
- from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity, EventT as EventT
2
+ from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity
3
3
  from .util import get_supported_entities as get_supported_entities
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Callable as Callable
6
6
  from dataclasses import dataclass
7
7
  from deebot_client.capabilities import CapabilityEvent
8
+ from deebot_client.events.base import Event as Event
8
9
  from homeassistant.components.binary_sensor import BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
9
10
  from homeassistant.const import EntityCategory as EntityCategory
10
11
  from homeassistant.core import HomeAssistant as HomeAssistant
11
12
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
- from typing import Generic
13
13
 
14
14
  @dataclass(kw_only=True, frozen=True)
15
- class EcovacsBinarySensorEntityDescription(BinarySensorEntityDescription, EcovacsCapabilityEntityDescription, Generic[EventT]):
15
+ class EcovacsBinarySensorEntityDescription[EventT: Event](BinarySensorEntityDescription, EcovacsCapabilityEntityDescription):
16
16
  value_fn: Callable[[EventT], bool | None]
17
17
 
18
18
  ENTITY_DESCRIPTIONS: tuple[EcovacsBinarySensorEntityDescription, ...]
19
19
 
20
20
  async def async_setup_entry(hass: HomeAssistant, config_entry: EcovacsConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
21
21
 
22
- class EcovacsBinarySensor(EcovacsDescriptionEntity[CapabilityEvent[EventT]], BinarySensorEntity):
22
+ class EcovacsBinarySensor[EventT: Event](EcovacsDescriptionEntity[CapabilityEvent[EventT]], BinarySensorEntity):
23
23
  entity_description: EcovacsBinarySensorEntityDescription
24
24
  _attr_is_on: Incomplete
25
25
  async def async_added_to_hass(self) -> None: ...
@@ -4,16 +4,13 @@ from collections.abc import Callable as Callable, Coroutine
4
4
  from dataclasses import dataclass
5
5
  from deebot_client.capabilities import Capabilities as Capabilities
6
6
  from deebot_client.device import Device as Device
7
- from deebot_client.events.base import Event
7
+ from deebot_client.events.base import Event as Event
8
8
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
9
9
  from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
10
10
  from sucks import EventListener as EventListener, VacBot as VacBot
11
- from typing import Any, Generic, TypeVar
11
+ from typing import Any
12
12
 
13
- CapabilityEntity = TypeVar('CapabilityEntity')
14
- EventT = TypeVar('EventT', bound=Event)
15
-
16
- class EcovacsEntity(Entity, Generic[CapabilityEntity]):
13
+ class EcovacsEntity[CapabilityEntityT](Entity):
17
14
  _attr_should_poll: bool
18
15
  _attr_has_entity_name: bool
19
16
  _always_available: bool
@@ -21,21 +18,21 @@ class EcovacsEntity(Entity, Generic[CapabilityEntity]):
21
18
  _device: Incomplete
22
19
  _capability: Incomplete
23
20
  _subscribed_events: set[type[Event]]
24
- def __init__(self, device: Device, capability: CapabilityEntity, **kwargs: Any) -> None: ...
21
+ def __init__(self, device: Device, capability: CapabilityEntityT, **kwargs: Any) -> None: ...
25
22
  @property
26
23
  def device_info(self) -> DeviceInfo | None: ...
27
24
  _attr_available: Incomplete
28
25
  async def async_added_to_hass(self) -> None: ...
29
- def _subscribe(self, event_type: type[EventT], callback: Callable[[EventT], Coroutine[Any, Any, None]]) -> None: ...
26
+ def _subscribe[EventT: Event](self, event_type: type[EventT], callback: Callable[[EventT], Coroutine[Any, Any, None]]) -> None: ...
30
27
  async def async_update(self) -> None: ...
31
28
 
32
- class EcovacsDescriptionEntity(EcovacsEntity[CapabilityEntity]):
29
+ class EcovacsDescriptionEntity[CapabilityEntityT](EcovacsEntity[CapabilityEntityT]):
33
30
  entity_description: Incomplete
34
- def __init__(self, device: Device, capability: CapabilityEntity, entity_description: EntityDescription, **kwargs: Any) -> None: ...
31
+ def __init__(self, device: Device, capability: CapabilityEntityT, entity_description: EntityDescription, **kwargs: Any) -> None: ...
35
32
 
36
33
  @dataclass(kw_only=True, frozen=True)
37
- class EcovacsCapabilityEntityDescription(EntityDescription, Generic[CapabilityEntity]):
38
- capability_fn: Callable[[Capabilities], CapabilityEntity | None]
34
+ class EcovacsCapabilityEntityDescription[CapabilityEntityT](EntityDescription):
35
+ capability_fn: Callable[[Capabilities], CapabilityEntityT | None]
39
36
 
40
37
  class EcovacsLegacyEntity(Entity):
41
38
  _attr_has_entity_name: bool
@@ -1,18 +1,18 @@
1
1
  from . import EcovacsConfigEntry as EcovacsConfigEntry
2
- from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity, EcovacsEntity as EcovacsEntity, EventT as EventT
2
+ from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity, EcovacsEntity as EcovacsEntity
3
3
  from .util import get_supported_entities as get_supported_entities
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Callable as Callable
6
6
  from dataclasses import dataclass
7
7
  from deebot_client.capabilities import CapabilitySet
8
+ from deebot_client.events.base import Event as Event
8
9
  from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription, NumberMode as NumberMode
9
10
  from homeassistant.const import DEGREE as DEGREE, EntityCategory as EntityCategory
10
11
  from homeassistant.core import HomeAssistant as HomeAssistant
11
12
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
- from typing import Generic
13
13
 
14
14
  @dataclass(kw_only=True, frozen=True)
15
- class EcovacsNumberEntityDescription(NumberEntityDescription, EcovacsCapabilityEntityDescription, Generic[EventT]):
15
+ class EcovacsNumberEntityDescription[EventT: Event](NumberEntityDescription, EcovacsCapabilityEntityDescription):
16
16
  native_max_value_fn: Callable[[EventT], float | int | None] = ...
17
17
  value_fn: Callable[[EventT], float | None]
18
18
 
@@ -20,7 +20,7 @@ ENTITY_DESCRIPTIONS: tuple[EcovacsNumberEntityDescription, ...]
20
20
 
21
21
  async def async_setup_entry(hass: HomeAssistant, config_entry: EcovacsConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
22
22
 
23
- class EcovacsNumberEntity(EcovacsDescriptionEntity[CapabilitySet[EventT, [int]]], NumberEntity):
23
+ class EcovacsNumberEntity[EventT: Event](EcovacsDescriptionEntity[CapabilitySet[EventT, [int]]], NumberEntity):
24
24
  entity_description: EcovacsNumberEntityDescription
25
25
  _attr_native_value: Incomplete
26
26
  _attr_native_max_value: Incomplete
@@ -1,19 +1,20 @@
1
1
  from . import EcovacsConfigEntry as EcovacsConfigEntry
2
- from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity, EventT as EventT
2
+ from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity
3
3
  from .util import get_name_key as get_name_key, get_supported_entities as get_supported_entities
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Callable as Callable
6
6
  from dataclasses import dataclass
7
7
  from deebot_client.capabilities import CapabilitySetTypes
8
8
  from deebot_client.device import Device as Device
9
+ from deebot_client.events.base import Event as Event
9
10
  from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
10
11
  from homeassistant.const import EntityCategory as EntityCategory
11
12
  from homeassistant.core import HomeAssistant as HomeAssistant
12
13
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
- from typing import Any, Generic
14
+ from typing import Any
14
15
 
15
16
  @dataclass(kw_only=True, frozen=True)
16
- class EcovacsSelectEntityDescription(SelectEntityDescription, EcovacsCapabilityEntityDescription, Generic[EventT]):
17
+ class EcovacsSelectEntityDescription[EventT: Event](SelectEntityDescription, EcovacsCapabilityEntityDescription):
17
18
  current_option_fn: Callable[[EventT], str | None]
18
19
  options_fn: Callable[[CapabilitySetTypes], list[str]]
19
20
 
@@ -21,7 +22,7 @@ ENTITY_DESCRIPTIONS: tuple[EcovacsSelectEntityDescription, ...]
21
22
 
22
23
  async def async_setup_entry(hass: HomeAssistant, config_entry: EcovacsConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
24
 
24
- class EcovacsSelectEntity(EcovacsDescriptionEntity[CapabilitySetTypes[EventT, [str], str]], SelectEntity):
25
+ class EcovacsSelectEntity[EventT: Event](EcovacsDescriptionEntity[CapabilitySetTypes[EventT, [str], str]], SelectEntity):
25
26
  _attr_current_option: str | None
26
27
  entity_description: EcovacsSelectEntityDescription
27
28
  _attr_options: Incomplete
@@ -1,6 +1,6 @@
1
1
  from . import EcovacsConfigEntry as EcovacsConfigEntry
2
2
  from .const import LEGACY_SUPPORTED_LIFESPANS as LEGACY_SUPPORTED_LIFESPANS, SUPPORTED_LIFESPANS as SUPPORTED_LIFESPANS
3
- from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity, EcovacsEntity as EcovacsEntity, EcovacsLegacyEntity as EcovacsLegacyEntity, EventT as EventT
3
+ from .entity import EcovacsCapabilityEntityDescription as EcovacsCapabilityEntityDescription, EcovacsDescriptionEntity as EcovacsDescriptionEntity, EcovacsEntity as EcovacsEntity, EcovacsLegacyEntity as EcovacsLegacyEntity
4
4
  from .util import get_name_key as get_name_key, get_options as get_options, get_supported_entities as get_supported_entities
5
5
  from _typeshed import Incomplete
6
6
  from collections.abc import Callable as Callable
@@ -14,10 +14,10 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
14
14
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
15
15
  from homeassistant.helpers.typing import StateType as StateType
16
16
  from sucks import VacBot as VacBot
17
- from typing import Any, Generic
17
+ from typing import Any
18
18
 
19
19
  @dataclass(kw_only=True, frozen=True)
20
- class EcovacsSensorEntityDescription(EcovacsCapabilityEntityDescription, SensorEntityDescription, Generic[EventT]):
20
+ class EcovacsSensorEntityDescription[EventT: Event](EcovacsCapabilityEntityDescription, SensorEntityDescription):
21
21
  value_fn: Callable[[EventT], StateType]
22
22
  native_unit_of_measurement_fn: Callable[[DeviceType], str | None] | None = ...
23
23
 
@@ -10,16 +10,15 @@ from homeassistant.components.number import NumberDeviceClass as NumberDeviceCla
10
10
  from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, PRECISION_HALVES as PRECISION_HALVES, PRECISION_TENTHS as PRECISION_TENTHS, PRECISION_WHOLE as PRECISION_WHOLE, UnitOfTemperature as UnitOfTemperature
11
11
  from homeassistant.core import HomeAssistant as HomeAssistant
12
12
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
- from typing import Generic, TypeVar, override
13
+ from typing import override
14
14
 
15
15
  PARALLEL_UPDATES: int
16
- _DeviceT_co = TypeVar('_DeviceT_co', bound=EheimDigitalDevice, covariant=True)
17
16
 
18
17
  @dataclass(frozen=True, kw_only=True)
19
- class EheimDigitalNumberDescription(NumberEntityDescription, Generic[_DeviceT_co]):
20
- value_fn: Callable[[_DeviceT_co], float | None]
21
- set_value_fn: Callable[[_DeviceT_co, float], Awaitable[None]]
22
- uom_fn: Callable[[_DeviceT_co], str] | None = ...
18
+ class EheimDigitalNumberDescription[_DeviceT: EheimDigitalDevice](NumberEntityDescription):
19
+ value_fn: Callable[[_DeviceT], float | None]
20
+ set_value_fn: Callable[[_DeviceT, float], Awaitable[None]]
21
+ uom_fn: Callable[[_DeviceT], str] | None = ...
23
22
 
24
23
  CLASSICVARIO_DESCRIPTIONS: tuple[EheimDigitalNumberDescription[EheimDigitalClassicVario], ...]
25
24
  HEATER_DESCRIPTIONS: tuple[EheimDigitalNumberDescription[EheimDigitalHeater], ...]
@@ -27,10 +26,10 @@ GENERAL_DESCRIPTIONS: tuple[EheimDigitalNumberDescription[EheimDigitalDevice], .
27
26
 
28
27
  async def async_setup_entry(hass: HomeAssistant, entry: EheimDigitalConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
29
28
 
30
- class EheimDigitalNumber(EheimDigitalEntity[_DeviceT_co], NumberEntity, Generic[_DeviceT_co]):
31
- entity_description: EheimDigitalNumberDescription[_DeviceT_co]
29
+ class EheimDigitalNumber[_DeviceT: EheimDigitalDevice](EheimDigitalEntity[_DeviceT], NumberEntity):
30
+ entity_description: EheimDigitalNumberDescription[_DeviceT]
32
31
  _attr_unique_id: Incomplete
33
- def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT_co, description: EheimDigitalNumberDescription[_DeviceT_co]) -> None: ...
32
+ def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT, description: EheimDigitalNumberDescription[_DeviceT]) -> None: ...
34
33
  @override
35
34
  @exception_handler
36
35
  async def async_set_native_value(self, value: float) -> None: ...
@@ -4,28 +4,27 @@ from _typeshed import Incomplete
4
4
  from collections.abc import Awaitable, Callable as Callable
5
5
  from dataclasses import dataclass
6
6
  from eheimdigital.classic_vario import EheimDigitalClassicVario
7
- from eheimdigital.device import EheimDigitalDevice
7
+ from eheimdigital.device import EheimDigitalDevice as EheimDigitalDevice
8
8
  from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
- from typing import Generic, TypeVar, override
11
+ from typing import override
12
12
 
13
13
  PARALLEL_UPDATES: int
14
- _DeviceT_co = TypeVar('_DeviceT_co', bound=EheimDigitalDevice, covariant=True)
15
14
 
16
15
  @dataclass(frozen=True, kw_only=True)
17
- class EheimDigitalSelectDescription(SelectEntityDescription, Generic[_DeviceT_co]):
18
- value_fn: Callable[[_DeviceT_co], str | None]
19
- set_value_fn: Callable[[_DeviceT_co, str], Awaitable[None]]
16
+ class EheimDigitalSelectDescription[_DeviceT: EheimDigitalDevice](SelectEntityDescription):
17
+ value_fn: Callable[[_DeviceT], str | None]
18
+ set_value_fn: Callable[[_DeviceT, str], Awaitable[None]]
20
19
 
21
20
  CLASSICVARIO_DESCRIPTIONS: tuple[EheimDigitalSelectDescription[EheimDigitalClassicVario], ...]
22
21
 
23
22
  async def async_setup_entry(hass: HomeAssistant, entry: EheimDigitalConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
24
23
 
25
- class EheimDigitalSelect(EheimDigitalEntity[_DeviceT_co], SelectEntity, Generic[_DeviceT_co]):
26
- entity_description: EheimDigitalSelectDescription[_DeviceT_co]
24
+ class EheimDigitalSelect[_DeviceT: EheimDigitalDevice](EheimDigitalEntity[_DeviceT], SelectEntity):
25
+ entity_description: EheimDigitalSelectDescription[_DeviceT]
27
26
  _attr_unique_id: Incomplete
28
- def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT_co, description: EheimDigitalSelectDescription[_DeviceT_co]) -> None: ...
27
+ def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT, description: EheimDigitalSelectDescription[_DeviceT]) -> None: ...
29
28
  @override
30
29
  @exception_handler
31
30
  async def async_select_option(self, option: str) -> None: ...
@@ -4,29 +4,28 @@ from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable
5
5
  from dataclasses import dataclass
6
6
  from eheimdigital.classic_vario import EheimDigitalClassicVario
7
- from eheimdigital.device import EheimDigitalDevice
7
+ from eheimdigital.device import EheimDigitalDevice as EheimDigitalDevice
8
8
  from homeassistant.components.sensor import SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
9
9
  from homeassistant.components.sensor.const import SensorDeviceClass as SensorDeviceClass
10
10
  from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfTime as UnitOfTime
11
11
  from homeassistant.core import HomeAssistant as HomeAssistant
12
12
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
- from typing import Generic, TypeVar, override
13
+ from typing import override
14
14
 
15
15
  PARALLEL_UPDATES: int
16
- _DeviceT_co = TypeVar('_DeviceT_co', bound=EheimDigitalDevice, covariant=True)
17
16
 
18
17
  @dataclass(frozen=True, kw_only=True)
19
- class EheimDigitalSensorDescription(SensorEntityDescription, Generic[_DeviceT_co]):
20
- value_fn: Callable[[_DeviceT_co], float | str | None]
18
+ class EheimDigitalSensorDescription[_DeviceT: EheimDigitalDevice](SensorEntityDescription):
19
+ value_fn: Callable[[_DeviceT], float | str | None]
21
20
 
22
21
  CLASSICVARIO_DESCRIPTIONS: tuple[EheimDigitalSensorDescription[EheimDigitalClassicVario], ...]
23
22
 
24
23
  async def async_setup_entry(hass: HomeAssistant, entry: EheimDigitalConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
25
24
 
26
- class EheimDigitalSensor(EheimDigitalEntity[_DeviceT_co], SensorEntity, Generic[_DeviceT_co]):
27
- entity_description: EheimDigitalSensorDescription[_DeviceT_co]
25
+ class EheimDigitalSensor[_DeviceT: EheimDigitalDevice](EheimDigitalEntity[_DeviceT], SensorEntity):
26
+ entity_description: EheimDigitalSensorDescription[_DeviceT]
28
27
  _attr_unique_id: Incomplete
29
- def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT_co, description: EheimDigitalSensorDescription[_DeviceT_co]) -> None: ...
28
+ def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT, description: EheimDigitalSensorDescription[_DeviceT]) -> None: ...
30
29
  _attr_native_value: Incomplete
31
30
  @override
32
31
  def _async_update_attrs(self) -> None: ...
@@ -5,31 +5,30 @@ from collections.abc import Awaitable, Callable as Callable
5
5
  from dataclasses import dataclass
6
6
  from datetime import time
7
7
  from eheimdigital.classic_vario import EheimDigitalClassicVario
8
- from eheimdigital.device import EheimDigitalDevice
8
+ from eheimdigital.device import EheimDigitalDevice as EheimDigitalDevice
9
9
  from eheimdigital.heater import EheimDigitalHeater
10
10
  from homeassistant.components.time import TimeEntity as TimeEntity, TimeEntityDescription as TimeEntityDescription
11
11
  from homeassistant.const import EntityCategory as EntityCategory
12
12
  from homeassistant.core import HomeAssistant as HomeAssistant
13
13
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
14
- from typing import Generic, TypeVar, override
14
+ from typing import override
15
15
 
16
16
  PARALLEL_UPDATES: int
17
- _DeviceT_co = TypeVar('_DeviceT_co', bound=EheimDigitalDevice, covariant=True)
18
17
 
19
18
  @dataclass(frozen=True, kw_only=True)
20
- class EheimDigitalTimeDescription(TimeEntityDescription, Generic[_DeviceT_co]):
21
- value_fn: Callable[[_DeviceT_co], time | None]
22
- set_value_fn: Callable[[_DeviceT_co, time], Awaitable[None]]
19
+ class EheimDigitalTimeDescription[_DeviceT: EheimDigitalDevice](TimeEntityDescription):
20
+ value_fn: Callable[[_DeviceT], time | None]
21
+ set_value_fn: Callable[[_DeviceT, time], Awaitable[None]]
23
22
 
24
23
  CLASSICVARIO_DESCRIPTIONS: tuple[EheimDigitalTimeDescription[EheimDigitalClassicVario], ...]
25
24
  HEATER_DESCRIPTIONS: tuple[EheimDigitalTimeDescription[EheimDigitalHeater], ...]
26
25
 
27
26
  async def async_setup_entry(hass: HomeAssistant, entry: EheimDigitalConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
28
27
 
29
- class EheimDigitalTime(EheimDigitalEntity[_DeviceT_co], TimeEntity, Generic[_DeviceT_co]):
30
- entity_description: EheimDigitalTimeDescription[_DeviceT_co]
28
+ class EheimDigitalTime[_DeviceT: EheimDigitalDevice](EheimDigitalEntity[_DeviceT], TimeEntity):
29
+ entity_description: EheimDigitalTimeDescription[_DeviceT]
31
30
  _attr_unique_id: Incomplete
32
- def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT_co, description: EheimDigitalTimeDescription[_DeviceT_co]) -> None: ...
31
+ def __init__(self, coordinator: EheimDigitalUpdateCoordinator, device: _DeviceT, description: EheimDigitalTimeDescription[_DeviceT]) -> None: ...
33
32
  @override
34
33
  @exception_handler
35
34
  async def async_set_value(self, value: time) -> None: ...
@@ -1,13 +1,14 @@
1
1
  from .const import ATTR_KEY as ATTR_KEY, ATTR_KEYPAD_ID as ATTR_KEYPAD_ID, ATTR_KEYPAD_NAME as ATTR_KEYPAD_NAME, ATTR_KEY_NAME as ATTR_KEY_NAME, CONF_AREA as CONF_AREA, CONF_AUTO_CONFIGURE as CONF_AUTO_CONFIGURE, CONF_COUNTER as CONF_COUNTER, CONF_KEYPAD as CONF_KEYPAD, CONF_OUTPUT as CONF_OUTPUT, CONF_PLC as CONF_PLC, CONF_SETTING as CONF_SETTING, CONF_TASK as CONF_TASK, CONF_THERMOSTAT as CONF_THERMOSTAT, DISCOVERY_INTERVAL as DISCOVERY_INTERVAL, DISCOVER_SCAN_TIMEOUT as DISCOVER_SCAN_TIMEOUT, DOMAIN as DOMAIN, ELK_ELEMENTS as ELK_ELEMENTS, EVENT_ELKM1_KEYPAD_KEY_PRESSED as EVENT_ELKM1_KEYPAD_KEY_PRESSED, LOGIN_TIMEOUT as LOGIN_TIMEOUT
2
2
  from .discovery import async_discover_device as async_discover_device, async_discover_devices as async_discover_devices, async_trigger_discovery as async_trigger_discovery, async_update_entry_from_discovery as async_update_entry_from_discovery
3
3
  from .models import ELKM1Data as ELKM1Data
4
+ from .services import async_setup_services as async_setup_services
4
5
  from _typeshed import Incomplete
5
6
  from elkm1_lib.elements import Element as Element
6
- from elkm1_lib.elk import Elk, Panel as Panel
7
+ from elkm1_lib.elk import Elk
7
8
  from homeassistant.config_entries import ConfigEntry as ConfigEntry, SOURCE_IMPORT as SOURCE_IMPORT
8
9
  from homeassistant.const import CONF_ENABLED as CONF_ENABLED, CONF_EXCLUDE as CONF_EXCLUDE, CONF_HOST as CONF_HOST, CONF_INCLUDE as CONF_INCLUDE, CONF_PASSWORD as CONF_PASSWORD, CONF_PREFIX as CONF_PREFIX, CONF_TEMPERATURE_UNIT as CONF_TEMPERATURE_UNIT, CONF_USERNAME as CONF_USERNAME, CONF_ZONE as CONF_ZONE, Platform as Platform, UnitOfTemperature as UnitOfTemperature
9
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
10
- from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady, HomeAssistantError as HomeAssistantError
10
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
+ from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
11
12
  from homeassistant.helpers.event import async_track_time_interval as async_track_time_interval
12
13
  from homeassistant.helpers.typing import ConfigType as ConfigType
13
14
  from homeassistant.util.network import is_ip_address as is_ip_address
@@ -16,8 +17,6 @@ type ElkM1ConfigEntry = ConfigEntry[ELKM1Data]
16
17
  SYNC_TIMEOUT: int
17
18
  _LOGGER: Incomplete
18
19
  PLATFORMS: Incomplete
19
- SPEAK_SERVICE_SCHEMA: Incomplete
20
- SET_TIME_SERVICE_SCHEMA: Incomplete
21
20
 
22
21
  def hostname_from_url(url: str) -> str: ...
23
22
  def _host_validator(config: dict[str, str]) -> dict[str, str]: ...
@@ -33,9 +32,5 @@ async def async_setup(hass: HomeAssistant, hass_config: ConfigType) -> bool: ...
33
32
  def _async_find_matching_config_entry(hass: HomeAssistant, prefix: str) -> ConfigEntry | None: ...
34
33
  async def async_setup_entry(hass: HomeAssistant, entry: ElkM1ConfigEntry) -> bool: ...
35
34
  def _included(ranges: list[tuple[int, int]], set_to: bool, values: list[bool]) -> None: ...
36
- def _find_elk_by_prefix(hass: HomeAssistant, prefix: str) -> Elk | None: ...
37
35
  async def async_unload_entry(hass: HomeAssistant, entry: ElkM1ConfigEntry) -> bool: ...
38
36
  async def async_wait_for_elk_to_sync(elk: Elk, login_timeout: int, sync_timeout: int) -> bool: ...
39
- @callback
40
- def _async_get_elk_panel(hass: HomeAssistant, service: ServiceCall) -> Panel: ...
41
- def _create_elk_services(hass: HomeAssistant) -> None: ...
@@ -0,0 +1,21 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .models import ELKM1Data as ELKM1Data
3
+ from _typeshed import Incomplete
4
+ from elkm1_lib.elk import Elk as Elk, Panel as Panel
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
6
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
+
8
+ SPEAK_SERVICE_SCHEMA: Incomplete
9
+ SET_TIME_SERVICE_SCHEMA: Incomplete
10
+
11
+ def _find_elk_by_prefix(hass: HomeAssistant, prefix: str) -> Elk | None: ...
12
+ @callback
13
+ def _async_get_elk_panel(service: ServiceCall) -> Panel: ...
14
+ @callback
15
+ def _speak_word_service(service: ServiceCall) -> None: ...
16
+ @callback
17
+ def _speak_phrase_service(service: ServiceCall) -> None: ...
18
+ @callback
19
+ def _set_time_service(service: ServiceCall) -> None: ...
20
+ @callback
21
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,11 +1,11 @@
1
- from .const import DOMAIN as DOMAIN, OPTION_DISABLE_KEEP_ALIVE as OPTION_DISABLE_KEEP_ALIVE, OPTION_DISABLE_KEEP_ALIVE_DEFAULT_VALUE as OPTION_DISABLE_KEEP_ALIVE_DEFAULT_VALUE, PLATFORMS as PLATFORMS
1
+ from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS
2
2
  from .coordinator import EnphaseConfigEntry as EnphaseConfigEntry, EnphaseUpdateCoordinator as EnphaseUpdateCoordinator
3
3
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
4
4
  from homeassistant.const import CONF_HOST as CONF_HOST
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant
6
6
  from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
7
7
  from homeassistant.helpers import device_registry as dr
8
- from homeassistant.helpers.httpx_client import get_async_client as get_async_client
8
+ from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
9
9
 
10
10
  async def async_setup_entry(hass: HomeAssistant, entry: EnphaseConfigEntry) -> bool: ...
11
11
  async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
@@ -6,7 +6,7 @@ from collections.abc import Mapping
6
6
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow, SOURCE_REAUTH as SOURCE_REAUTH
7
7
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_TOKEN as CONF_TOKEN, CONF_USERNAME as CONF_USERNAME
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
9
- from homeassistant.helpers.httpx_client import get_async_client as get_async_client
9
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
10
10
  from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
11
11
  from homeassistant.helpers.typing import VolDictType as VolDictType
12
12
  from pyenphase import Envoy
@@ -1,6 +1,7 @@
1
1
  from .const import OPTION_DIAGNOSTICS_INCLUDE_FIXTURES as OPTION_DIAGNOSTICS_INCLUDE_FIXTURES
2
2
  from .coordinator import EnphaseConfigEntry as EnphaseConfigEntry
3
3
  from _typeshed import Incomplete
4
+ from aiohttp import ClientResponse as ClientResponse
4
5
  from homeassistant.components.diagnostics import async_redact_data as async_redact_data
5
6
  from homeassistant.const import CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_TOKEN as CONF_TOKEN, CONF_UNIQUE_ID as CONF_UNIQUE_ID, CONF_USERNAME as CONF_USERNAME
6
7
  from homeassistant.core import HomeAssistant as HomeAssistant
@@ -6,7 +6,7 @@ from _typeshed import Incomplete
6
6
  from collections.abc import Callable as Callable
7
7
  from dataclasses import dataclass
8
8
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
9
- from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfApparentPower as UnitOfApparentPower, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfFrequency as UnitOfFrequency, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature
9
+ from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfApparentPower as UnitOfApparentPower, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfFrequency as UnitOfFrequency, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant
11
11
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
12
12
  from homeassistant.helpers.entity import Entity as Entity