homeassistant-stubs 2025.3.3__py3-none-any.whl → 2025.4.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.
Files changed (334) hide show
  1. homeassistant-stubs/bootstrap.pyi +3 -2
  2. homeassistant-stubs/components/accuweather/const.pyi +3 -1
  3. homeassistant-stubs/components/accuweather/sensor.pyi +1 -1
  4. homeassistant-stubs/components/anova/config_flow.pyi +4 -1
  5. homeassistant-stubs/components/anthemav/media_player.pyi +2 -0
  6. homeassistant-stubs/components/arwn/sensor.pyi +3 -2
  7. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +14 -5
  8. homeassistant-stubs/components/assist_satellite/const.pyi +3 -0
  9. homeassistant-stubs/components/assist_satellite/entity.pyi +6 -4
  10. homeassistant-stubs/components/azure_storage/__init__.pyi +1 -1
  11. homeassistant-stubs/components/azure_storage/backup.pyi +1 -1
  12. homeassistant-stubs/components/azure_storage/config_flow.pyi +7 -0
  13. homeassistant-stubs/components/backup/__init__.pyi +2 -2
  14. homeassistant-stubs/components/backup/agent.pyi +1 -1
  15. homeassistant-stubs/components/backup/backup.pyi +1 -1
  16. homeassistant-stubs/components/backup/config_flow.pyi +7 -0
  17. homeassistant-stubs/components/backup/coordinator.pyi +28 -0
  18. homeassistant-stubs/components/backup/diagnostics.pyi +7 -0
  19. homeassistant-stubs/components/backup/entity.pyi +13 -0
  20. homeassistant-stubs/components/backup/http.pyi +1 -0
  21. homeassistant-stubs/components/backup/manager.pyi +8 -3
  22. homeassistant-stubs/components/backup/sensor.pyi +23 -0
  23. homeassistant-stubs/components/bosch_alarm/__init__.pyi +12 -0
  24. homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +31 -0
  25. homeassistant-stubs/components/bosch_alarm/config_flow.pyi +20 -0
  26. homeassistant-stubs/components/bosch_alarm/const.pyi +4 -0
  27. homeassistant-stubs/components/bring/diagnostics.pyi +5 -0
  28. homeassistant-stubs/components/brother/__init__.pyi +1 -0
  29. homeassistant-stubs/components/brother/coordinator.pyi +1 -0
  30. homeassistant-stubs/components/cloud/backup.pyi +3 -3
  31. homeassistant-stubs/components/cloud/http_api.pyi +6 -3
  32. homeassistant-stubs/components/cloud/tts.pyi +2 -2
  33. homeassistant-stubs/components/comelit/__init__.pyi +11 -0
  34. homeassistant-stubs/components/comelit/alarm_control_panel.pyi +44 -0
  35. homeassistant-stubs/components/comelit/binary_sensor.pyi +22 -0
  36. homeassistant-stubs/components/comelit/climate.pyi +60 -0
  37. homeassistant-stubs/components/comelit/config_flow.pyi +28 -0
  38. homeassistant-stubs/components/comelit/const.pyi +7 -0
  39. homeassistant-stubs/components/comelit/coordinator.pyi +38 -0
  40. homeassistant-stubs/components/comelit/cover.pyi +39 -0
  41. homeassistant-stubs/components/comelit/diagnostics.pyi +10 -0
  42. homeassistant-stubs/components/comelit/humidifier.pyi +61 -0
  43. homeassistant-stubs/components/comelit/light.pyi +28 -0
  44. homeassistant-stubs/components/comelit/sensor.pyi +45 -0
  45. homeassistant-stubs/components/comelit/switch.pyi +27 -0
  46. homeassistant-stubs/components/cover/reproduce_state.pyi +17 -6
  47. homeassistant-stubs/components/demo/valve.pyi +30 -0
  48. homeassistant-stubs/components/discovergy/__init__.pyi +1 -1
  49. homeassistant-stubs/components/energy/data.pyi +1 -0
  50. homeassistant-stubs/components/enigma2/config_flow.pyi +1 -0
  51. homeassistant-stubs/components/esphome/__init__.pyi +1 -1
  52. homeassistant-stubs/components/esphome/assist_satellite.pyi +2 -0
  53. homeassistant-stubs/components/esphome/config_flow.pyi +1 -0
  54. homeassistant-stubs/components/esphome/const.pyi +1 -0
  55. homeassistant-stubs/components/esphome/diagnostics.pyi +0 -1
  56. homeassistant-stubs/components/esphome/event.pyi +2 -0
  57. homeassistant-stubs/components/esphome/manager.pyi +1 -1
  58. homeassistant-stubs/components/fritzbox/climate.pyi +1 -1
  59. homeassistant-stubs/components/frontend/__init__.pyi +9 -10
  60. homeassistant-stubs/components/frontend/storage.pyi +2 -1
  61. homeassistant-stubs/components/gios/__init__.pyi +1 -0
  62. homeassistant-stubs/components/gios/config_flow.pyi +1 -0
  63. homeassistant-stubs/components/gios/coordinator.pyi +2 -2
  64. homeassistant-stubs/components/google/calendar.pyi +3 -2
  65. homeassistant-stubs/components/google_drive/backup.pyi +2 -2
  66. homeassistant-stubs/components/habitica/const.pyi +25 -0
  67. homeassistant-stubs/components/habitica/services.pyi +6 -2
  68. homeassistant-stubs/components/heos/const.pyi +1 -0
  69. homeassistant-stubs/components/heos/coordinator.pyi +5 -5
  70. homeassistant-stubs/components/heos/media_player.pyi +18 -8
  71. homeassistant-stubs/components/home_connect/__init__.pyi +6 -17
  72. homeassistant-stubs/components/home_connect/button.pyi +0 -2
  73. homeassistant-stubs/components/home_connect/const.pyi +1 -6
  74. homeassistant-stubs/components/home_connect/coordinator.pyi +4 -2
  75. homeassistant-stubs/components/home_connect/entity.pyi +7 -2
  76. homeassistant-stubs/components/home_connect/light.pyi +1 -1
  77. homeassistant-stubs/components/home_connect/number.pyi +4 -3
  78. homeassistant-stubs/components/home_connect/select.pyi +7 -3
  79. homeassistant-stubs/components/home_connect/sensor.pyi +3 -1
  80. homeassistant-stubs/components/home_connect/services.pyi +35 -0
  81. homeassistant-stubs/components/home_connect/switch.pyi +2 -1
  82. homeassistant-stubs/components/home_connect/time.pyi +6 -1
  83. homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +15 -0
  84. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +2 -1
  85. homeassistant-stubs/components/homeassistant_hardware/update.pyi +68 -0
  86. homeassistant-stubs/components/homeassistant_hardware/util.pyi +6 -1
  87. homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +7 -1
  88. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +1 -1
  89. homeassistant-stubs/components/homeassistant_sky_connect/const.pyi +10 -0
  90. homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +29 -0
  91. homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +1 -1
  92. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
  93. homeassistant-stubs/components/homeassistant_yellow/const.pyi +4 -0
  94. homeassistant-stubs/components/homeassistant_yellow/update.pyi +29 -0
  95. homeassistant-stubs/components/homee/binary_sensor.pyi +21 -0
  96. homeassistant-stubs/components/homee/button.pyi +1 -0
  97. homeassistant-stubs/components/homee/cover.pyi +1 -0
  98. homeassistant-stubs/components/homee/light.pyi +1 -0
  99. homeassistant-stubs/components/homee/lock.pyi +25 -0
  100. homeassistant-stubs/components/homee/number.pyi +1 -0
  101. homeassistant-stubs/components/homee/select.pyi +23 -0
  102. homeassistant-stubs/components/homee/sensor.pyi +2 -0
  103. homeassistant-stubs/components/homee/switch.pyi +2 -0
  104. homeassistant-stubs/components/homee/valve.pyi +1 -0
  105. homeassistant-stubs/components/homekit/__init__.pyi +3 -1
  106. homeassistant-stubs/components/homekit/accessories.pyi +1 -0
  107. homeassistant-stubs/components/homekit/type_switches.pyi +6 -0
  108. homeassistant-stubs/components/huawei_lte/__init__.pyi +1 -1
  109. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +7 -7
  110. homeassistant-stubs/components/incomfort/config_flow.pyi +1 -0
  111. homeassistant-stubs/components/iron_os/coordinator.pyi +2 -0
  112. homeassistant-stubs/components/iron_os/number.pyi +2 -0
  113. homeassistant-stubs/components/iron_os/select.pyi +3 -0
  114. homeassistant-stubs/components/jewish_calendar/__init__.pyi +9 -2
  115. homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +4 -4
  116. homeassistant-stubs/components/jewish_calendar/const.pyi +3 -0
  117. homeassistant-stubs/components/jewish_calendar/entity.pyi +2 -2
  118. homeassistant-stubs/components/jewish_calendar/sensor.pyi +5 -6
  119. homeassistant-stubs/components/jewish_calendar/service.pyi +10 -0
  120. homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -0
  121. homeassistant-stubs/components/linkplay/entity.pyi +0 -1
  122. homeassistant-stubs/components/linkplay/media_player.pyi +3 -2
  123. homeassistant-stubs/components/linkplay/utils.pyi +0 -32
  124. homeassistant-stubs/components/lovelace/__init__.pyi +3 -1
  125. homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
  126. homeassistant-stubs/components/mastodon/config_flow.pyi +2 -1
  127. homeassistant-stubs/components/mastodon/const.pyi +0 -7
  128. homeassistant-stubs/components/mastodon/coordinator.pyi +5 -5
  129. homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -1
  130. homeassistant-stubs/components/mastodon/entity.pyi +1 -1
  131. homeassistant-stubs/components/mastodon/notify.pyi +3 -2
  132. homeassistant-stubs/components/mastodon/sensor.pyi +2 -3
  133. homeassistant-stubs/components/mastodon/services.pyi +1 -0
  134. homeassistant-stubs/components/mastodon/utils.pyi +3 -2
  135. homeassistant-stubs/components/mcp/coordinator.pyi +2 -9
  136. homeassistant-stubs/components/mcp_server/config_flow.pyi +1 -1
  137. homeassistant-stubs/components/mcp_server/const.pyi +1 -2
  138. homeassistant-stubs/components/mcp_server/server.pyi +1 -0
  139. homeassistant-stubs/components/modbus/__init__.pyi +1 -1
  140. homeassistant-stubs/components/modbus/climate.pyi +6 -2
  141. homeassistant-stubs/components/modbus/const.pyi +10 -0
  142. homeassistant-stubs/components/mqtt/config_flow.pyi +95 -7
  143. homeassistant-stubs/components/mqtt/const.pyi +65 -0
  144. homeassistant-stubs/components/mqtt/cover.pyi +2 -0
  145. homeassistant-stubs/components/mqtt/entity.pyi +4 -4
  146. homeassistant-stubs/components/mqtt/lawn_mower.pyi +1 -2
  147. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -48
  148. homeassistant-stubs/components/mqtt/light/schema_json.pyi +1 -14
  149. homeassistant-stubs/components/mqtt/light/schema_template.pyi +3 -14
  150. homeassistant-stubs/components/mqtt/models.pyi +25 -1
  151. homeassistant-stubs/components/mqtt/sensor.pyi +6 -5
  152. homeassistant-stubs/components/mqtt/update.pyi +1 -1
  153. homeassistant-stubs/components/mqtt/util.pyi +2 -0
  154. homeassistant-stubs/components/mysensors/__init__.pyi +1 -1
  155. homeassistant-stubs/components/mysensors/binary_sensor.pyi +0 -1
  156. homeassistant-stubs/components/mysensors/climate.pyi +0 -1
  157. homeassistant-stubs/components/mysensors/const.pyi +0 -1
  158. homeassistant-stubs/components/mysensors/cover.pyi +1 -2
  159. homeassistant-stubs/components/mysensors/device_tracker.pyi +0 -1
  160. homeassistant-stubs/components/mysensors/gateway.pyi +1 -1
  161. homeassistant-stubs/components/mysensors/helpers.pyi +1 -3
  162. homeassistant-stubs/components/mysensors/light.pyi +4 -5
  163. homeassistant-stubs/components/mysensors/remote.pyi +0 -1
  164. homeassistant-stubs/components/mysensors/sensor.pyi +0 -1
  165. homeassistant-stubs/components/mysensors/switch.pyi +1 -2
  166. homeassistant-stubs/components/mysensors/text.pyi +0 -1
  167. homeassistant-stubs/components/nam/button.pyi +2 -0
  168. homeassistant-stubs/components/nam/const.pyi +1 -0
  169. homeassistant-stubs/components/nam/sensor.pyi +2 -2
  170. homeassistant-stubs/components/nest/media_source.pyi +5 -0
  171. homeassistant-stubs/components/nextdns/__init__.pyi +1 -1
  172. homeassistant-stubs/components/nextdns/button.pyi +2 -0
  173. homeassistant-stubs/components/nextdns/config_flow.pyi +1 -0
  174. homeassistant-stubs/components/nextdns/switch.pyi +1 -0
  175. homeassistant-stubs/components/nut/__init__.pyi +1 -0
  176. homeassistant-stubs/components/nut/button.pyi +14 -0
  177. homeassistant-stubs/components/nut/entity.pyi +19 -0
  178. homeassistant-stubs/components/nut/sensor.pyi +8 -13
  179. homeassistant-stubs/components/nut/switch.pyi +18 -0
  180. homeassistant-stubs/components/onboarding/views.pyi +2 -1
  181. homeassistant-stubs/components/onedrive/__init__.pyi +4 -0
  182. homeassistant-stubs/components/onedrive/backup.pyi +1 -1
  183. homeassistant-stubs/components/onedrive/services.pyi +15 -0
  184. homeassistant-stubs/components/openai_conversation/__init__.pyi +5 -1
  185. homeassistant-stubs/components/openai_conversation/config_flow.pyi +5 -2
  186. homeassistant-stubs/components/openai_conversation/const.pyi +22 -11
  187. homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -7
  188. homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +1 -0
  189. homeassistant-stubs/components/overkiz/water_heater/atlantic_domestic_hot_water_production_v2_io_component.pyi +41 -0
  190. homeassistant-stubs/components/purpleair/__init__.pyi +5 -10
  191. homeassistant-stubs/components/purpleair/const.pyi +6 -4
  192. homeassistant-stubs/components/purpleair/coordinator.pyi +3 -2
  193. homeassistant-stubs/components/purpleair/diagnostics.pyi +2 -4
  194. homeassistant-stubs/components/purpleair/entity.pyi +2 -3
  195. homeassistant-stubs/components/purpleair/sensor.pyi +4 -5
  196. homeassistant-stubs/components/pyload/__init__.pyi +12 -0
  197. homeassistant-stubs/components/pyload/button.pyi +32 -0
  198. homeassistant-stubs/components/pyload/config_flow.pyi +23 -0
  199. homeassistant-stubs/components/pyload/const.pyi +6 -0
  200. homeassistant-stubs/components/pyload/coordinator.pyi +34 -0
  201. homeassistant-stubs/components/pyload/diagnostics.pyi +10 -0
  202. homeassistant-stubs/components/pyload/entity.pyi +13 -0
  203. homeassistant-stubs/components/pyload/sensor.pyi +33 -0
  204. homeassistant-stubs/components/pyload/switch.pyi +37 -0
  205. homeassistant-stubs/components/qbus/climate.pyi +41 -0
  206. homeassistant-stubs/components/qbus/light.pyi +3 -3
  207. homeassistant-stubs/components/recorder/const.pyi +1 -0
  208. homeassistant-stubs/components/recorder/core.pyi +1 -2
  209. homeassistant-stubs/components/recorder/db_schema.pyi +3 -1
  210. homeassistant-stubs/components/recorder/migration.pyi +16 -2
  211. homeassistant-stubs/components/recorder/models/__init__.pyi +2 -2
  212. homeassistant-stubs/components/recorder/models/statistics.pyi +10 -2
  213. homeassistant-stubs/components/recorder/statistics.pyi +27 -9
  214. homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +5 -3
  215. homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
  216. homeassistant-stubs/components/remote_calendar/__init__.pyi +11 -0
  217. homeassistant-stubs/components/remote_calendar/calendar.pyi +26 -0
  218. homeassistant-stubs/components/remote_calendar/config_flow.pyi +13 -0
  219. homeassistant-stubs/components/remote_calendar/const.pyi +2 -0
  220. homeassistant-stubs/components/remote_calendar/coordinator.pyi +20 -0
  221. homeassistant-stubs/components/remote_calendar/diagnostics.pyi +5 -0
  222. homeassistant-stubs/components/renault/config_flow.pyi +1 -0
  223. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  224. homeassistant-stubs/components/reolink/binary_sensor.pyi +17 -1
  225. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  226. homeassistant-stubs/components/reolink/const.pyi +1 -0
  227. homeassistant-stubs/components/reolink/host.pyi +4 -4
  228. homeassistant-stubs/components/reolink/number.pyi +21 -1
  229. homeassistant-stubs/components/reolink/select.pyi +17 -1
  230. homeassistant-stubs/components/reolink/update.pyi +2 -1
  231. homeassistant-stubs/components/reolink/util.pyi +7 -0
  232. homeassistant-stubs/components/roborock/__init__.pyi +5 -3
  233. homeassistant-stubs/components/roborock/binary_sensor.pyi +4 -1
  234. homeassistant-stubs/components/roborock/button.pyi +11 -1
  235. homeassistant-stubs/components/roborock/config_flow.pyi +7 -3
  236. homeassistant-stubs/components/roborock/const.pyi +7 -1
  237. homeassistant-stubs/components/roborock/coordinator.pyi +18 -3
  238. homeassistant-stubs/components/roborock/entity.pyi +3 -1
  239. homeassistant-stubs/components/roborock/image.pyi +2 -7
  240. homeassistant-stubs/components/roborock/models.pyi +7 -0
  241. homeassistant-stubs/components/roborock/number.pyi +1 -0
  242. homeassistant-stubs/components/roborock/select.pyi +7 -5
  243. homeassistant-stubs/components/roborock/sensor.pyi +14 -1
  244. homeassistant-stubs/components/roborock/switch.pyi +2 -0
  245. homeassistant-stubs/components/roborock/time.pyi +1 -0
  246. homeassistant-stubs/components/roborock/vacuum.pyi +1 -1
  247. homeassistant-stubs/components/sensor/const.pyi +2 -0
  248. homeassistant-stubs/components/sensor/recorder.pyi +15 -3
  249. homeassistant-stubs/components/shelly/__init__.pyi +2 -2
  250. homeassistant-stubs/components/shelly/bluetooth/__init__.pyi +4 -2
  251. homeassistant-stubs/components/shelly/button.pyi +22 -7
  252. homeassistant-stubs/components/shelly/climate.pyi +1 -1
  253. homeassistant-stubs/components/shelly/config_flow.pyi +5 -5
  254. homeassistant-stubs/components/shelly/const.pyi +0 -1
  255. homeassistant-stubs/components/shelly/coordinator.pyi +5 -1
  256. homeassistant-stubs/components/shelly/diagnostics.pyi +1 -2
  257. homeassistant-stubs/components/shelly/entity.pyi +1 -3
  258. homeassistant-stubs/components/shelly/event.pyi +1 -1
  259. homeassistant-stubs/components/shelly/number.pyi +1 -1
  260. homeassistant-stubs/components/shelly/sensor.pyi +2 -2
  261. homeassistant-stubs/components/shelly/switch.pyi +14 -14
  262. homeassistant-stubs/components/shelly/update.pyi +1 -1
  263. homeassistant-stubs/components/shelly/utils.pyi +6 -2
  264. homeassistant-stubs/components/skybell/config_flow.pyi +3 -0
  265. homeassistant-stubs/components/smlight/__init__.pyi +0 -2
  266. homeassistant-stubs/components/smlight/sensor.pyi +5 -2
  267. homeassistant-stubs/components/smlight/update.pyi +0 -1
  268. homeassistant-stubs/components/squeezebox/browse_media.pyi +6 -11
  269. homeassistant-stubs/components/squeezebox/button.pyi +31 -0
  270. homeassistant-stubs/components/squeezebox/entity.pyi +8 -2
  271. homeassistant-stubs/components/squeezebox/media_player.pyi +3 -5
  272. homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -7
  273. homeassistant-stubs/components/synology_dsm/backup.pyi +3 -4
  274. homeassistant-stubs/components/synology_dsm/binary_sensor.pyi +2 -5
  275. homeassistant-stubs/components/synology_dsm/button.pyi +2 -3
  276. homeassistant-stubs/components/synology_dsm/camera.pyi +2 -4
  277. homeassistant-stubs/components/synology_dsm/config_flow.pyi +3 -2
  278. homeassistant-stubs/components/synology_dsm/coordinator.pyi +15 -5
  279. homeassistant-stubs/components/synology_dsm/diagnostics.pyi +3 -4
  280. homeassistant-stubs/components/synology_dsm/media_source.pyi +3 -1
  281. homeassistant-stubs/components/synology_dsm/repairs.pyi +2 -3
  282. homeassistant-stubs/components/synology_dsm/sensor.pyi +3 -5
  283. homeassistant-stubs/components/synology_dsm/service.pyi +1 -1
  284. homeassistant-stubs/components/synology_dsm/switch.pyi +2 -4
  285. homeassistant-stubs/components/synology_dsm/update.pyi +2 -5
  286. homeassistant-stubs/components/tibber/coordinator.pyi +1 -1
  287. homeassistant-stubs/components/todo/intent.pyi +8 -0
  288. homeassistant-stubs/components/trafikverket_ferry/config_flow.pyi +1 -0
  289. homeassistant-stubs/components/trafikverket_weatherstation/config_flow.pyi +3 -0
  290. homeassistant-stubs/components/tts/__init__.pyi +66 -51
  291. homeassistant-stubs/components/tts/entity.pyi +54 -0
  292. homeassistant-stubs/components/tts/media_source.pyi +1 -1
  293. homeassistant-stubs/components/update/__init__.pyi +2 -2
  294. homeassistant-stubs/components/usb/__init__.pyi +1 -5
  295. homeassistant-stubs/components/usb/utils.pyi +2 -0
  296. homeassistant-stubs/components/vodafone_station/__init__.pyi +11 -0
  297. homeassistant-stubs/components/vodafone_station/button.pyi +31 -0
  298. homeassistant-stubs/components/vodafone_station/config_flow.pyi +29 -0
  299. homeassistant-stubs/components/vodafone_station/const.pyi +9 -0
  300. homeassistant-stubs/components/vodafone_station/coordinator.pyi +43 -0
  301. homeassistant-stubs/components/vodafone_station/device_tracker.pyi +30 -0
  302. homeassistant-stubs/components/vodafone_station/diagnostics.pyi +10 -0
  303. homeassistant-stubs/components/vodafone_station/helpers.pyi +8 -0
  304. homeassistant-stubs/components/vodafone_station/sensor.pyi +38 -0
  305. homeassistant-stubs/components/zwave_js/__init__.pyi +5 -9
  306. homeassistant-stubs/components/zwave_js/api.pyi +15 -0
  307. homeassistant-stubs/components/zwave_js/config_flow.pyi +0 -1
  308. homeassistant-stubs/config_entries.pyi +2 -5
  309. homeassistant-stubs/helpers/backup.pyi +4 -1
  310. homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +14 -0
  311. homeassistant-stubs/helpers/config_validation.pyi +5 -2
  312. homeassistant-stubs/helpers/frame.pyi +14 -5
  313. homeassistant-stubs/helpers/intent.pyi +13 -4
  314. homeassistant-stubs/helpers/llm.pyi +7 -1
  315. homeassistant-stubs/helpers/script.pyi +1 -1
  316. homeassistant-stubs/helpers/selector.pyi +1 -0
  317. homeassistant-stubs/helpers/template.pyi +14 -1
  318. homeassistant-stubs/loader.pyi +18 -8
  319. homeassistant-stubs/scripts/check_config.pyi +0 -1
  320. homeassistant-stubs/util/logging.pyi +18 -1
  321. homeassistant-stubs/util/unit_conversion.pyi +3 -0
  322. homeassistant-stubs/util/unit_system.pyi +12 -10
  323. homeassistant-stubs/util/yaml/__init__.pyi +3 -4
  324. homeassistant-stubs/util/yaml/dumper.pyi +2 -8
  325. homeassistant-stubs/util/yaml/input.pyi +2 -9
  326. homeassistant-stubs/util/yaml/loader.pyi +4 -72
  327. homeassistant-stubs/util/yaml/objects.pyi +2 -26
  328. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/METADATA +2 -2
  329. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/RECORD +331 -270
  330. homeassistant-stubs/components/mcp_server/llm_api.pyi +0 -15
  331. homeassistant-stubs/components/synology_dsm/models.pyi +0 -10
  332. homeassistant-stubs/util/yaml/const.pyi +0 -1
  333. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/WHEEL +0 -0
  334. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -15,7 +15,8 @@ from .generated.usb import USB as USB
15
15
  from .generated.zeroconf import HOMEKIT as HOMEKIT, ZEROCONF as ZEROCONF
16
16
  from .helpers import device_registry as dr
17
17
  from .helpers.json import json_bytes as json_bytes, json_fragment as json_fragment
18
- from .helpers.typing import ConfigType as ConfigType
18
+ from .helpers.typing import ConfigType as ConfigType, UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
19
+ from .util.async_ import create_eager_task as create_eager_task
19
20
  from .util.hass_dict import HassKey as HassKey
20
21
  from .util.json import JSON_DECODE_EXCEPTIONS as JSON_DECODE_EXCEPTIONS, json_loads as json_loads
21
22
  from _typeshed import Incomplete
@@ -158,8 +159,7 @@ class Integration:
158
159
  pkg_path: Incomplete
159
160
  file_path: Incomplete
160
161
  manifest: Incomplete
161
- _all_dependencies_resolved: bool | None
162
- _all_dependencies: set[str] | None
162
+ _all_dependencies: set[str] | Exception | None
163
163
  _platforms_to_preload: Incomplete
164
164
  _component_future: asyncio.Future[ComponentProtocol] | None
165
165
  _import_futures: dict[str, asyncio.Future[ModuleType]]
@@ -227,7 +227,7 @@ class Integration:
227
227
  def all_dependencies(self) -> set[str]: ...
228
228
  @property
229
229
  def all_dependencies_resolved(self) -> bool: ...
230
- async def resolve_dependencies(self) -> bool: ...
230
+ async def resolve_dependencies(self) -> set[str] | None: ...
231
231
  async def async_get_component(self) -> ComponentProtocol: ...
232
232
  def get_component(self) -> ComponentProtocol: ...
233
233
  def _get_component(self, preload_platforms: bool = False) -> ComponentProtocol: ...
@@ -250,6 +250,18 @@ def async_get_loaded_integration(hass: HomeAssistant, domain: str) -> Integratio
250
250
  async def async_get_integration(hass: HomeAssistant, domain: str) -> Integration: ...
251
251
  async def async_get_integrations(hass: HomeAssistant, domains: Iterable[str]) -> dict[str, Integration | Exception]: ...
252
252
 
253
+ class _ResolveDependenciesCacheProtocol(Protocol):
254
+ def get(self, itg: Integration) -> set[str] | Exception | None: ...
255
+ def __setitem__(self, itg: Integration, all_dependencies: set[str] | Exception) -> None: ...
256
+
257
+ class _ResolveDependenciesCache(_ResolveDependenciesCacheProtocol):
258
+ def get(self, itg: Integration) -> set[str] | Exception | None: ...
259
+ def __setitem__(self, itg: Integration, all_dependencies: set[str] | Exception) -> None: ...
260
+
261
+ async def resolve_integrations_dependencies(hass: HomeAssistant, integrations: Iterable[Integration]) -> dict[str, set[str]]: ...
262
+ async def resolve_integrations_after_dependencies(hass: HomeAssistant, integrations: Iterable[Integration], possible_after_dependencies: set[str] | None = None, *, ignore_exceptions: bool = False) -> dict[str, set[str]]: ...
263
+ async def _do_resolve_dependencies(itg: Integration, *, cache: _ResolveDependenciesCacheProtocol, possible_after_dependencies: set[str] | None | UndefinedType = ..., ignore_exceptions: bool = False) -> set[str]: ...
264
+
253
265
  class LoaderError(Exception): ...
254
266
 
255
267
  class IntegrationNotFound(LoaderError):
@@ -261,9 +273,8 @@ class IntegrationNotLoaded(LoaderError):
261
273
  def __init__(self, domain: str) -> None: ...
262
274
 
263
275
  class CircularDependency(LoaderError):
264
- from_domain: Incomplete
265
- to_domain: Incomplete
266
- def __init__(self, from_domain: str | set[str], to_domain: str) -> None: ...
276
+ def __init__(self, domain_cycle: list[str]) -> None: ...
277
+ def extend_cycle(self, domain: str) -> None: ...
267
278
 
268
279
  def _load_file(hass: HomeAssistant, comp_or_platform: str, base_paths: list[str]) -> ComponentProtocol | None: ...
269
280
 
@@ -284,7 +295,6 @@ class Helpers:
284
295
  def __getattr__(self, helper_name: str) -> ModuleWrapper: ...
285
296
 
286
297
  def bind_hass[_CallableT: Callable[..., Any]](func: _CallableT) -> _CallableT: ...
287
- async def _async_component_dependencies(hass: HomeAssistant, integration: Integration) -> set[str]: ...
288
298
  def _async_mount_config_dir(hass: HomeAssistant) -> None: ...
289
299
  def _lookup_path(hass: HomeAssistant) -> list[str]: ...
290
300
  def is_component_module_loaded(hass: HomeAssistant, module: str) -> bool: ...
@@ -5,7 +5,6 @@ from homeassistant.config import get_default_config_dir as get_default_config_di
5
5
  from homeassistant.config_entries import ConfigEntries as ConfigEntries
6
6
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
7
  from homeassistant.helpers.check_config import async_check_ha_config_file as async_check_ha_config_file
8
- from homeassistant.util.yaml import Secrets as Secrets
9
8
  from typing import Any
10
9
 
11
10
  REQUIREMENTS: Incomplete
@@ -1,8 +1,25 @@
1
1
  import logging
2
2
  import logging.handlers
3
+ from _typeshed import Incomplete
3
4
  from collections.abc import Callable, Coroutine
4
5
  from homeassistant.core import HassJobType as HassJobType, HomeAssistant as HomeAssistant, callback as callback, get_hassjob_callable_job_type as get_hassjob_callable_job_type
5
- from typing import Any, overload
6
+ from queue import SimpleQueue
7
+ from typing import Any, overload, override
8
+
9
+ _LOGGER: Incomplete
10
+
11
+ class HomeAssistantQueueListener(logging.handlers.QueueListener):
12
+ LOG_COUNTS_RESET_INTERVAL: int
13
+ MAX_LOGS_COUNT: int
14
+ EXCLUDED_LOG_COUNT_MODULES: Incomplete
15
+ _last_reset: float
16
+ _log_counts: dict[str, int]
17
+ _module_log_count_skip_flags: dict[str, bool]
18
+ def __init__(self, queue: SimpleQueue[logging.Handler], *handlers: logging.Handler) -> None: ...
19
+ @override
20
+ def handle(self, record: logging.LogRecord) -> None: ...
21
+ def _reset_counters(self, time_sec: float) -> None: ...
22
+ def _update_skip_flags(self, module_name: str) -> bool: ...
6
23
 
7
24
  class HomeAssistantQueueHandler(logging.handlers.QueueHandler):
8
25
  listener: logging.handlers.QueueListener | None
@@ -58,6 +58,9 @@ class BaseUnitConverter:
58
58
  def get_unit_ratio(cls, from_unit: str | None, to_unit: str | None) -> float: ...
59
59
  @classmethod
60
60
  @lru_cache
61
+ def get_unit_floored_log_ratio(cls, from_unit: str | None, to_unit: str | None) -> float: ...
62
+ @classmethod
63
+ @lru_cache
61
64
  def _are_unit_inverses(cls, from_unit: str | None, to_unit: str | None) -> bool: ...
62
65
 
63
66
  class DataRateConverter(BaseUnitConverter):
@@ -1,5 +1,6 @@
1
1
  from .unit_conversion import AreaConverter as AreaConverter, DistanceConverter as DistanceConverter, PressureConverter as PressureConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, VolumeConverter as VolumeConverter
2
2
  from _typeshed import Incomplete
3
+ from dataclasses import dataclass
3
4
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass
4
5
  from homeassistant.const import ACCUMULATED_PRECIPITATION as ACCUMULATED_PRECIPITATION, AREA as AREA, LENGTH as LENGTH, MASS as MASS, PRESSURE as PRESSURE, TEMPERATURE as TEMPERATURE, UNIT_NOT_RECOGNIZED_TEMPLATE as UNIT_NOT_RECOGNIZED_TEMPLATE, UnitOfArea as UnitOfArea, UnitOfLength as UnitOfLength, UnitOfMass as UnitOfMass, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfVolume as UnitOfVolume, UnitOfVolumetricFlux as UnitOfVolumetricFlux, VOLUME as VOLUME, WIND_SPEED as WIND_SPEED
5
6
  from typing import Final
@@ -18,17 +19,18 @@ _VALID_BY_TYPE: dict[str, set[str] | set[str | None]]
18
19
 
19
20
  def _is_valid_unit(unit: str, unit_type: str) -> bool: ...
20
21
 
22
+ @dataclass(frozen=True, kw_only=True)
21
23
  class UnitSystem:
22
- _name: Incomplete
23
- accumulated_precipitation_unit: Incomplete
24
- area_unit: Incomplete
25
- length_unit: Incomplete
26
- mass_unit: Incomplete
27
- pressure_unit: Incomplete
28
- temperature_unit: Incomplete
29
- volume_unit: Incomplete
30
- wind_speed_unit: Incomplete
31
- _conversions: Incomplete
24
+ _name: str
25
+ accumulated_precipitation_unit: UnitOfPrecipitationDepth
26
+ area_unit: UnitOfArea
27
+ length_unit: UnitOfLength
28
+ mass_unit: UnitOfMass
29
+ pressure_unit: UnitOfPressure
30
+ temperature_unit: UnitOfTemperature
31
+ volume_unit: UnitOfVolume
32
+ wind_speed_unit: UnitOfSpeed
33
+ _conversions: dict[tuple[SensorDeviceClass | str | None, str | None], str]
32
34
  def __init__(self, name: str, *, accumulated_precipitation: UnitOfPrecipitationDepth, area: UnitOfArea, conversions: dict[tuple[SensorDeviceClass | str | None, str | None], str], length: UnitOfLength, mass: UnitOfMass, pressure: UnitOfPressure, temperature: UnitOfTemperature, volume: UnitOfVolume, wind_speed: UnitOfSpeed) -> None: ...
33
35
  def temperature(self, temperature: float, from_unit: str) -> float: ...
34
36
  def length(self, length: float | None, from_unit: str) -> float: ...
@@ -1,7 +1,6 @@
1
- from .const import SECRET_YAML as SECRET_YAML
2
1
  from .dumper import dump as dump, save_yaml as save_yaml
3
- from .input import UndefinedSubstitution as UndefinedSubstitution, extract_inputs as extract_inputs, substitute as substitute
4
- from .loader import Secrets as Secrets, YamlTypeError as YamlTypeError, load_yaml as load_yaml, load_yaml_dict as load_yaml_dict, parse_yaml as parse_yaml, secret_yaml as secret_yaml
5
- from .objects import Input as Input
2
+ from .loader import Secrets as Secrets, load_yaml as load_yaml, load_yaml_dict as load_yaml_dict, parse_yaml as parse_yaml, secret_yaml as secret_yaml
3
+ from annotatedyaml import Input as Input, SECRET_YAML as SECRET_YAML, YamlTypeError as YamlTypeError
4
+ from annotatedyaml.input import UndefinedSubstitution as UndefinedSubstitution, extract_inputs as extract_inputs, substitute as substitute
6
5
 
7
6
  __all__ = ['SECRET_YAML', 'Input', 'Secrets', 'UndefinedSubstitution', 'YamlTypeError', 'dump', 'extract_inputs', 'load_yaml', 'load_yaml_dict', 'parse_yaml', 'save_yaml', 'secret_yaml', 'substitute']
@@ -1,9 +1,3 @@
1
- import yaml
2
- from .objects import Input as Input, NodeDictClass as NodeDictClass, NodeListClass as NodeListClass, NodeStrClass as NodeStrClass
3
- from _typeshed import Incomplete
4
- from typing import Any
1
+ from annotatedyaml.dumper import add_representer as add_representer, dump as dump, represent_odict as represent_odict, save_yaml as save_yaml
5
2
 
6
- def dump(_dict: dict | list) -> str: ...
7
- def save_yaml(path: str, data: dict) -> None: ...
8
- def represent_odict(dumper, tag, mapping, flow_style: Incomplete | None = None) -> yaml.MappingNode: ...
9
- def add_representer(klass: Any, representer: Any) -> None: ...
3
+ __all__ = ['add_representer', 'dump', 'represent_odict', 'save_yaml']
@@ -1,11 +1,4 @@
1
1
  from .objects import Input as Input
2
- from _typeshed import Incomplete
3
- from typing import Any
2
+ from annotatedyaml.input import UndefinedSubstitution as UndefinedSubstitution, extract_inputs as extract_inputs, substitute as substitute
4
3
 
5
- class UndefinedSubstitution(Exception):
6
- input: Incomplete
7
- def __init__(self, input_name: str) -> None: ...
8
-
9
- def extract_inputs(obj: Any) -> set[str]: ...
10
- def _extract_inputs(obj: Any, found: set[str]) -> None: ...
11
- def substitute(obj: Any, substitutions: dict[str, Any]) -> Any: ...
4
+ __all__ = ['Input', 'UndefinedSubstitution', 'extract_inputs', 'substitute']
@@ -1,81 +1,13 @@
1
1
  import os
2
2
  import yaml
3
- from .const import SECRET_YAML as SECRET_YAML
4
- from .objects import Input as Input, NodeDictClass as NodeDictClass, NodeListClass as NodeListClass, NodeStrClass as NodeStrClass
5
- from _typeshed import Incomplete
6
- from collections.abc import Callable as Callable, Iterator
7
- from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
3
+ from annotatedyaml import YamlTypeError as YamlTypeError
4
+ from annotatedyaml.loader import HAS_C_LOADER as HAS_C_LOADER, JSON_TYPE as JSON_TYPE, LoaderType, Secrets as Secrets, add_constructor as add_constructor
8
5
  from io import StringIO
9
- from pathlib import Path
10
- from propcache.api import cached_property
11
- from typing import Any, TextIO, overload
12
- from yaml import SafeLoader as FastestAvailableSafeLoader
6
+ from typing import TextIO
13
7
 
14
- HAS_C_LOADER: bool
15
- JSON_TYPE = list | dict | str
16
- _LOGGER: Incomplete
17
-
18
- class YamlTypeError(HomeAssistantError): ...
19
-
20
- class Secrets:
21
- config_dir: Incomplete
22
- _cache: dict[Path, dict[str, str]]
23
- def __init__(self, config_dir: Path) -> None: ...
24
- def get(self, requester_path: str, secret: str) -> str: ...
25
- def _load_secret_yaml(self, secret_dir: Path) -> dict[str, str]: ...
26
-
27
- class _LoaderMixin:
28
- name: str
29
- stream: Any
30
- @cached_property
31
- def get_name(self) -> str: ...
32
- @cached_property
33
- def get_stream_name(self) -> str: ...
34
-
35
- class FastSafeLoader(FastestAvailableSafeLoader, _LoaderMixin):
36
- stream: Incomplete
37
- name: str
38
- secrets: Incomplete
39
- def __init__(self, stream: Any, secrets: Secrets | None = None) -> None: ...
40
-
41
- class PythonSafeLoader(yaml.SafeLoader, _LoaderMixin):
42
- secrets: Incomplete
43
- def __init__(self, stream: Any, secrets: Secrets | None = None) -> None: ...
44
- type LoaderType = FastSafeLoader | PythonSafeLoader
8
+ __all__ = ['HAS_C_LOADER', 'JSON_TYPE', 'Secrets', 'YamlTypeError', 'add_constructor', 'load_yaml', 'load_yaml_dict', 'parse_yaml', 'secret_yaml']
45
9
 
46
10
  def load_yaml(fname: str | os.PathLike[str], secrets: Secrets | None = None) -> JSON_TYPE | None: ...
47
11
  def load_yaml_dict(fname: str | os.PathLike[str], secrets: Secrets | None = None) -> dict: ...
48
12
  def parse_yaml(content: str | TextIO | StringIO, secrets: Secrets | None = None) -> JSON_TYPE: ...
49
- def _parse_yaml_python(content: str | TextIO | StringIO, secrets: Secrets | None = None) -> JSON_TYPE: ...
50
- def _parse_yaml(loader: type[FastSafeLoader | PythonSafeLoader], content: str | TextIO, secrets: Secrets | None = None) -> JSON_TYPE: ...
51
- @overload
52
- def _add_reference(obj: list | NodeListClass, loader: LoaderType, node: yaml.nodes.Node) -> NodeListClass: ...
53
- @overload
54
- def _add_reference(obj: str | NodeStrClass, loader: LoaderType, node: yaml.nodes.Node) -> NodeStrClass: ...
55
- @overload
56
- def _add_reference(obj: dict | NodeDictClass, loader: LoaderType, node: yaml.nodes.Node) -> NodeDictClass: ...
57
- @overload
58
- def _add_reference_to_node_class(obj: NodeListClass, loader: LoaderType, node: yaml.nodes.Node) -> NodeListClass: ...
59
- @overload
60
- def _add_reference_to_node_class(obj: NodeStrClass, loader: LoaderType, node: yaml.nodes.Node) -> NodeStrClass: ...
61
- @overload
62
- def _add_reference_to_node_class(obj: NodeDictClass, loader: LoaderType, node: yaml.nodes.Node) -> NodeDictClass: ...
63
- def _raise_if_no_value[NodeT: yaml.nodes.Node, _R](func: Callable[[LoaderType, NodeT], _R]) -> Callable[[LoaderType, NodeT], _R]: ...
64
- @_raise_if_no_value
65
- def _include_yaml(loader: LoaderType, node: yaml.nodes.Node) -> JSON_TYPE: ...
66
- def _is_file_valid(name: str) -> bool: ...
67
- def _find_files(directory: str, pattern: str) -> Iterator[str]: ...
68
- @_raise_if_no_value
69
- def _include_dir_named_yaml(loader: LoaderType, node: yaml.nodes.Node) -> NodeDictClass: ...
70
- @_raise_if_no_value
71
- def _include_dir_merge_named_yaml(loader: LoaderType, node: yaml.nodes.Node) -> NodeDictClass: ...
72
- @_raise_if_no_value
73
- def _include_dir_list_yaml(loader: LoaderType, node: yaml.nodes.Node) -> list[JSON_TYPE]: ...
74
- @_raise_if_no_value
75
- def _include_dir_merge_list_yaml(loader: LoaderType, node: yaml.nodes.Node) -> JSON_TYPE: ...
76
- def _handle_mapping_tag(loader: LoaderType, node: yaml.nodes.MappingNode) -> NodeDictClass: ...
77
- def _construct_seq(loader: LoaderType, node: yaml.nodes.Node) -> JSON_TYPE: ...
78
- def _handle_scalar_tag(loader: LoaderType, node: yaml.nodes.ScalarNode) -> str | int | float | None: ...
79
- def _env_var_yaml(loader: LoaderType, node: yaml.nodes.Node) -> str: ...
80
13
  def secret_yaml(loader: LoaderType, node: yaml.nodes.Node) -> JSON_TYPE: ...
81
- def add_constructor(tag: Any, constructor: Any) -> None: ...
@@ -1,27 +1,3 @@
1
- import voluptuous as vol
2
- import yaml
3
- from _typeshed import Incomplete
4
- from dataclasses import dataclass
5
- from typing import Any
1
+ from annotatedyaml import Input as Input, NodeDictClass as NodeDictClass, NodeListClass as NodeListClass, NodeStrClass as NodeStrClass
6
2
 
7
- class NodeListClass(list):
8
- __slots__: Incomplete
9
- __config_file__: str
10
- __line__: int | str
11
-
12
- class NodeStrClass(str):
13
- __slots__: Incomplete
14
- __config_file__: str
15
- __line__: int | str
16
- def __voluptuous_compile__(self, schema: vol.Schema) -> Any: ...
17
-
18
- class NodeDictClass(dict):
19
- __slots__: Incomplete
20
- __config_file__: str
21
- __line__: int | str
22
-
23
- @dataclass(slots=True, frozen=True)
24
- class Input:
25
- name: str
26
- @classmethod
27
- def from_node(cls, loader: yaml.Loader, node: yaml.nodes.Node) -> Input: ...
3
+ __all__ = ['Input', 'NodeDictClass', 'NodeListClass', 'NodeStrClass']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: homeassistant-stubs
3
- Version: 2025.3.3
3
+ Version: 2025.4.0
4
4
  Summary: PEP 484 typing stubs for Home Assistant Core
5
5
  Project-URL: Homepage, https://github.com/KapJI/homeassistant-stubs
6
6
  Project-URL: Bug Tracker, https://github.com/KapJI/homeassistant-stubs/issues
@@ -18,7 +18,7 @@ Classifier: Topic :: Home Automation
18
18
  Classifier: Topic :: Software Development
19
19
  Classifier: Typing :: Typed
20
20
  Requires-Python: <3.14,>=3.13
21
- Requires-Dist: homeassistant==2025.3.3
21
+ Requires-Dist: homeassistant==2025.4.0
22
22
  Description-Content-Type: text/markdown
23
23
 
24
24
  [![CI](https://github.com/KapJI/homeassistant-stubs/actions/workflows/ci.yaml/badge.svg)](https://github.com/KapJI/homeassistant-stubs/actions/workflows/ci.yaml)