homeassistant-stubs 2025.6.3__py3-none-any.whl → 2025.7.0__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.

Potentially problematic release.


This version of homeassistant-stubs might be problematic. Click here for more details.

Files changed (347) 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/airq/coordinator.pyi +1 -1
  7. homeassistant-stubs/components/airthings/__init__.pyi +3 -5
  8. homeassistant-stubs/components/airthings/coordinator.pyi +13 -0
  9. homeassistant-stubs/components/airthings/sensor.pyi +5 -4
  10. homeassistant-stubs/components/alexa_devices/binary_sensor.pyi +2 -1
  11. homeassistant-stubs/components/alexa_devices/notify.pyi +2 -0
  12. homeassistant-stubs/components/alexa_devices/sensor.pyi +29 -0
  13. homeassistant-stubs/components/alexa_devices/switch.pyi +2 -0
  14. homeassistant-stubs/components/alexa_devices/utils.pyi +7 -0
  15. homeassistant-stubs/components/altruist/__init__.pyi +9 -0
  16. homeassistant-stubs/components/altruist/config_flow.pyi +15 -0
  17. homeassistant-stubs/components/altruist/const.pyi +2 -0
  18. homeassistant-stubs/components/altruist/coordinator.pyi +19 -0
  19. homeassistant-stubs/components/altruist/sensor.pyi +34 -0
  20. homeassistant-stubs/components/amcrest/__init__.pyi +4 -7
  21. homeassistant-stubs/components/amcrest/services.pyi +13 -0
  22. homeassistant-stubs/components/analytics/analytics.pyi +3 -1
  23. homeassistant-stubs/components/android_ip_webcam/camera.pyi +4 -0
  24. homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
  25. homeassistant-stubs/components/assist_satellite/__init__.pyi +2 -2
  26. homeassistant-stubs/components/assist_satellite/entity.pyi +13 -1
  27. homeassistant-stubs/components/axis/hub/hub.pyi +1 -1
  28. homeassistant-stubs/components/camera/__init__.pyi +0 -2
  29. homeassistant-stubs/components/camera/webrtc.pyi +1 -0
  30. homeassistant-stubs/components/climate/__init__.pyi +0 -2
  31. homeassistant-stubs/components/command_line/notify.pyi +1 -2
  32. homeassistant-stubs/components/command_line/sensor.pyi +1 -2
  33. homeassistant-stubs/components/command_line/utils.pyi +5 -2
  34. homeassistant-stubs/components/deconz/logbook.pyi +1 -1
  35. homeassistant-stubs/components/derivative/config_flow.pyi +1 -1
  36. homeassistant-stubs/components/derivative/const.pyi +1 -0
  37. homeassistant-stubs/components/derivative/sensor.pyi +9 -4
  38. homeassistant-stubs/components/device_automation/condition.pyi +17 -4
  39. homeassistant-stubs/components/devolo_home_control/__init__.pyi +3 -2
  40. homeassistant-stubs/components/devolo_home_control/climate.pyi +1 -1
  41. homeassistant-stubs/components/devolo_home_control/const.pyi +0 -1
  42. homeassistant-stubs/components/devolo_home_control/cover.pyi +1 -1
  43. homeassistant-stubs/components/devolo_home_control/entity.pyi +6 -0
  44. homeassistant-stubs/components/devolo_home_control/light.pyi +1 -1
  45. homeassistant-stubs/components/devolo_home_control/siren.pyi +1 -1
  46. homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +2 -0
  47. homeassistant-stubs/components/dnsip/sensor.pyi +3 -2
  48. homeassistant-stubs/components/downloader/__init__.pyi +1 -1
  49. homeassistant-stubs/components/downloader/services.pyi +3 -2
  50. homeassistant-stubs/components/ecovacs/binary_sensor.pyi +4 -4
  51. homeassistant-stubs/components/ecovacs/entity.pyi +9 -12
  52. homeassistant-stubs/components/ecovacs/number.pyi +4 -4
  53. homeassistant-stubs/components/ecovacs/select.pyi +5 -4
  54. homeassistant-stubs/components/ecovacs/sensor.pyi +3 -3
  55. homeassistant-stubs/components/eheimdigital/number.pyi +8 -9
  56. homeassistant-stubs/components/eheimdigital/select.pyi +8 -9
  57. homeassistant-stubs/components/eheimdigital/sensor.pyi +7 -8
  58. homeassistant-stubs/components/eheimdigital/time.pyi +8 -9
  59. homeassistant-stubs/components/elkm1/__init__.pyi +4 -9
  60. homeassistant-stubs/components/elkm1/services.pyi +21 -0
  61. homeassistant-stubs/components/enphase_envoy/__init__.pyi +2 -2
  62. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +1 -1
  63. homeassistant-stubs/components/enphase_envoy/diagnostics.pyi +1 -0
  64. homeassistant-stubs/components/enphase_envoy/sensor.pyi +1 -1
  65. homeassistant-stubs/components/eq3btsmart/climate.pyi +6 -8
  66. homeassistant-stubs/components/eq3btsmart/const.pyi +3 -2
  67. homeassistant-stubs/components/eq3btsmart/entity.pyi +5 -1
  68. homeassistant-stubs/components/eq3btsmart/number.pyi +3 -3
  69. homeassistant-stubs/components/eq3btsmart/switch.pyi +5 -3
  70. homeassistant-stubs/components/esphome/entity.pyi +2 -1
  71. homeassistant-stubs/components/esphome/entry_data.pyi +3 -0
  72. homeassistant-stubs/components/esphome/sensor.pyi +2 -1
  73. homeassistant-stubs/components/evohome/water_heater.pyi +1 -1
  74. homeassistant-stubs/components/fritz/binary_sensor.pyi +2 -1
  75. homeassistant-stubs/components/fritz/button.pyi +3 -1
  76. homeassistant-stubs/components/fritz/coordinator.pyi +8 -82
  77. homeassistant-stubs/components/fritz/device_tracker.pyi +3 -1
  78. homeassistant-stubs/components/fritz/entity.pyi +2 -1
  79. homeassistant-stubs/components/fritz/helpers.pyi +9 -0
  80. homeassistant-stubs/components/fritz/models.pyi +78 -0
  81. homeassistant-stubs/components/fritz/sensor.pyi +2 -1
  82. homeassistant-stubs/components/fritz/services.pyi +3 -2
  83. homeassistant-stubs/components/fritz/switch.pyi +3 -1
  84. homeassistant-stubs/components/fully_kiosk/services.pyi +7 -2
  85. homeassistant-stubs/components/go2rtc/__init__.pyi +10 -4
  86. homeassistant-stubs/components/google/__init__.pyi +3 -9
  87. homeassistant-stubs/components/google_assistant_sdk/__init__.pyi +3 -7
  88. homeassistant-stubs/components/google_assistant_sdk/services.pyi +13 -0
  89. homeassistant-stubs/components/google_photos/services.pyi +4 -2
  90. homeassistant-stubs/components/google_sheets/__init__.pyi +7 -10
  91. homeassistant-stubs/components/google_sheets/services.pyi +18 -0
  92. homeassistant-stubs/components/group/sensor.pyi +1 -1
  93. homeassistant-stubs/components/habitica/services.pyi +8 -1
  94. homeassistant-stubs/components/here_travel_time/model.pyi +2 -1
  95. homeassistant-stubs/components/home_connect/diagnostics.pyi +2 -0
  96. homeassistant-stubs/components/homeassistant/__init__.pyi +2 -3
  97. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +13 -7
  98. homeassistant-stubs/components/homeassistant_hardware/update.pyi +2 -6
  99. homeassistant-stubs/components/homeassistant_hardware/util.pyi +3 -1
  100. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +9 -5
  101. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +12 -5
  102. homeassistant-stubs/components/homee/config_flow.pyi +1 -0
  103. homeassistant-stubs/components/homee/diagnostics.pyi +12 -0
  104. homeassistant-stubs/components/homee/entity.pyi +3 -2
  105. homeassistant-stubs/components/homee/event.pyi +8 -4
  106. homeassistant-stubs/components/homee/siren.pyi +19 -0
  107. homeassistant-stubs/components/homewizard/select.pyi +35 -0
  108. homeassistant-stubs/components/husqvarna_automower/const.pyi +3 -0
  109. homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +3 -1
  110. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -1
  111. homeassistant-stubs/components/image/__init__.pyi +2 -0
  112. homeassistant-stubs/components/immich/coordinator.pyi +2 -1
  113. homeassistant-stubs/components/immich/update.pyi +21 -0
  114. homeassistant-stubs/components/isy994/__init__.pyi +3 -1
  115. homeassistant-stubs/components/isy994/services.pyi +0 -2
  116. homeassistant-stubs/components/jewish_calendar/__init__.pyi +1 -1
  117. homeassistant-stubs/components/jewish_calendar/{service.pyi → services.pyi} +2 -1
  118. homeassistant-stubs/components/kaleidescape/__init__.pyi +4 -4
  119. homeassistant-stubs/components/kaleidescape/media_player.pyi +2 -3
  120. homeassistant-stubs/components/kaleidescape/remote.pyi +2 -3
  121. homeassistant-stubs/components/kaleidescape/sensor.pyi +2 -3
  122. homeassistant-stubs/components/lacrosse_view/__init__.pyi +3 -5
  123. homeassistant-stubs/components/lacrosse_view/coordinator.pyi +3 -2
  124. homeassistant-stubs/components/lacrosse_view/diagnostics.pyi +2 -4
  125. homeassistant-stubs/components/lacrosse_view/sensor.pyi +2 -2
  126. homeassistant-stubs/components/lamarzocco/entity.pyi +3 -0
  127. homeassistant-stubs/components/lamarzocco/sensor.pyi +1 -0
  128. homeassistant-stubs/components/lametric/__init__.pyi +3 -4
  129. homeassistant-stubs/components/lametric/button.pyi +2 -4
  130. homeassistant-stubs/components/lametric/coordinator.pyi +3 -2
  131. homeassistant-stubs/components/lametric/diagnostics.pyi +2 -4
  132. homeassistant-stubs/components/lametric/entity.pyi +1 -1
  133. homeassistant-stubs/components/lametric/helpers.pyi +1 -1
  134. homeassistant-stubs/components/lametric/notify.pyi +2 -2
  135. homeassistant-stubs/components/lametric/number.pyi +2 -4
  136. homeassistant-stubs/components/lametric/select.pyi +2 -4
  137. homeassistant-stubs/components/lametric/sensor.pyi +2 -4
  138. homeassistant-stubs/components/lametric/switch.pyi +2 -4
  139. homeassistant-stubs/components/lametric/update.pyi +17 -0
  140. homeassistant-stubs/components/laundrify/__init__.pyi +4 -6
  141. homeassistant-stubs/components/laundrify/binary_sensor.pyi +2 -3
  142. homeassistant-stubs/components/laundrify/coordinator.pyi +1 -0
  143. homeassistant-stubs/components/laundrify/sensor.pyi +2 -3
  144. homeassistant-stubs/components/lcn/__init__.pyi +9 -10
  145. homeassistant-stubs/components/lcn/binary_sensor.pyi +9 -8
  146. homeassistant-stubs/components/lcn/climate.pyi +5 -6
  147. homeassistant-stubs/components/lcn/const.pyi +0 -4
  148. homeassistant-stubs/components/lcn/cover.pyi +6 -7
  149. homeassistant-stubs/components/lcn/entity.pyi +2 -3
  150. homeassistant-stubs/components/lcn/helpers.pyi +15 -5
  151. homeassistant-stubs/components/lcn/light.pyi +6 -7
  152. homeassistant-stubs/components/lcn/scene.pyi +5 -5
  153. homeassistant-stubs/components/lcn/sensor.pyi +7 -7
  154. homeassistant-stubs/components/lcn/services.pyi +5 -4
  155. homeassistant-stubs/components/lcn/switch.pyi +8 -9
  156. homeassistant-stubs/components/lcn/websocket.pyi +12 -13
  157. homeassistant-stubs/components/ld2410_ble/__init__.pyi +4 -6
  158. homeassistant-stubs/components/ld2410_ble/binary_sensor.pyi +2 -4
  159. homeassistant-stubs/components/ld2410_ble/coordinator.pyi +3 -3
  160. homeassistant-stubs/components/ld2410_ble/models.pyi +2 -0
  161. homeassistant-stubs/components/ld2410_ble/sensor.pyi +4 -5
  162. homeassistant-stubs/components/led_ble/__init__.pyi +5 -6
  163. homeassistant-stubs/components/led_ble/light.pyi +3 -4
  164. homeassistant-stubs/components/led_ble/models.pyi +2 -0
  165. homeassistant-stubs/components/lifx/__init__.pyi +4 -5
  166. homeassistant-stubs/components/lifx/binary_sensor.pyi +3 -4
  167. homeassistant-stubs/components/lifx/button.pyi +3 -4
  168. homeassistant-stubs/components/lifx/const.pyi +3 -1
  169. homeassistant-stubs/components/lifx/coordinator.pyi +3 -2
  170. homeassistant-stubs/components/lifx/diagnostics.pyi +3 -4
  171. homeassistant-stubs/components/lifx/light.pyi +3 -4
  172. homeassistant-stubs/components/lifx/manager.pyi +2 -2
  173. homeassistant-stubs/components/lifx/migration.pyi +3 -3
  174. homeassistant-stubs/components/lifx/select.pyi +3 -4
  175. homeassistant-stubs/components/lifx/sensor.pyi +3 -4
  176. homeassistant-stubs/components/lifx/util.pyi +3 -3
  177. homeassistant-stubs/components/linear_garage_door/__init__.pyi +4 -5
  178. homeassistant-stubs/components/linear_garage_door/coordinator.pyi +3 -2
  179. homeassistant-stubs/components/linear_garage_door/cover.pyi +2 -4
  180. homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +2 -4
  181. homeassistant-stubs/components/linear_garage_door/light.pyi +2 -4
  182. homeassistant-stubs/components/lookin/__init__.pyi +4 -5
  183. homeassistant-stubs/components/lookin/climate.pyi +3 -4
  184. homeassistant-stubs/components/lookin/coordinator.pyi +3 -3
  185. homeassistant-stubs/components/lookin/light.pyi +3 -4
  186. homeassistant-stubs/components/lookin/media_player.pyi +3 -4
  187. homeassistant-stubs/components/lookin/models.pyi +2 -0
  188. homeassistant-stubs/components/lookin/sensor.pyi +2 -4
  189. homeassistant-stubs/components/luftdaten/__init__.pyi +4 -6
  190. homeassistant-stubs/components/luftdaten/coordinator.pyi +15 -0
  191. homeassistant-stubs/components/luftdaten/diagnostics.pyi +3 -4
  192. homeassistant-stubs/components/luftdaten/sensor.pyi +4 -4
  193. homeassistant-stubs/components/matrix/__init__.pyi +2 -7
  194. homeassistant-stubs/components/matrix/const.pyi +3 -0
  195. homeassistant-stubs/components/matrix/services.pyi +12 -0
  196. homeassistant-stubs/components/matter/sensor.pyi +7 -2
  197. homeassistant-stubs/components/matter/vacuum.pyi +5 -5
  198. homeassistant-stubs/components/mealie/__init__.pyi +1 -1
  199. homeassistant-stubs/components/mealie/services.pyi +9 -3
  200. homeassistant-stubs/components/media_player/__init__.pyi +0 -2
  201. homeassistant-stubs/components/media_player/intent.pyi +1 -1
  202. homeassistant-stubs/components/media_source/local_source.pyi +2 -0
  203. homeassistant-stubs/components/metoffice/sensor.pyi +1 -1
  204. homeassistant-stubs/components/miele/const.pyi +24 -0
  205. homeassistant-stubs/components/miele/sensor.pyi +1 -2
  206. homeassistant-stubs/components/mqtt/config_flow.pyi +6 -1
  207. homeassistant-stubs/components/mqtt/sensor.pyi +1 -4
  208. homeassistant-stubs/components/music_assistant/__init__.pyi +5 -1
  209. homeassistant-stubs/components/music_assistant/button.pyi +15 -0
  210. homeassistant-stubs/components/music_assistant/helpers.pyi +5 -0
  211. homeassistant-stubs/components/music_assistant/media_player.pyi +4 -4
  212. homeassistant-stubs/components/nam/config_flow.pyi +3 -9
  213. homeassistant-stubs/components/nextdns/binary_sensor.pyi +6 -12
  214. homeassistant-stubs/components/nextdns/button.pyi +2 -9
  215. homeassistant-stubs/components/nextdns/coordinator.pyi +2 -7
  216. homeassistant-stubs/components/nextdns/entity.pyi +14 -0
  217. homeassistant-stubs/components/nextdns/sensor.pyi +8 -15
  218. homeassistant-stubs/components/nextdns/switch.pyi +3 -6
  219. homeassistant-stubs/components/nfandroidtv/__init__.pyi +0 -1
  220. homeassistant-stubs/components/nfandroidtv/notify.pyi +5 -4
  221. homeassistant-stubs/components/nordpool/services.pyi +2 -1
  222. homeassistant-stubs/components/ntfy/__init__.pyi +1 -3
  223. homeassistant-stubs/components/ntfy/config_flow.pyi +3 -0
  224. homeassistant-stubs/components/ntfy/coordinator.pyi +16 -0
  225. homeassistant-stubs/components/ntfy/notify.pyi +1 -1
  226. homeassistant-stubs/components/ntfy/sensor.pyi +56 -0
  227. homeassistant-stubs/components/ohme/services.pyi +2 -1
  228. homeassistant-stubs/components/onedrive/__init__.pyi +1 -1
  229. homeassistant-stubs/components/onedrive/services.pyi +3 -2
  230. homeassistant-stubs/components/onewire/binary_sensor.pyi +3 -2
  231. homeassistant-stubs/components/onewire/const.pyi +0 -1
  232. homeassistant-stubs/components/onewire/entity.pyi +2 -3
  233. homeassistant-stubs/components/onewire/switch.pyi +3 -2
  234. homeassistant-stubs/components/onkyo/__init__.pyi +1 -1
  235. homeassistant-stubs/components/onkyo/services.pyi +3 -2
  236. homeassistant-stubs/components/openai_conversation/__init__.pyi +4 -2
  237. homeassistant-stubs/components/openai_conversation/config_flow.pyi +19 -14
  238. homeassistant-stubs/components/openai_conversation/const.pyi +2 -0
  239. homeassistant-stubs/components/openai_conversation/conversation.pyi +4 -4
  240. homeassistant-stubs/components/overseerr/__init__.pyi +1 -1
  241. homeassistant-stubs/components/overseerr/services.pyi +6 -4
  242. homeassistant-stubs/components/paperless_ngx/__init__.pyi +1 -1
  243. homeassistant-stubs/components/paperless_ngx/config_flow.pyi +2 -2
  244. homeassistant-stubs/components/paperless_ngx/coordinator.pyi +3 -5
  245. homeassistant-stubs/components/paperless_ngx/entity.pyi +2 -5
  246. homeassistant-stubs/components/paperless_ngx/sensor.pyi +8 -8
  247. homeassistant-stubs/components/paperless_ngx/update.pyi +25 -0
  248. homeassistant-stubs/components/person/__init__.pyi +1 -1
  249. homeassistant-stubs/components/plugwise/climate.pyi +0 -1
  250. homeassistant-stubs/components/pushbullet/sensor.pyi +1 -1
  251. homeassistant-stubs/components/qbus/climate.pyi +3 -2
  252. homeassistant-stubs/components/qbus/cover.pyi +39 -0
  253. homeassistant-stubs/components/qbus/entity.pyi +7 -3
  254. homeassistant-stubs/components/qbus/light.pyi +4 -3
  255. homeassistant-stubs/components/qbus/scene.pyi +2 -2
  256. homeassistant-stubs/components/qbus/switch.pyi +3 -2
  257. homeassistant-stubs/components/recorder/__init__.pyi +1 -1
  258. homeassistant-stubs/components/recorder/services.pyi +7 -12
  259. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  260. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  261. homeassistant-stubs/components/reolink/const.pyi +1 -0
  262. homeassistant-stubs/components/reolink/entity.pyi +1 -1
  263. homeassistant-stubs/components/reolink/host.pyi +1 -1
  264. homeassistant-stubs/components/reolink/services.pyi +2 -0
  265. homeassistant-stubs/components/rest/data.pyi +8 -6
  266. homeassistant-stubs/components/russound_rio/__init__.pyi +1 -0
  267. homeassistant-stubs/components/russound_rio/entity.pyi +6 -2
  268. homeassistant-stubs/components/russound_rio/media_player.pyi +1 -5
  269. homeassistant-stubs/components/russound_rio/number.pyi +30 -0
  270. homeassistant-stubs/components/russound_rio/switch.pyi +33 -0
  271. homeassistant-stubs/components/shelly/__init__.pyi +1 -1
  272. homeassistant-stubs/components/shelly/const.pyi +1 -0
  273. homeassistant-stubs/components/shelly/repairs.pyi +14 -3
  274. homeassistant-stubs/components/shopping_list/__init__.pyi +1 -0
  275. homeassistant-stubs/components/shopping_list/intent.pyi +9 -1
  276. homeassistant-stubs/components/squeezebox/button.pyi +0 -2
  277. homeassistant-stubs/components/squeezebox/entity.pyi +2 -0
  278. homeassistant-stubs/components/squeezebox/media_player.pyi +0 -2
  279. homeassistant-stubs/components/stream/__init__.pyi +1 -1
  280. homeassistant-stubs/components/stream/const.pyi +1 -0
  281. homeassistant-stubs/components/stream/core.pyi +2 -1
  282. homeassistant-stubs/components/sun/__init__.pyi +1 -0
  283. homeassistant-stubs/components/sun/binary_sensor.pyi +36 -0
  284. homeassistant-stubs/components/sun/condition.pyi +13 -3
  285. homeassistant-stubs/components/sun/sensor.pyi +2 -0
  286. homeassistant-stubs/components/switch/light.pyi +1 -0
  287. homeassistant-stubs/components/switch_as_x/entity.pyi +1 -0
  288. homeassistant-stubs/components/synology_dsm/__init__.pyi +4 -1
  289. homeassistant-stubs/components/synology_dsm/{service.pyi → services.pyi} +4 -2
  290. homeassistant-stubs/components/tedee/binary_sensor.pyi +4 -0
  291. homeassistant-stubs/components/telegram_bot/__init__.pyi +34 -0
  292. homeassistant-stubs/components/telegram_bot/bot.pyi +63 -0
  293. homeassistant-stubs/components/telegram_bot/broadcast.pyi +5 -0
  294. homeassistant-stubs/components/telegram_bot/config_flow.pyi +53 -0
  295. homeassistant-stubs/components/telegram_bot/const.pyi +93 -0
  296. homeassistant-stubs/components/telegram_bot/polling.pyi +19 -0
  297. homeassistant-stubs/components/telegram_bot/webhooks.pyi +47 -0
  298. homeassistant-stubs/components/tplink/climate.pyi +1 -2
  299. homeassistant-stubs/components/trend/binary_sensor.pyi +1 -1
  300. homeassistant-stubs/components/tts/__init__.pyi +1 -0
  301. homeassistant-stubs/components/tts/entity.pyi +1 -2
  302. homeassistant-stubs/components/unifi/button.pyi +5 -5
  303. homeassistant-stubs/components/unifi/device_tracker.pyi +5 -5
  304. homeassistant-stubs/components/unifi/entity.pyi +5 -8
  305. homeassistant-stubs/components/unifi/hub/hub.pyi +1 -1
  306. homeassistant-stubs/components/unifi/image.pyi +5 -5
  307. homeassistant-stubs/components/unifi/sensor.pyi +5 -5
  308. homeassistant-stubs/components/unifi/switch.pyi +7 -7
  309. homeassistant-stubs/components/unifi/update.pyi +3 -5
  310. homeassistant-stubs/components/unifiprotect/services.pyi +1 -0
  311. homeassistant-stubs/components/vacuum/__init__.pyi +0 -2
  312. homeassistant-stubs/components/wallbox/const.pyi +4 -0
  313. homeassistant-stubs/components/wallbox/coordinator.pyi +6 -6
  314. homeassistant-stubs/components/wallbox/lock.pyi +1 -2
  315. homeassistant-stubs/components/wallbox/number.pyi +1 -2
  316. homeassistant-stubs/components/websocket_api/commands.pyi +6 -3
  317. homeassistant-stubs/components/websocket_api/messages.pyi +1 -0
  318. homeassistant-stubs/components/wiz/__init__.pyi +3 -3
  319. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  320. homeassistant-stubs/components/zwave_js/api.pyi +2 -2
  321. homeassistant-stubs/components/zwave_js/config_flow.pyi +4 -1
  322. homeassistant-stubs/components/zwave_js/device_trigger.pyi +0 -1
  323. homeassistant-stubs/components/zwave_js/services.pyi +2 -0
  324. homeassistant-stubs/components/zwave_js/trigger.pyi +3 -7
  325. homeassistant-stubs/components/zwave_js/triggers/event.pyi +9 -1
  326. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +9 -1
  327. homeassistant-stubs/config_entries.pyi +2 -0
  328. homeassistant-stubs/const.pyi +1 -0
  329. homeassistant-stubs/helpers/condition.pyi +11 -3
  330. homeassistant-stubs/helpers/device_registry.pyi +5 -1
  331. homeassistant-stubs/helpers/entity.pyi +1 -4
  332. homeassistant-stubs/helpers/entity_registry.pyi +11 -1
  333. homeassistant-stubs/helpers/llm.pyi +0 -1
  334. homeassistant-stubs/helpers/selector.pyi +24 -4
  335. homeassistant-stubs/helpers/system_info.pyi +2 -0
  336. homeassistant-stubs/helpers/template.pyi +2 -1
  337. homeassistant-stubs/helpers/trigger.pyi +33 -2
  338. homeassistant-stubs/loader.pyi +3 -1
  339. homeassistant-stubs/util/timeout.pyi +6 -3
  340. homeassistant-stubs/util/yaml/loader.pyi +3 -1
  341. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/METADATA +2 -2
  342. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/RECORD +344 -307
  343. homeassistant-stubs/backports/enum.pyi +0 -7
  344. homeassistant-stubs/backports/functools.pyi +0 -7
  345. homeassistant-stubs/components/devolo_home_control/devolo_multi_level_switch.pyi +0 -10
  346. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/WHEEL +0 -0
  347. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,56 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import NtfyConfigEntry as NtfyConfigEntry, NtfyDataUpdateCoordinator as NtfyDataUpdateCoordinator
3
+ from _typeshed import Incomplete
4
+ from aiontfy import Account as NtfyAccount
5
+ from collections.abc import Callable as Callable
6
+ from dataclasses import dataclass
7
+ from enum import StrEnum
8
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
9
+ from homeassistant.const import CONF_URL as CONF_URL, EntityCategory as EntityCategory, UnitOfInformation as UnitOfInformation, UnitOfTime as UnitOfTime
10
+ from homeassistant.core import HomeAssistant as HomeAssistant
11
+ from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
12
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
+ from homeassistant.helpers.typing import StateType as StateType
14
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
15
+
16
+ PARALLEL_UPDATES: int
17
+
18
+ @dataclass(kw_only=True, frozen=True)
19
+ class NtfySensorEntityDescription(SensorEntityDescription):
20
+ value_fn: Callable[[NtfyAccount], StateType]
21
+
22
+ class NtfySensor(StrEnum):
23
+ MESSAGES = 'messages'
24
+ MESSAGES_REMAINING = 'messages_remaining'
25
+ MESSAGES_LIMIT = 'messages_limit'
26
+ MESSAGES_EXPIRY_DURATION = 'messages_expiry_duration'
27
+ EMAILS = 'emails'
28
+ EMAILS_REMAINING = 'emails_remaining'
29
+ EMAILS_LIMIT = 'emails_limit'
30
+ CALLS = 'calls'
31
+ CALLS_REMAINING = 'calls_remaining'
32
+ CALLS_LIMIT = 'calls_limit'
33
+ RESERVATIONS = 'reservations'
34
+ RESERVATIONS_REMAINING = 'reservations_remaining'
35
+ RESERVATIONS_LIMIT = 'reservations_limit'
36
+ ATTACHMENT_TOTAL_SIZE = 'attachment_total_size'
37
+ ATTACHMENT_TOTAL_SIZE_REMAINING = 'attachment_total_size_remaining'
38
+ ATTACHMENT_TOTAL_SIZE_LIMIT = 'attachment_total_size_limit'
39
+ ATTACHMENT_EXPIRY_DURATION = 'attachment_expiry_duration'
40
+ ATTACHMENT_BANDWIDTH = 'attachment_bandwidth'
41
+ ATTACHMENT_FILE_SIZE = 'attachment_file_size'
42
+ TIER = 'tier'
43
+
44
+ SENSOR_DESCRIPTIONS: tuple[NtfySensorEntityDescription, ...]
45
+
46
+ async def async_setup_entry(hass: HomeAssistant, config_entry: NtfyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
47
+
48
+ class NtfySensorEntity(CoordinatorEntity[NtfyDataUpdateCoordinator], SensorEntity):
49
+ entity_description: NtfySensorEntityDescription
50
+ coordinator: NtfyDataUpdateCoordinator
51
+ _attr_has_entity_name: bool
52
+ _attr_unique_id: Incomplete
53
+ _attr_device_info: Incomplete
54
+ def __init__(self, coordinator: NtfyDataUpdateCoordinator, description: NtfySensorEntityDescription) -> None: ...
55
+ @property
56
+ def native_value(self) -> StateType: ...
@@ -2,7 +2,7 @@ from .const import DOMAIN as DOMAIN
2
2
  from .coordinator import OhmeConfigEntry as OhmeConfigEntry
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
5
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse, callback as callback
6
6
  from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
7
7
  from homeassistant.helpers import selector as selector
8
8
  from ohme import OhmeApiClient as OhmeApiClient
@@ -16,4 +16,5 @@ SERVICE_SET_PRICE_CAP: str
16
16
  SERVICE_SET_PRICE_CAP_SCHEMA: Final[Incomplete]
17
17
 
18
18
  def __get_client(call: ServiceCall) -> OhmeApiClient: ...
19
+ @callback
19
20
  def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,6 +1,6 @@
1
1
  from .const import CONF_FOLDER_ID as CONF_FOLDER_ID, CONF_FOLDER_NAME as CONF_FOLDER_NAME, DATA_BACKUP_AGENT_LISTENERS as DATA_BACKUP_AGENT_LISTENERS, DOMAIN as DOMAIN
2
2
  from .coordinator import OneDriveConfigEntry as OneDriveConfigEntry, OneDriveRuntimeData as OneDriveRuntimeData, OneDriveUpdateCoordinator as OneDriveUpdateCoordinator
3
- from .services import async_register_services as async_register_services
3
+ from .services import async_setup_services as async_setup_services
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Awaitable, Callable as Callable
6
6
  from homeassistant.const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, Platform as Platform
@@ -2,7 +2,7 @@ from .const import DOMAIN as DOMAIN
2
2
  from .coordinator import OneDriveConfigEntry as OneDriveConfigEntry
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.const import CONF_FILENAME as CONF_FILENAME
5
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse, callback as callback
6
6
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
7
7
 
8
8
  CONF_CONFIG_ENTRY_ID: str
@@ -12,4 +12,5 @@ UPLOAD_SERVICE_SCHEMA: Incomplete
12
12
  CONTENT_SIZE_LIMIT: Incomplete
13
13
 
14
14
  def _read_file_contents(hass: HomeAssistant, filenames: list[str]) -> list[tuple[str, bytes]]: ...
15
- def async_register_services(hass: HomeAssistant) -> None: ...
15
+ @callback
16
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,4 +1,4 @@
1
- from .const import DEVICE_KEYS_0_3 as DEVICE_KEYS_0_3, DEVICE_KEYS_0_7 as DEVICE_KEYS_0_7, DEVICE_KEYS_A_B as DEVICE_KEYS_A_B, READ_MODE_BOOL as READ_MODE_BOOL
1
+ from .const import DEVICE_KEYS_0_3 as DEVICE_KEYS_0_3, DEVICE_KEYS_0_7 as DEVICE_KEYS_0_7, DEVICE_KEYS_A_B as DEVICE_KEYS_A_B, READ_MODE_INT as READ_MODE_INT
2
2
  from .entity import OneWireEntity as OneWireEntity, OneWireEntityDescription as OneWireEntityDescription
3
3
  from .onewirehub import OWDeviceDescription as OWDeviceDescription, OneWireConfigEntry as OneWireConfigEntry, OneWireHub as OneWireHub, SIGNAL_NEW_DEVICE_CONNECTED as SIGNAL_NEW_DEVICE_CONNECTED
4
4
  from _typeshed import Incomplete
@@ -13,7 +13,8 @@ PARALLEL_UPDATES: int
13
13
  SCAN_INTERVAL: Incomplete
14
14
 
15
15
  @dataclass(frozen=True)
16
- class OneWireBinarySensorEntityDescription(OneWireEntityDescription, BinarySensorEntityDescription): ...
16
+ class OneWireBinarySensorEntityDescription(OneWireEntityDescription, BinarySensorEntityDescription):
17
+ read_mode = READ_MODE_INT
17
18
 
18
19
  DEVICE_BINARY_SENSORS: dict[str, tuple[OneWireBinarySensorEntityDescription, ...]]
19
20
  HOBBYBOARD_EF: dict[str, tuple[OneWireBinarySensorEntityDescription, ...]]
@@ -17,6 +17,5 @@ INPUT_ENTRY_DEVICE_SELECTION: str
17
17
  MANUFACTURER_MAXIM: str
18
18
  MANUFACTURER_HOBBYBOARDS: str
19
19
  MANUFACTURER_EDS: str
20
- READ_MODE_BOOL: str
21
20
  READ_MODE_FLOAT: str
22
21
  READ_MODE_INT: str
@@ -1,9 +1,8 @@
1
- from .const import READ_MODE_BOOL as READ_MODE_BOOL, READ_MODE_INT as READ_MODE_INT
1
+ from .const import READ_MODE_INT as READ_MODE_INT
2
2
  from _typeshed import Incomplete
3
3
  from dataclasses import dataclass
4
4
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
5
5
  from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
6
- from homeassistant.helpers.typing import StateType as StateType
7
6
  from pyownet import protocol
8
7
  from typing import Any
9
8
 
@@ -20,7 +19,7 @@ class OneWireEntity(Entity):
20
19
  _attr_unique_id: Incomplete
21
20
  _attr_device_info: Incomplete
22
21
  _device_file: Incomplete
23
- _state: StateType
22
+ _state: int | float | None
24
23
  _value_raw: float | None
25
24
  _owproxy: Incomplete
26
25
  def __init__(self, description: OneWireEntityDescription, device_id: str, device_info: DeviceInfo, device_file: str, owproxy: protocol._Proxy) -> None: ...
@@ -1,4 +1,4 @@
1
- from .const import DEVICE_KEYS_0_3 as DEVICE_KEYS_0_3, DEVICE_KEYS_0_7 as DEVICE_KEYS_0_7, DEVICE_KEYS_A_B as DEVICE_KEYS_A_B, READ_MODE_BOOL as READ_MODE_BOOL
1
+ from .const import DEVICE_KEYS_0_3 as DEVICE_KEYS_0_3, DEVICE_KEYS_0_7 as DEVICE_KEYS_0_7, DEVICE_KEYS_A_B as DEVICE_KEYS_A_B, READ_MODE_INT as READ_MODE_INT
2
2
  from .entity import OneWireEntity as OneWireEntity, OneWireEntityDescription as OneWireEntityDescription
3
3
  from .onewirehub import OWDeviceDescription as OWDeviceDescription, OneWireConfigEntry as OneWireConfigEntry, OneWireHub as OneWireHub, SIGNAL_NEW_DEVICE_CONNECTED as SIGNAL_NEW_DEVICE_CONNECTED
4
4
  from _typeshed import Incomplete
@@ -14,7 +14,8 @@ PARALLEL_UPDATES: int
14
14
  SCAN_INTERVAL: Incomplete
15
15
 
16
16
  @dataclass(frozen=True)
17
- class OneWireSwitchEntityDescription(OneWireEntityDescription, SwitchEntityDescription): ...
17
+ class OneWireSwitchEntityDescription(OneWireEntityDescription, SwitchEntityDescription):
18
+ read_mode = READ_MODE_INT
18
19
 
19
20
  DEVICE_SWITCHES: dict[str, tuple[OneWireEntityDescription, ...]]
20
21
  HOBBYBOARD_EF: dict[str, tuple[OneWireEntityDescription, ...]]
@@ -1,6 +1,6 @@
1
1
  from .const import DOMAIN as DOMAIN, InputSource as InputSource, ListeningMode as ListeningMode, OPTION_INPUT_SOURCES as OPTION_INPUT_SOURCES, OPTION_LISTENING_MODES as OPTION_LISTENING_MODES
2
2
  from .receiver import Receiver as Receiver, async_interview as async_interview
3
- from .services import DATA_MP_ENTITIES as DATA_MP_ENTITIES, async_register_services as async_register_services
3
+ from .services import DATA_MP_ENTITIES as DATA_MP_ENTITIES, async_setup_services as async_setup_services
4
4
  from _typeshed import Incomplete
5
5
  from dataclasses import dataclass
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
@@ -2,7 +2,7 @@ from .const import DOMAIN as DOMAIN
2
2
  from .media_player import OnkyoMediaPlayer as OnkyoMediaPlayer
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID
5
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
6
6
  from homeassistant.util.hass_dict import HassKey as HassKey
7
7
 
8
8
  DATA_MP_ENTITIES: HassKey[dict[str, dict[str, OnkyoMediaPlayer]]]
@@ -11,4 +11,5 @@ ACCEPTED_VALUES: Incomplete
11
11
  ONKYO_SELECT_OUTPUT_SCHEMA: Incomplete
12
12
  SERVICE_SELECT_HDMI_OUTPUT: str
13
13
 
14
- async def async_register_services(hass: HomeAssistant) -> None: ...
14
+ @callback
15
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,7 +1,7 @@
1
1
  import openai
2
- from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_FILENAMES as CONF_FILENAMES, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P
2
+ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_FILENAMES as CONF_FILENAMES, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P
3
3
  from _typeshed import Incomplete
4
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigSubentry as ConfigSubentry
5
5
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, Platform as Platform
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
7
7
  from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady, HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
@@ -21,3 +21,5 @@ def encode_file(file_path: str) -> tuple[str, str]: ...
21
21
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
22
22
  async def async_setup_entry(hass: HomeAssistant, entry: OpenAIConfigEntry) -> bool: ...
23
23
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
24
+ async def async_migrate_integration(hass: HomeAssistant) -> None: ...
25
+ async def async_migrate_entry(hass: HomeAssistant, entry: OpenAIConfigEntry) -> bool: ...
@@ -1,10 +1,9 @@
1
- from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_RECOMMENDED as CONF_RECOMMENDED, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DOMAIN as DOMAIN, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH as RECOMMENDED_WEB_SEARCH, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE, RECOMMENDED_WEB_SEARCH_USER_LOCATION as RECOMMENDED_WEB_SEARCH_USER_LOCATION, UNSUPPORTED_MODELS as UNSUPPORTED_MODELS, WEB_SEARCH_MODELS as WEB_SEARCH_MODELS
1
+ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_RECOMMENDED as CONF_RECOMMENDED, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DEFAULT_CONVERSATION_NAME as DEFAULT_CONVERSATION_NAME, DOMAIN as DOMAIN, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH as RECOMMENDED_WEB_SEARCH, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE, RECOMMENDED_WEB_SEARCH_USER_LOCATION as RECOMMENDED_WEB_SEARCH_USER_LOCATION, UNSUPPORTED_MODELS as UNSUPPORTED_MODELS, WEB_SEARCH_MODELS as WEB_SEARCH_MODELS
2
2
  from _typeshed import Incomplete
3
- from collections.abc import Mapping
4
3
  from homeassistant.components.zone import ENTITY_ID_HOME as ENTITY_ID_HOME
5
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
6
- from homeassistant.const import ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE as ATTR_LONGITUDE, CONF_API_KEY as CONF_API_KEY, CONF_LLM_HASS_API as CONF_LLM_HASS_API
7
- from homeassistant.core import HomeAssistant as HomeAssistant
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigEntryState as ConfigEntryState, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryFlow as ConfigSubentryFlow, SubentryFlowResult as SubentryFlowResult
5
+ from homeassistant.const import ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE as ATTR_LONGITUDE, CONF_API_KEY as CONF_API_KEY, CONF_LLM_HASS_API as CONF_LLM_HASS_API, CONF_NAME as CONF_NAME
6
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
7
  from homeassistant.helpers import llm as llm
9
8
  from homeassistant.helpers.httpx_client import get_async_client as get_async_client
10
9
  from homeassistant.helpers.selector import NumberSelector as NumberSelector, NumberSelectorConfig as NumberSelectorConfig, SelectOptionDict as SelectOptionDict, SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, SelectSelectorMode as SelectSelectorMode, TemplateSelector as TemplateSelector
@@ -19,14 +18,20 @@ async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> None: ...
19
18
 
20
19
  class OpenAIConfigFlow(ConfigFlow, domain=DOMAIN):
21
20
  VERSION: int
21
+ MINOR_VERSION: int
22
22
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
23
- @staticmethod
24
- def async_get_options_flow(config_entry: ConfigEntry) -> OptionsFlow: ...
23
+ @classmethod
24
+ @callback
25
+ def async_get_supported_subentry_types(cls, config_entry: ConfigEntry) -> dict[str, type[ConfigSubentryFlow]]: ...
25
26
 
26
- class OpenAIOptionsFlow(OptionsFlow):
27
- last_rendered_recommended: Incomplete
28
- def __init__(self, config_entry: ConfigEntry) -> None: ...
29
- async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
30
- async def get_location_data(self) -> dict[str, str]: ...
31
-
32
- def openai_config_option_schema(hass: HomeAssistant, options: Mapping[str, Any]) -> VolDictType: ...
27
+ class ConversationSubentryFlowHandler(ConfigSubentryFlow):
28
+ last_rendered_recommended: bool
29
+ options: dict[str, Any]
30
+ @property
31
+ def _is_new(self) -> bool: ...
32
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
33
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
34
+ async def async_step_init(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
35
+ async def async_step_advanced(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
36
+ async def async_step_model(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
37
+ async def _get_location_data(self) -> dict[str, str]: ...
@@ -2,6 +2,8 @@ import logging
2
2
 
3
3
  DOMAIN: str
4
4
  LOGGER: logging.Logger
5
+ DEFAULT_CONVERSATION_NAME: str
6
+ DEFAULT_NAME: str
5
7
  CONF_CHAT_MODEL: str
6
8
  CONF_FILENAMES: str
7
9
  CONF_MAX_TOKENS: str
@@ -3,7 +3,7 @@ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_M
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import AsyncGenerator, Callable as Callable
5
5
  from homeassistant.components import assist_pipeline as assist_pipeline, conversation as conversation
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigSubentry as ConfigSubentry
7
7
  from homeassistant.const import CONF_LLM_HASS_API as CONF_LLM_HASS_API, MATCH_ALL as MATCH_ALL
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
@@ -21,14 +21,14 @@ def _convert_content_to_param(content: conversation.Content) -> ResponseInputPar
21
21
  async def _transform_stream(chat_log: conversation.ChatLog, result: AsyncStream[ResponseStreamEvent], messages: ResponseInputParam) -> AsyncGenerator[conversation.AssistantContentDeltaDict]: ...
22
22
 
23
23
  class OpenAIConversationEntity(conversation.ConversationEntity, conversation.AbstractConversationAgent):
24
- _attr_has_entity_name: bool
25
- _attr_name: Incomplete
26
24
  _attr_supports_streaming: bool
27
25
  entry: Incomplete
26
+ subentry: Incomplete
27
+ _attr_name: Incomplete
28
28
  _attr_unique_id: Incomplete
29
29
  _attr_device_info: Incomplete
30
30
  _attr_supported_features: Incomplete
31
- def __init__(self, entry: OpenAIConfigEntry) -> None: ...
31
+ def __init__(self, entry: OpenAIConfigEntry, subentry: ConfigSubentry) -> None: ...
32
32
  @property
33
33
  def supported_languages(self) -> list[str] | Literal['*']: ...
34
34
  async def async_added_to_hass(self) -> None: ...
@@ -1,6 +1,6 @@
1
1
  from .const import DOMAIN as DOMAIN, EVENT_KEY as EVENT_KEY, JSON_PAYLOAD as JSON_PAYLOAD, LOGGER as LOGGER, REGISTERED_NOTIFICATIONS as REGISTERED_NOTIFICATIONS
2
2
  from .coordinator import OverseerrConfigEntry as OverseerrConfigEntry, OverseerrCoordinator as OverseerrCoordinator
3
- from .services import setup_services as setup_services
3
+ from .services import async_setup_services as async_setup_services
4
4
  from _typeshed import Incomplete
5
5
  from aiohttp.web_request import Request as Request
6
6
  from aiohttp.web_response import Response as Response
@@ -2,7 +2,7 @@ from .const import ATTR_CONFIG_ENTRY_ID as ATTR_CONFIG_ENTRY_ID, ATTR_REQUESTED_
2
2
  from .coordinator import OverseerrConfigEntry as OverseerrConfigEntry
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
5
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse, callback as callback
6
6
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
7
7
  from homeassistant.util.json import JsonValueType as JsonValueType
8
8
  from python_overseerr import OverseerrClient as OverseerrClient
@@ -11,6 +11,8 @@ from typing import Any
11
11
  SERVICE_GET_REQUESTS: str
12
12
  SERVICE_GET_REQUESTS_SCHEMA: Incomplete
13
13
 
14
- def async_get_entry(hass: HomeAssistant, config_entry_id: str) -> OverseerrConfigEntry: ...
15
- async def get_media(client: OverseerrClient, media_type: str, identifier: int) -> dict[str, Any]: ...
16
- def setup_services(hass: HomeAssistant) -> None: ...
14
+ def _async_get_entry(hass: HomeAssistant, config_entry_id: str) -> OverseerrConfigEntry: ...
15
+ async def _get_media(client: OverseerrClient, media_type: str, identifier: int) -> dict[str, Any]: ...
16
+ async def _async_get_requests(call: ServiceCall) -> ServiceResponse: ...
17
+ @callback
18
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,6 +1,6 @@
1
1
  from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
2
2
  from .coordinator import PaperlessConfigEntry as PaperlessConfigEntry, PaperlessData as PaperlessData, PaperlessStatisticCoordinator as PaperlessStatisticCoordinator, PaperlessStatusCoordinator as PaperlessStatusCoordinator
3
- from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_URL as CONF_URL, Platform as Platform
3
+ from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant
5
5
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryError as ConfigEntryError, ConfigEntryNotReady as ConfigEntryNotReady
6
6
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
@@ -2,7 +2,7 @@ from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
2
2
  from _typeshed import Incomplete
3
3
  from collections.abc import Mapping
4
4
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
5
- from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_URL as CONF_URL
5
+ from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL
6
6
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
7
7
  from typing import Any
8
8
 
@@ -13,4 +13,4 @@ class PaperlessConfigFlow(ConfigFlow, domain=DOMAIN):
13
13
  async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
14
14
  async def async_step_reauth(self, user_input: Mapping[str, Any]) -> ConfigFlowResult: ...
15
15
  async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
16
- async def _validate_input(self, user_input: dict[str, str]) -> dict[str, str]: ...
16
+ async def _validate_input(self, user_input: dict[str, Any]) -> dict[str, str]: ...
@@ -10,10 +10,8 @@ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFai
10
10
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
11
11
  from pypaperless import Paperless as Paperless
12
12
  from pypaperless.models import Statistic, Status
13
- from typing import TypeVar
14
13
 
15
14
  type PaperlessConfigEntry = ConfigEntry[PaperlessData]
16
- TData = TypeVar('TData')
17
15
  UPDATE_INTERVAL_STATISTICS: Incomplete
18
16
  UPDATE_INTERVAL_STATUS: Incomplete
19
17
 
@@ -22,13 +20,13 @@ class PaperlessData:
22
20
  statistics: PaperlessStatisticCoordinator
23
21
  status: PaperlessStatusCoordinator
24
22
 
25
- class PaperlessCoordinator(DataUpdateCoordinator[TData], metaclass=abc.ABCMeta):
23
+ class PaperlessCoordinator[DataT](DataUpdateCoordinator[DataT], metaclass=abc.ABCMeta):
26
24
  config_entry: PaperlessConfigEntry
27
25
  api: Incomplete
28
26
  def __init__(self, hass: HomeAssistant, entry: PaperlessConfigEntry, api: Paperless, name: str, update_interval: timedelta) -> None: ...
29
- async def _async_update_data(self) -> TData: ...
27
+ async def _async_update_data(self) -> DataT: ...
30
28
  @abstractmethod
31
- async def _async_update_data_internal(self) -> TData: ...
29
+ async def _async_update_data_internal(self) -> DataT: ...
32
30
 
33
31
  class PaperlessStatisticCoordinator(PaperlessCoordinator[Statistic]):
34
32
  def __init__(self, hass: HomeAssistant, entry: PaperlessConfigEntry, api: Paperless) -> None: ...
@@ -4,13 +4,10 @@ from _typeshed import Incomplete
4
4
  from homeassistant.components.sensor import EntityDescription as EntityDescription
5
5
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
6
6
  from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
7
- from typing import Generic, TypeVar
8
7
 
9
- TCoordinator = TypeVar('TCoordinator', bound=PaperlessCoordinator)
10
-
11
- class PaperlessEntity(CoordinatorEntity[TCoordinator], Generic[TCoordinator]):
8
+ class PaperlessEntity[CoordinatorT: PaperlessCoordinator](CoordinatorEntity[CoordinatorT]):
12
9
  _attr_has_entity_name: bool
13
10
  entity_description: Incomplete
14
11
  _attr_unique_id: Incomplete
15
12
  _attr_device_info: Incomplete
16
- def __init__(self, coordinator: TCoordinator, description: EntityDescription) -> None: ...
13
+ def __init__(self, coordinator: CoordinatorT, description: EntityDescription) -> None: ...
@@ -1,5 +1,5 @@
1
- from .coordinator import PaperlessConfigEntry as PaperlessConfigEntry, PaperlessStatisticCoordinator as PaperlessStatisticCoordinator, PaperlessStatusCoordinator as PaperlessStatusCoordinator, TData as TData
2
- from .entity import PaperlessEntity as PaperlessEntity, TCoordinator as TCoordinator
1
+ from .coordinator import PaperlessConfigEntry as PaperlessConfigEntry, PaperlessCoordinator as PaperlessCoordinator, PaperlessStatisticCoordinator as PaperlessStatisticCoordinator, PaperlessStatusCoordinator as PaperlessStatusCoordinator
2
+ from .entity import PaperlessEntity as PaperlessEntity
3
3
  from collections.abc import Callable as Callable
4
4
  from dataclasses import dataclass
5
5
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
@@ -8,20 +8,20 @@ from homeassistant.core import HomeAssistant as HomeAssistant
8
8
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
9
  from homeassistant.helpers.typing import StateType as StateType
10
10
  from homeassistant.util.unit_conversion import InformationConverter as InformationConverter
11
- from typing import Generic
11
+ from pypaperless.models import Statistic, Status
12
12
 
13
13
  PARALLEL_UPDATES: int
14
14
 
15
15
  @dataclass(frozen=True, kw_only=True)
16
- class PaperlessEntityDescription(SensorEntityDescription, Generic[TData]):
17
- value_fn: Callable[[TData], StateType]
16
+ class PaperlessEntityDescription[DataT](SensorEntityDescription):
17
+ value_fn: Callable[[DataT], StateType]
18
18
 
19
- SENSOR_STATISTICS: tuple[PaperlessEntityDescription, ...]
20
- SENSOR_STATUS: tuple[PaperlessEntityDescription, ...]
19
+ SENSOR_STATISTICS: tuple[PaperlessEntityDescription[Statistic], ...]
20
+ SENSOR_STATUS: tuple[PaperlessEntityDescription[Status], ...]
21
21
 
22
22
  async def async_setup_entry(hass: HomeAssistant, entry: PaperlessConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
23
 
24
- class PaperlessSensor(PaperlessEntity[TCoordinator], SensorEntity):
24
+ class PaperlessSensor[CoordinatorT: PaperlessCoordinator](PaperlessEntity[CoordinatorT], SensorEntity):
25
25
  entity_description: PaperlessEntityDescription
26
26
  @property
27
27
  def native_value(self) -> StateType: ...
@@ -0,0 +1,25 @@
1
+ from .const import LOGGER as LOGGER
2
+ from .coordinator import PaperlessConfigEntry as PaperlessConfigEntry, PaperlessStatusCoordinator as PaperlessStatusCoordinator
3
+ from .entity import PaperlessEntity as PaperlessEntity
4
+ from _typeshed import Incomplete
5
+ from homeassistant.components.update import UpdateDeviceClass as UpdateDeviceClass, UpdateEntity as UpdateEntity, UpdateEntityDescription as UpdateEntityDescription
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
8
+
9
+ PAPERLESS_CHANGELOGS: str
10
+ PARALLEL_UPDATES: int
11
+ SCAN_INTERVAL: Incomplete
12
+
13
+ async def async_setup_entry(hass: HomeAssistant, entry: PaperlessConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
14
+
15
+ class PaperlessUpdate(PaperlessEntity[PaperlessStatusCoordinator], UpdateEntity):
16
+ release_url = PAPERLESS_CHANGELOGS
17
+ @property
18
+ def should_poll(self) -> bool: ...
19
+ @property
20
+ def available(self) -> bool: ...
21
+ @property
22
+ def installed_version(self) -> str | None: ...
23
+ _attr_available: bool
24
+ _attr_latest_version: Incomplete
25
+ async def async_update(self) -> None: ...
@@ -4,7 +4,7 @@ from collections.abc import Callable as Callable
4
4
  from homeassistant.auth import EVENT_USER_REMOVED as EVENT_USER_REMOVED
5
5
  from homeassistant.components import persistent_notification as persistent_notification, websocket_api as websocket_api
6
6
  from homeassistant.components.device_tracker import ATTR_SOURCE_TYPE as ATTR_SOURCE_TYPE, SourceType as SourceType
7
- from homeassistant.const import ATTR_EDITABLE as ATTR_EDITABLE, ATTR_GPS_ACCURACY as ATTR_GPS_ACCURACY, ATTR_ID as ATTR_ID, ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE as ATTR_LONGITUDE, ATTR_NAME as ATTR_NAME, CONF_ID as CONF_ID, CONF_NAME as CONF_NAME, EVENT_HOMEASSISTANT_START as EVENT_HOMEASSISTANT_START, SERVICE_RELOAD as SERVICE_RELOAD, STATE_HOME as STATE_HOME, STATE_NOT_HOME as STATE_NOT_HOME, STATE_UNAVAILABLE as STATE_UNAVAILABLE, STATE_UNKNOWN as STATE_UNKNOWN
7
+ from homeassistant.const import ATTR_EDITABLE as ATTR_EDITABLE, ATTR_GPS_ACCURACY as ATTR_GPS_ACCURACY, ATTR_ID as ATTR_ID, ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE as ATTR_LONGITUDE, ATTR_NAME as ATTR_NAME, CONF_ID as CONF_ID, CONF_NAME as CONF_NAME, EVENT_HOMEASSISTANT_START as EVENT_HOMEASSISTANT_START, SERVICE_RELOAD as SERVICE_RELOAD, STATE_HOME as STATE_HOME, 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, ServiceCall as ServiceCall, State as State, callback as callback, split_entity_id as split_entity_id
9
9
  from homeassistant.helpers import collection as collection, entity_registry as er, service as service
10
10
  from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
@@ -6,7 +6,6 @@ from _typeshed import Incomplete
6
6
  from homeassistant.components.climate import ATTR_HVAC_MODE as ATTR_HVAC_MODE, ATTR_TARGET_TEMP_HIGH as ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_LOW as ATTR_TARGET_TEMP_LOW, ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACAction as HVACAction, HVACMode as HVACMode
7
7
  from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
9
- from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
10
9
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
10
  from typing import Any
12
11
 
@@ -3,7 +3,7 @@ from .const import DATA_UPDATED as DATA_UPDATED, DOMAIN as DOMAIN
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.components.sensor import SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
5
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
- from homeassistant.const import CONF_NAME as CONF_NAME
6
+ from homeassistant.const import CONF_NAME as CONF_NAME, MAX_LENGTH_STATE_STATE as MAX_LENGTH_STATE_STATE
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
8
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
9
9
  from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
@@ -3,13 +3,13 @@ from .coordinator import QbusConfigEntry as QbusConfigEntry
3
3
  from .entity import QbusEntity as QbusEntity, add_new_outputs as add_new_outputs
4
4
  from _typeshed import Incomplete
5
5
  from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACAction as HVACAction, HVACMode as HVACMode
6
- from homeassistant.components.mqtt import ReceiveMessage as ReceiveMessage
7
6
  from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
8
7
  from homeassistant.core import HomeAssistant as HomeAssistant
9
8
  from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
10
9
  from homeassistant.helpers.debounce import Debouncer as Debouncer
11
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
11
  from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
12
+ from qbusmqttapi.state import QbusMqttThermoState
13
13
  from typing import Any
14
14
 
15
15
  PARALLEL_UPDATES: int
@@ -19,6 +19,7 @@ _LOGGER: Incomplete
19
19
  async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
20
20
 
21
21
  class QbusClimate(QbusEntity, ClimateEntity):
22
+ _state_cls = QbusMqttThermoState
22
23
  _attr_name: Incomplete
23
24
  _attr_hvac_modes: Incomplete
24
25
  _attr_supported_features: Incomplete
@@ -37,6 +38,6 @@ class QbusClimate(QbusEntity, ClimateEntity):
37
38
  async def async_set_temperature(self, **kwargs: Any) -> None: ...
38
39
  _attr_current_temperature: Incomplete
39
40
  _attr_target_temperature: Incomplete
40
- async def _state_received(self, msg: ReceiveMessage) -> None: ...
41
+ async def _handle_state_received(self, state: QbusMqttThermoState) -> None: ...
41
42
  def _set_hvac_action(self) -> None: ...
42
43
  async def _async_request_state(self) -> None: ...
@@ -0,0 +1,39 @@
1
+ from .coordinator import QbusConfigEntry as QbusConfigEntry
2
+ from .entity import QbusEntity as QbusEntity, add_new_outputs as add_new_outputs
3
+ from _typeshed import Incomplete
4
+ from homeassistant.components.cover import ATTR_POSITION as ATTR_POSITION, ATTR_TILT_POSITION as ATTR_TILT_POSITION, CoverDeviceClass as CoverDeviceClass, CoverEntity as CoverEntity, CoverEntityFeature as CoverEntityFeature
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
7
+ from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
8
+ from qbusmqttapi.state import QbusMqttShutterState
9
+ from typing import Any
10
+
11
+ PARALLEL_UPDATES: int
12
+
13
+ async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
14
+
15
+ class QbusCover(QbusEntity, CoverEntity):
16
+ _state_cls = QbusMqttShutterState
17
+ _attr_name: Incomplete
18
+ _attr_supported_features: CoverEntityFeature
19
+ _attr_device_class: Incomplete
20
+ _attr_assumed_state: bool
21
+ _attr_current_cover_position: int
22
+ _attr_current_cover_tilt_position: int
23
+ _attr_is_closed: bool
24
+ _target_shutter_position: int | None
25
+ _target_slat_position: int | None
26
+ _target_state: str | None
27
+ _previous_state: str | None
28
+ def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
29
+ async def async_open_cover(self, **kwargs: Any) -> None: ...
30
+ async def async_close_cover(self, **kwargs: Any) -> None: ...
31
+ async def async_stop_cover(self, **kwargs: Any) -> None: ...
32
+ async def async_set_cover_position(self, **kwargs: Any) -> None: ...
33
+ async def async_open_cover_tilt(self, **kwargs: Any) -> None: ...
34
+ async def async_close_cover_tilt(self, **kwargs: Any) -> None: ...
35
+ async def async_set_cover_tilt_position(self, **kwargs: Any) -> None: ...
36
+ async def _handle_state_received(self, state: QbusMqttShutterState) -> None: ...
37
+ def _update_is_closed(self) -> None: ...
38
+ def _update_cover_position(self) -> None: ...
39
+ def _update_tilt_position(self) -> None: ...
@@ -9,15 +9,18 @@ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo, form
9
9
  from homeassistant.helpers.entity import Entity as Entity
10
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
11
  from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
12
- from qbusmqttapi.state import QbusMqttState as QbusMqttState
12
+ from qbusmqttapi.state import QbusMqttState
13
+ from typing import Generic, TypeVar
13
14
 
14
15
  _REFID_REGEX: Incomplete
16
+ StateT = TypeVar('StateT', bound=QbusMqttState)
15
17
 
16
18
  def add_new_outputs(coordinator: QbusControllerCoordinator, added_outputs: list[QbusMqttOutput], filter_fn: Callable[[QbusMqttOutput], bool], entity_type: type[QbusEntity], async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
17
19
  def format_ref_id(ref_id: str) -> str | None: ...
18
20
  def create_main_device_identifier(mqtt_output: QbusMqttOutput) -> tuple[str, str]: ...
19
21
 
20
- class QbusEntity(Entity, ABC, metaclass=abc.ABCMeta):
22
+ class QbusEntity(Entity, ABC, Generic[StateT], metaclass=abc.ABCMeta):
23
+ _state_cls: type[StateT]
21
24
  _attr_has_entity_name: bool
22
25
  _attr_should_poll: bool
23
26
  _mqtt_output: Incomplete
@@ -28,6 +31,7 @@ class QbusEntity(Entity, ABC, metaclass=abc.ABCMeta):
28
31
  _attr_device_info: Incomplete
29
32
  def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
30
33
  async def async_added_to_hass(self) -> None: ...
31
- @abstractmethod
32
34
  async def _state_received(self, msg: ReceiveMessage) -> None: ...
35
+ @abstractmethod
36
+ async def _handle_state_received(self, state: StateT) -> None: ...
33
37
  async def _async_publish_output_state(self, state: QbusMqttState) -> None: ...
@@ -2,11 +2,11 @@ from .coordinator import QbusConfigEntry as QbusConfigEntry
2
2
  from .entity import QbusEntity as QbusEntity, add_new_outputs as add_new_outputs
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ColorMode as ColorMode, LightEntity as LightEntity
5
- from homeassistant.components.mqtt import ReceiveMessage as ReceiveMessage
6
5
  from homeassistant.core import HomeAssistant as HomeAssistant
7
6
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
8
7
  from homeassistant.util.color import brightness_to_value as brightness_to_value, value_to_brightness as value_to_brightness
9
8
  from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
9
+ from qbusmqttapi.state import QbusMqttAnalogState
10
10
  from typing import Any
11
11
 
12
12
  PARALLEL_UPDATES: int
@@ -14,13 +14,14 @@ PARALLEL_UPDATES: int
14
14
  async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
15
15
 
16
16
  class QbusLight(QbusEntity, LightEntity):
17
+ _state_cls = QbusMqttAnalogState
17
18
  _attr_name: Incomplete
18
19
  _attr_supported_color_modes: Incomplete
19
20
  _attr_color_mode: Incomplete
20
21
  def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
21
22
  async def async_turn_on(self, **kwargs: Any) -> None: ...
22
23
  async def async_turn_off(self, **kwargs: Any) -> None: ...
23
- async def _state_received(self, msg: ReceiveMessage) -> None: ...
24
+ async def _handle_state_received(self, state: QbusMqttAnalogState) -> None: ...
24
25
  _attr_is_on: Incomplete
25
26
  _attr_brightness: Incomplete
26
- def _set_state(self, percentage: int = 0) -> None: ...
27
+ def _set_state(self, percentage: int) -> None: ...