homeassistant-stubs 2025.3.4__py3-none-any.whl → 2025.4.0b1__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 (322) 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/entity.pyi +5 -3
  9. homeassistant-stubs/components/azure_storage/__init__.pyi +1 -1
  10. homeassistant-stubs/components/azure_storage/backup.pyi +1 -1
  11. homeassistant-stubs/components/azure_storage/config_flow.pyi +7 -0
  12. homeassistant-stubs/components/backup/__init__.pyi +2 -2
  13. homeassistant-stubs/components/backup/agent.pyi +1 -1
  14. homeassistant-stubs/components/backup/backup.pyi +1 -1
  15. homeassistant-stubs/components/backup/config_flow.pyi +7 -0
  16. homeassistant-stubs/components/backup/coordinator.pyi +28 -0
  17. homeassistant-stubs/components/backup/diagnostics.pyi +7 -0
  18. homeassistant-stubs/components/backup/entity.pyi +13 -0
  19. homeassistant-stubs/components/backup/http.pyi +1 -0
  20. homeassistant-stubs/components/backup/manager.pyi +8 -3
  21. homeassistant-stubs/components/backup/sensor.pyi +23 -0
  22. homeassistant-stubs/components/bosch_alarm/__init__.pyi +12 -0
  23. homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +31 -0
  24. homeassistant-stubs/components/bosch_alarm/config_flow.pyi +20 -0
  25. homeassistant-stubs/components/bosch_alarm/const.pyi +4 -0
  26. homeassistant-stubs/components/bring/diagnostics.pyi +5 -0
  27. homeassistant-stubs/components/brother/__init__.pyi +1 -0
  28. homeassistant-stubs/components/brother/coordinator.pyi +1 -0
  29. homeassistant-stubs/components/cloud/backup.pyi +3 -3
  30. homeassistant-stubs/components/cloud/http_api.pyi +6 -3
  31. homeassistant-stubs/components/cloud/tts.pyi +2 -2
  32. homeassistant-stubs/components/comelit/__init__.pyi +11 -0
  33. homeassistant-stubs/components/comelit/alarm_control_panel.pyi +44 -0
  34. homeassistant-stubs/components/comelit/binary_sensor.pyi +22 -0
  35. homeassistant-stubs/components/comelit/climate.pyi +60 -0
  36. homeassistant-stubs/components/comelit/config_flow.pyi +28 -0
  37. homeassistant-stubs/components/comelit/const.pyi +7 -0
  38. homeassistant-stubs/components/comelit/coordinator.pyi +38 -0
  39. homeassistant-stubs/components/comelit/cover.pyi +40 -0
  40. homeassistant-stubs/components/comelit/diagnostics.pyi +10 -0
  41. homeassistant-stubs/components/comelit/humidifier.pyi +61 -0
  42. homeassistant-stubs/components/comelit/light.pyi +28 -0
  43. homeassistant-stubs/components/comelit/sensor.pyi +45 -0
  44. homeassistant-stubs/components/comelit/switch.pyi +27 -0
  45. homeassistant-stubs/components/cover/reproduce_state.pyi +17 -6
  46. homeassistant-stubs/components/demo/valve.pyi +30 -0
  47. homeassistant-stubs/components/discovergy/__init__.pyi +1 -1
  48. homeassistant-stubs/components/energy/data.pyi +1 -0
  49. homeassistant-stubs/components/enigma2/config_flow.pyi +1 -0
  50. homeassistant-stubs/components/esphome/__init__.pyi +1 -1
  51. homeassistant-stubs/components/esphome/assist_satellite.pyi +2 -0
  52. homeassistant-stubs/components/esphome/const.pyi +1 -0
  53. homeassistant-stubs/components/esphome/diagnostics.pyi +0 -1
  54. homeassistant-stubs/components/esphome/manager.pyi +1 -1
  55. homeassistant-stubs/components/frontend/__init__.pyi +9 -10
  56. homeassistant-stubs/components/frontend/storage.pyi +2 -1
  57. homeassistant-stubs/components/gios/__init__.pyi +1 -0
  58. homeassistant-stubs/components/gios/config_flow.pyi +1 -0
  59. homeassistant-stubs/components/gios/coordinator.pyi +2 -2
  60. homeassistant-stubs/components/google/calendar.pyi +3 -2
  61. homeassistant-stubs/components/google_drive/backup.pyi +2 -2
  62. homeassistant-stubs/components/habitica/const.pyi +25 -0
  63. homeassistant-stubs/components/habitica/services.pyi +6 -2
  64. homeassistant-stubs/components/heos/const.pyi +1 -0
  65. homeassistant-stubs/components/heos/coordinator.pyi +5 -5
  66. homeassistant-stubs/components/heos/media_player.pyi +18 -8
  67. homeassistant-stubs/components/home_connect/__init__.pyi +6 -17
  68. homeassistant-stubs/components/home_connect/button.pyi +0 -2
  69. homeassistant-stubs/components/home_connect/const.pyi +0 -6
  70. homeassistant-stubs/components/home_connect/entity.pyi +1 -1
  71. homeassistant-stubs/components/home_connect/light.pyi +1 -1
  72. homeassistant-stubs/components/home_connect/number.pyi +1 -1
  73. homeassistant-stubs/components/home_connect/select.pyi +1 -1
  74. homeassistant-stubs/components/home_connect/services.pyi +35 -0
  75. homeassistant-stubs/components/home_connect/switch.pyi +1 -1
  76. homeassistant-stubs/components/home_connect/time.pyi +6 -1
  77. homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +15 -0
  78. homeassistant-stubs/components/homeassistant_hardware/update.pyi +69 -0
  79. homeassistant-stubs/components/homeassistant_hardware/util.pyi +6 -1
  80. homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +1 -0
  81. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +1 -1
  82. homeassistant-stubs/components/homeassistant_sky_connect/const.pyi +10 -0
  83. homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +26 -0
  84. homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +1 -1
  85. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
  86. homeassistant-stubs/components/homeassistant_yellow/const.pyi +4 -0
  87. homeassistant-stubs/components/homeassistant_yellow/update.pyi +26 -0
  88. homeassistant-stubs/components/homee/binary_sensor.pyi +21 -0
  89. homeassistant-stubs/components/homee/button.pyi +1 -0
  90. homeassistant-stubs/components/homee/cover.pyi +1 -0
  91. homeassistant-stubs/components/homee/light.pyi +1 -0
  92. homeassistant-stubs/components/homee/lock.pyi +25 -0
  93. homeassistant-stubs/components/homee/number.pyi +1 -0
  94. homeassistant-stubs/components/homee/select.pyi +23 -0
  95. homeassistant-stubs/components/homee/sensor.pyi +2 -0
  96. homeassistant-stubs/components/homee/switch.pyi +2 -0
  97. homeassistant-stubs/components/homee/valve.pyi +1 -0
  98. homeassistant-stubs/components/homekit/__init__.pyi +3 -1
  99. homeassistant-stubs/components/homekit/accessories.pyi +1 -0
  100. homeassistant-stubs/components/homekit/type_switches.pyi +6 -0
  101. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +7 -7
  102. homeassistant-stubs/components/incomfort/config_flow.pyi +1 -0
  103. homeassistant-stubs/components/iron_os/coordinator.pyi +2 -0
  104. homeassistant-stubs/components/iron_os/number.pyi +2 -0
  105. homeassistant-stubs/components/iron_os/select.pyi +3 -0
  106. homeassistant-stubs/components/jewish_calendar/__init__.pyi +9 -2
  107. homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +4 -4
  108. homeassistant-stubs/components/jewish_calendar/const.pyi +3 -0
  109. homeassistant-stubs/components/jewish_calendar/entity.pyi +2 -2
  110. homeassistant-stubs/components/jewish_calendar/sensor.pyi +5 -6
  111. homeassistant-stubs/components/jewish_calendar/service.pyi +10 -0
  112. homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -0
  113. homeassistant-stubs/components/linkplay/entity.pyi +0 -1
  114. homeassistant-stubs/components/linkplay/media_player.pyi +3 -2
  115. homeassistant-stubs/components/linkplay/utils.pyi +0 -32
  116. homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
  117. homeassistant-stubs/components/mastodon/config_flow.pyi +2 -1
  118. homeassistant-stubs/components/mastodon/const.pyi +0 -7
  119. homeassistant-stubs/components/mastodon/coordinator.pyi +5 -5
  120. homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -1
  121. homeassistant-stubs/components/mastodon/entity.pyi +1 -1
  122. homeassistant-stubs/components/mastodon/notify.pyi +3 -2
  123. homeassistant-stubs/components/mastodon/sensor.pyi +2 -3
  124. homeassistant-stubs/components/mastodon/services.pyi +1 -0
  125. homeassistant-stubs/components/mastodon/utils.pyi +3 -2
  126. homeassistant-stubs/components/mcp/coordinator.pyi +2 -9
  127. homeassistant-stubs/components/mcp_server/config_flow.pyi +1 -1
  128. homeassistant-stubs/components/mcp_server/const.pyi +1 -2
  129. homeassistant-stubs/components/mcp_server/server.pyi +1 -0
  130. homeassistant-stubs/components/modbus/__init__.pyi +1 -1
  131. homeassistant-stubs/components/modbus/climate.pyi +6 -2
  132. homeassistant-stubs/components/modbus/const.pyi +10 -0
  133. homeassistant-stubs/components/mqtt/config_flow.pyi +95 -7
  134. homeassistant-stubs/components/mqtt/const.pyi +65 -0
  135. homeassistant-stubs/components/mqtt/cover.pyi +2 -0
  136. homeassistant-stubs/components/mqtt/entity.pyi +4 -4
  137. homeassistant-stubs/components/mqtt/lawn_mower.pyi +1 -2
  138. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -48
  139. homeassistant-stubs/components/mqtt/light/schema_json.pyi +1 -14
  140. homeassistant-stubs/components/mqtt/light/schema_template.pyi +1 -12
  141. homeassistant-stubs/components/mqtt/models.pyi +25 -1
  142. homeassistant-stubs/components/mqtt/sensor.pyi +6 -5
  143. homeassistant-stubs/components/mqtt/util.pyi +2 -0
  144. homeassistant-stubs/components/mysensors/__init__.pyi +1 -1
  145. homeassistant-stubs/components/mysensors/binary_sensor.pyi +0 -1
  146. homeassistant-stubs/components/mysensors/climate.pyi +0 -1
  147. homeassistant-stubs/components/mysensors/const.pyi +0 -1
  148. homeassistant-stubs/components/mysensors/cover.pyi +1 -2
  149. homeassistant-stubs/components/mysensors/device_tracker.pyi +0 -1
  150. homeassistant-stubs/components/mysensors/gateway.pyi +1 -1
  151. homeassistant-stubs/components/mysensors/helpers.pyi +1 -3
  152. homeassistant-stubs/components/mysensors/light.pyi +4 -5
  153. homeassistant-stubs/components/mysensors/remote.pyi +0 -1
  154. homeassistant-stubs/components/mysensors/sensor.pyi +0 -1
  155. homeassistant-stubs/components/mysensors/switch.pyi +1 -2
  156. homeassistant-stubs/components/mysensors/text.pyi +0 -1
  157. homeassistant-stubs/components/nam/button.pyi +2 -0
  158. homeassistant-stubs/components/nam/const.pyi +1 -0
  159. homeassistant-stubs/components/nam/sensor.pyi +2 -2
  160. homeassistant-stubs/components/nest/media_source.pyi +5 -0
  161. homeassistant-stubs/components/nextdns/__init__.pyi +1 -1
  162. homeassistant-stubs/components/nextdns/button.pyi +2 -0
  163. homeassistant-stubs/components/nextdns/config_flow.pyi +1 -0
  164. homeassistant-stubs/components/nextdns/switch.pyi +1 -0
  165. homeassistant-stubs/components/nut/__init__.pyi +1 -0
  166. homeassistant-stubs/components/nut/button.pyi +14 -0
  167. homeassistant-stubs/components/nut/entity.pyi +19 -0
  168. homeassistant-stubs/components/nut/sensor.pyi +8 -13
  169. homeassistant-stubs/components/nut/switch.pyi +18 -0
  170. homeassistant-stubs/components/onboarding/views.pyi +1 -0
  171. homeassistant-stubs/components/onedrive/__init__.pyi +4 -0
  172. homeassistant-stubs/components/onedrive/backup.pyi +1 -1
  173. homeassistant-stubs/components/onedrive/services.pyi +15 -0
  174. homeassistant-stubs/components/openai_conversation/__init__.pyi +5 -1
  175. homeassistant-stubs/components/openai_conversation/config_flow.pyi +5 -2
  176. homeassistant-stubs/components/openai_conversation/const.pyi +22 -11
  177. homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -7
  178. homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +1 -0
  179. homeassistant-stubs/components/overkiz/water_heater/atlantic_domestic_hot_water_production_v2_io_component.pyi +41 -0
  180. homeassistant-stubs/components/purpleair/__init__.pyi +5 -10
  181. homeassistant-stubs/components/purpleair/const.pyi +6 -4
  182. homeassistant-stubs/components/purpleair/coordinator.pyi +3 -2
  183. homeassistant-stubs/components/purpleair/diagnostics.pyi +2 -4
  184. homeassistant-stubs/components/purpleair/entity.pyi +2 -3
  185. homeassistant-stubs/components/purpleair/sensor.pyi +4 -5
  186. homeassistant-stubs/components/pyload/__init__.pyi +12 -0
  187. homeassistant-stubs/components/pyload/button.pyi +32 -0
  188. homeassistant-stubs/components/pyload/config_flow.pyi +23 -0
  189. homeassistant-stubs/components/pyload/const.pyi +6 -0
  190. homeassistant-stubs/components/pyload/coordinator.pyi +33 -0
  191. homeassistant-stubs/components/pyload/diagnostics.pyi +10 -0
  192. homeassistant-stubs/components/pyload/entity.pyi +13 -0
  193. homeassistant-stubs/components/pyload/sensor.pyi +33 -0
  194. homeassistant-stubs/components/pyload/switch.pyi +37 -0
  195. homeassistant-stubs/components/qbus/climate.pyi +41 -0
  196. homeassistant-stubs/components/qbus/light.pyi +3 -3
  197. homeassistant-stubs/components/recorder/const.pyi +1 -0
  198. homeassistant-stubs/components/recorder/core.pyi +1 -2
  199. homeassistant-stubs/components/recorder/db_schema.pyi +3 -1
  200. homeassistant-stubs/components/recorder/migration.pyi +16 -2
  201. homeassistant-stubs/components/recorder/models/__init__.pyi +2 -2
  202. homeassistant-stubs/components/recorder/models/statistics.pyi +10 -2
  203. homeassistant-stubs/components/recorder/statistics.pyi +27 -9
  204. homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +5 -3
  205. homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
  206. homeassistant-stubs/components/remote_calendar/__init__.pyi +11 -0
  207. homeassistant-stubs/components/remote_calendar/calendar.pyi +26 -0
  208. homeassistant-stubs/components/remote_calendar/config_flow.pyi +13 -0
  209. homeassistant-stubs/components/remote_calendar/const.pyi +2 -0
  210. homeassistant-stubs/components/remote_calendar/coordinator.pyi +20 -0
  211. homeassistant-stubs/components/remote_calendar/diagnostics.pyi +5 -0
  212. homeassistant-stubs/components/renault/config_flow.pyi +1 -0
  213. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  214. homeassistant-stubs/components/reolink/binary_sensor.pyi +17 -1
  215. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  216. homeassistant-stubs/components/reolink/const.pyi +1 -0
  217. homeassistant-stubs/components/reolink/host.pyi +4 -4
  218. homeassistant-stubs/components/reolink/number.pyi +21 -1
  219. homeassistant-stubs/components/reolink/select.pyi +17 -1
  220. homeassistant-stubs/components/reolink/update.pyi +2 -1
  221. homeassistant-stubs/components/reolink/util.pyi +7 -0
  222. homeassistant-stubs/components/roborock/__init__.pyi +5 -3
  223. homeassistant-stubs/components/roborock/binary_sensor.pyi +4 -1
  224. homeassistant-stubs/components/roborock/button.pyi +11 -1
  225. homeassistant-stubs/components/roborock/config_flow.pyi +7 -3
  226. homeassistant-stubs/components/roborock/const.pyi +7 -1
  227. homeassistant-stubs/components/roborock/coordinator.pyi +18 -3
  228. homeassistant-stubs/components/roborock/entity.pyi +3 -1
  229. homeassistant-stubs/components/roborock/image.pyi +2 -7
  230. homeassistant-stubs/components/roborock/models.pyi +7 -0
  231. homeassistant-stubs/components/roborock/number.pyi +1 -0
  232. homeassistant-stubs/components/roborock/select.pyi +7 -5
  233. homeassistant-stubs/components/roborock/sensor.pyi +14 -1
  234. homeassistant-stubs/components/roborock/switch.pyi +2 -0
  235. homeassistant-stubs/components/roborock/time.pyi +1 -0
  236. homeassistant-stubs/components/roborock/vacuum.pyi +1 -1
  237. homeassistant-stubs/components/sensor/const.pyi +2 -0
  238. homeassistant-stubs/components/sensor/recorder.pyi +15 -3
  239. homeassistant-stubs/components/shelly/__init__.pyi +2 -2
  240. homeassistant-stubs/components/shelly/bluetooth/__init__.pyi +4 -2
  241. homeassistant-stubs/components/shelly/button.pyi +22 -7
  242. homeassistant-stubs/components/shelly/climate.pyi +1 -1
  243. homeassistant-stubs/components/shelly/config_flow.pyi +5 -5
  244. homeassistant-stubs/components/shelly/const.pyi +0 -1
  245. homeassistant-stubs/components/shelly/coordinator.pyi +5 -1
  246. homeassistant-stubs/components/shelly/diagnostics.pyi +1 -2
  247. homeassistant-stubs/components/shelly/entity.pyi +1 -3
  248. homeassistant-stubs/components/shelly/event.pyi +1 -1
  249. homeassistant-stubs/components/shelly/number.pyi +1 -1
  250. homeassistant-stubs/components/shelly/sensor.pyi +2 -2
  251. homeassistant-stubs/components/shelly/switch.pyi +14 -14
  252. homeassistant-stubs/components/shelly/update.pyi +1 -1
  253. homeassistant-stubs/components/shelly/utils.pyi +6 -2
  254. homeassistant-stubs/components/skybell/config_flow.pyi +3 -0
  255. homeassistant-stubs/components/smlight/__init__.pyi +0 -2
  256. homeassistant-stubs/components/smlight/sensor.pyi +5 -2
  257. homeassistant-stubs/components/smlight/update.pyi +0 -1
  258. homeassistant-stubs/components/squeezebox/browse_media.pyi +6 -11
  259. homeassistant-stubs/components/squeezebox/button.pyi +31 -0
  260. homeassistant-stubs/components/squeezebox/entity.pyi +8 -2
  261. homeassistant-stubs/components/squeezebox/media_player.pyi +3 -5
  262. homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -7
  263. homeassistant-stubs/components/synology_dsm/backup.pyi +3 -4
  264. homeassistant-stubs/components/synology_dsm/binary_sensor.pyi +2 -5
  265. homeassistant-stubs/components/synology_dsm/button.pyi +2 -3
  266. homeassistant-stubs/components/synology_dsm/camera.pyi +2 -4
  267. homeassistant-stubs/components/synology_dsm/config_flow.pyi +3 -2
  268. homeassistant-stubs/components/synology_dsm/coordinator.pyi +15 -5
  269. homeassistant-stubs/components/synology_dsm/diagnostics.pyi +3 -4
  270. homeassistant-stubs/components/synology_dsm/media_source.pyi +3 -1
  271. homeassistant-stubs/components/synology_dsm/repairs.pyi +2 -3
  272. homeassistant-stubs/components/synology_dsm/sensor.pyi +3 -5
  273. homeassistant-stubs/components/synology_dsm/service.pyi +1 -1
  274. homeassistant-stubs/components/synology_dsm/switch.pyi +2 -4
  275. homeassistant-stubs/components/synology_dsm/update.pyi +2 -5
  276. homeassistant-stubs/components/tibber/coordinator.pyi +1 -1
  277. homeassistant-stubs/components/todo/intent.pyi +8 -0
  278. homeassistant-stubs/components/trafikverket_ferry/config_flow.pyi +1 -0
  279. homeassistant-stubs/components/trafikverket_weatherstation/config_flow.pyi +3 -0
  280. homeassistant-stubs/components/tts/__init__.pyi +66 -51
  281. homeassistant-stubs/components/tts/entity.pyi +54 -0
  282. homeassistant-stubs/components/tts/media_source.pyi +1 -1
  283. homeassistant-stubs/components/update/__init__.pyi +2 -2
  284. homeassistant-stubs/components/usb/__init__.pyi +0 -3
  285. homeassistant-stubs/components/vodafone_station/__init__.pyi +11 -0
  286. homeassistant-stubs/components/vodafone_station/button.pyi +31 -0
  287. homeassistant-stubs/components/vodafone_station/config_flow.pyi +29 -0
  288. homeassistant-stubs/components/vodafone_station/const.pyi +9 -0
  289. homeassistant-stubs/components/vodafone_station/coordinator.pyi +43 -0
  290. homeassistant-stubs/components/vodafone_station/device_tracker.pyi +30 -0
  291. homeassistant-stubs/components/vodafone_station/diagnostics.pyi +10 -0
  292. homeassistant-stubs/components/vodafone_station/helpers.pyi +8 -0
  293. homeassistant-stubs/components/vodafone_station/sensor.pyi +38 -0
  294. homeassistant-stubs/components/zwave_js/__init__.pyi +5 -9
  295. homeassistant-stubs/components/zwave_js/api.pyi +15 -0
  296. homeassistant-stubs/components/zwave_js/config_flow.pyi +0 -1
  297. homeassistant-stubs/config_entries.pyi +2 -5
  298. homeassistant-stubs/helpers/backup.pyi +4 -1
  299. homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +14 -0
  300. homeassistant-stubs/helpers/config_validation.pyi +5 -2
  301. homeassistant-stubs/helpers/frame.pyi +14 -5
  302. homeassistant-stubs/helpers/intent.pyi +13 -4
  303. homeassistant-stubs/helpers/llm.pyi +7 -1
  304. homeassistant-stubs/helpers/selector.pyi +1 -0
  305. homeassistant-stubs/helpers/template.pyi +14 -1
  306. homeassistant-stubs/loader.pyi +18 -8
  307. homeassistant-stubs/scripts/check_config.pyi +0 -1
  308. homeassistant-stubs/util/logging.pyi +16 -1
  309. homeassistant-stubs/util/unit_conversion.pyi +3 -0
  310. homeassistant-stubs/util/unit_system.pyi +12 -10
  311. homeassistant-stubs/util/yaml/__init__.pyi +3 -4
  312. homeassistant-stubs/util/yaml/dumper.pyi +2 -8
  313. homeassistant-stubs/util/yaml/input.pyi +2 -9
  314. homeassistant-stubs/util/yaml/loader.pyi +4 -72
  315. homeassistant-stubs/util/yaml/objects.pyi +2 -26
  316. {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/METADATA +2 -2
  317. {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/RECORD +319 -258
  318. homeassistant-stubs/components/mcp_server/llm_api.pyi +0 -15
  319. homeassistant-stubs/components/synology_dsm/models.pyi +0 -10
  320. homeassistant-stubs/util/yaml/const.pyi +0 -1
  321. {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/WHEEL +0 -0
  322. {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0b1.dist-info}/licenses/LICENSE +0 -0
@@ -1,19 +1,21 @@
1
1
  import asyncio
2
2
  from .const import DEFAULT_CACHE_DIR as DEFAULT_CACHE_DIR, TtsAudioType as TtsAudioType
3
+ from .entity import TextToSpeechEntity as TextToSpeechEntity
3
4
  from .legacy import PLATFORM_SCHEMA as PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE as PLATFORM_SCHEMA_BASE, Provider as Provider
4
5
  from .media_source import generate_media_source_id as generate_media_source_id
5
6
  from .models import Voice as Voice
6
7
  from _typeshed import Incomplete
7
8
  from aiohttp import web
8
- from collections.abc import Mapping
9
+ from collections.abc import AsyncGenerator
10
+ from dataclasses import dataclass
11
+ from datetime import datetime
9
12
  from homeassistant.components.http import HomeAssistantView
10
- from homeassistant.core import HomeAssistant, callback
11
- from homeassistant.helpers.restore_state import RestoreEntity
13
+ from homeassistant.core import CALLBACK_TYPE, Event, HomeAssistant, callback
12
14
  from homeassistant.helpers.typing import ConfigType
13
15
  from propcache.api import cached_property
14
- from typing import Any, TypedDict, final
16
+ from typing import Any
15
17
 
16
- __all__ = ['ATTR_AUDIO_OUTPUT', 'ATTR_PREFERRED_FORMAT', 'ATTR_PREFERRED_SAMPLE_BYTES', 'ATTR_PREFERRED_SAMPLE_CHANNELS', 'ATTR_PREFERRED_SAMPLE_RATE', 'CONF_LANG', 'DEFAULT_CACHE_DIR', 'PLATFORM_SCHEMA', 'PLATFORM_SCHEMA_BASE', 'Provider', 'SampleFormat', 'TtsAudioType', 'Voice', 'async_default_engine', 'async_get_media_source_audio', 'async_support_options', 'generate_media_source_id']
18
+ __all__ = ['ATTR_AUDIO_OUTPUT', 'ATTR_PREFERRED_FORMAT', 'ATTR_PREFERRED_SAMPLE_BYTES', 'ATTR_PREFERRED_SAMPLE_CHANNELS', 'ATTR_PREFERRED_SAMPLE_RATE', 'CONF_LANG', 'DEFAULT_CACHE_DIR', 'PLATFORM_SCHEMA', 'PLATFORM_SCHEMA_BASE', 'Provider', 'ResultStream', 'SampleFormat', 'TextToSpeechEntity', 'TtsAudioType', 'Voice', 'async_default_engine', 'async_get_media_source_audio', 'generate_media_source_id']
17
19
 
18
20
  ATTR_AUDIO_OUTPUT: str
19
21
  ATTR_PREFERRED_FORMAT: str
@@ -22,54 +24,68 @@ ATTR_PREFERRED_SAMPLE_CHANNELS: str
22
24
  ATTR_PREFERRED_SAMPLE_BYTES: str
23
25
  CONF_LANG: str
24
26
 
25
- class TTSCache(TypedDict):
26
- filename: str
27
- voice: bytes
28
- pending: asyncio.Task | None
27
+ class TTSCache:
28
+ _result_data: bytes | None
29
+ _partial_data: list[bytes] | None
30
+ _loading_error: Exception | None
31
+ _consumers: list[asyncio.Queue[bytes | None]] | None
32
+ cache_key: Incomplete
33
+ extension: Incomplete
34
+ last_used: Incomplete
35
+ _data_gen: Incomplete
36
+ def __init__(self, cache_key: str, extension: str, data_gen: AsyncGenerator[bytes]) -> None: ...
37
+ async def async_load_data(self) -> bytes: ...
38
+ async def async_stream_data(self) -> AsyncGenerator[bytes]: ...
29
39
 
30
40
  @callback
31
41
  def async_default_engine(hass: HomeAssistant) -> str | None: ...
32
- async def async_support_options(hass: HomeAssistant, engine: str, language: str | None = None, options: dict | None = None) -> bool: ...
33
42
  async def async_get_media_source_audio(hass: HomeAssistant, media_source_id: str) -> tuple[str, bytes]: ...
34
43
 
35
- class TextToSpeechEntity(RestoreEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
36
- _attr_should_poll: bool
37
- __last_tts_loaded: str | None
38
- _attr_default_language: str
39
- _attr_default_options: Mapping[str, Any] | None
40
- _attr_supported_languages: list[str]
41
- _attr_supported_options: list[str] | None
42
- @property
43
- @final
44
- def state(self) -> str | None: ...
44
+ @dataclass
45
+ class ResultStream:
46
+ token: str
47
+ extension: str
48
+ content_type: str
49
+ engine: str
50
+ use_file_cache: bool
51
+ language: str
52
+ options: dict
53
+ _manager: SpeechManager
45
54
  @cached_property
46
- def supported_languages(self) -> list[str]: ...
55
+ def url(self) -> str: ...
47
56
  @cached_property
48
- def default_language(self) -> str: ...
49
- @cached_property
50
- def supported_options(self) -> list[str] | None: ...
51
- @cached_property
52
- def default_options(self) -> Mapping[str, Any] | None: ...
57
+ def _result_cache(self) -> asyncio.Future[TTSCache]: ...
58
+ @callback
59
+ def async_set_message_cache(self, cache: TTSCache) -> None: ...
53
60
  @callback
54
- def async_get_supported_voices(self, language: str) -> list[Voice] | None: ...
55
- async def async_internal_added_to_hass(self) -> None: ...
56
- async def async_speak(self, media_player_entity_id: list[str], message: str, cache: bool, language: str | None = None, options: dict | None = None) -> None: ...
57
- @final
58
- async def internal_async_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
59
- def get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
60
- async def async_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
61
+ def async_set_message(self, message: str) -> None: ...
62
+ async def async_stream_result(self) -> AsyncGenerator[bytes]: ...
63
+
64
+ class MemcacheCleanup:
65
+ unsub: CALLBACK_TYPE | None
66
+ hass: Incomplete
67
+ maxage: Incomplete
68
+ memcache: Incomplete
69
+ cleanup_job: Incomplete
70
+ def __init__(self, hass: HomeAssistant, maxage: float, memcache: dict[str, TTSCache]) -> None: ...
71
+ @callback
72
+ def schedule(self) -> None: ...
73
+ @callback
74
+ def _on_hass_stop(self, event: Event) -> None: ...
75
+ @callback
76
+ def _cleanup(self, _now: datetime) -> None: ...
61
77
 
62
78
  class SpeechManager:
63
79
  hass: Incomplete
64
80
  providers: dict[str, Provider]
65
- use_cache: Incomplete
81
+ use_file_cache: Incomplete
66
82
  cache_dir: Incomplete
67
- time_memory: Incomplete
83
+ memory_cache_maxage: Incomplete
68
84
  file_cache: dict[str, str]
69
85
  mem_cache: dict[str, TTSCache]
70
- filename_to_token: dict[str, str]
71
- token_to_filename: dict[str, str]
72
- def __init__(self, hass: HomeAssistant, use_cache: bool, cache_dir: str, time_memory: int) -> None: ...
86
+ token_to_stream: dict[str, ResultStream]
87
+ memcache_cleanup: Incomplete
88
+ def __init__(self, hass: HomeAssistant, use_file_cache: bool, cache_dir: str, memory_cache_maxage: int) -> None: ...
73
89
  def _init_cache(self) -> dict[str, str]: ...
74
90
  async def async_init_cache(self) -> None: ...
75
91
  async def async_clear_cache(self) -> None: ...
@@ -77,16 +93,15 @@ class SpeechManager:
77
93
  def async_register_legacy_engine(self, engine: str, provider: Provider, config: ConfigType) -> None: ...
78
94
  @callback
79
95
  def process_options(self, engine_instance: TextToSpeechEntity | Provider, language: str | None, options: dict | None) -> tuple[str, dict[str, Any]]: ...
80
- async def async_get_url_path(self, engine: str, message: str, cache: bool | None = None, language: str | None = None, options: dict | None = None) -> str: ...
81
- async def async_get_tts_audio(self, engine: str, message: str, cache: bool | None = None, language: str | None = None, options: dict | None = None) -> tuple[str, bytes]: ...
82
96
  @callback
83
- def _generate_cache_key(self, message: str, language: str, options: dict | None, engine: str) -> str: ...
84
- async def _async_get_tts_audio(self, engine_instance: TextToSpeechEntity | Provider, cache_key: str, message: str, cache: bool, language: str, options: dict[str, Any]) -> str: ...
85
- async def _async_save_tts_audio(self, cache_key: str, filename: str, data: bytes) -> None: ...
86
- async def _async_file_to_mem(self, cache_key: str) -> None: ...
97
+ def async_create_result_stream(self, engine: str, message: str | None = None, use_file_cache: bool | None = None, language: str | None = None, options: dict | None = None) -> ResultStream: ...
98
+ @callback
99
+ def async_cache_message_in_memory(self, engine: str, message: str, use_file_cache: bool | None = None, language: str | None = None, options: dict | None = None) -> TTSCache: ...
87
100
  @callback
88
- def _async_store_to_memcache(self, cache_key: str, filename: str, data: bytes) -> None: ...
89
- async def async_read_tts(self, token: str) -> tuple[str | None, bytes]: ...
101
+ def _async_ensure_cached_in_memory(self, engine: str, engine_instance: TextToSpeechEntity | Provider, message: str, use_file_cache: bool, language: str, options: dict) -> TTSCache: ...
102
+ async def _load_data_into_cache(self, cache: TTSCache, engine_instance: TextToSpeechEntity | Provider, message: str, store_to_disk: bool, language: str, options: dict) -> None: ...
103
+ async def _async_generate_tts_audio(self, engine_instance: TextToSpeechEntity | Provider, message: str, language: str, options: dict[str, Any]) -> AsyncGenerator[bytes]: ...
104
+ async def _async_load_file(self, cache_key: str) -> AsyncGenerator[bytes]: ...
90
105
  @staticmethod
91
106
  def write_tags(filename: str, data: bytes, engine_name: str, message: str, language: str, options: dict | None) -> bytes: ...
92
107
 
@@ -94,17 +109,17 @@ class TextToSpeechUrlView(HomeAssistantView):
94
109
  requires_auth: bool
95
110
  url: str
96
111
  name: str
97
- tts: Incomplete
98
- def __init__(self, tts: SpeechManager) -> None: ...
112
+ manager: Incomplete
113
+ def __init__(self, manager: SpeechManager) -> None: ...
99
114
  async def post(self, request: web.Request) -> web.Response: ...
100
115
 
101
116
  class TextToSpeechView(HomeAssistantView):
102
117
  requires_auth: bool
103
118
  url: str
104
119
  name: str
105
- tts: Incomplete
106
- def __init__(self, tts: SpeechManager) -> None: ...
107
- async def get(self, request: web.Request, filename: str) -> web.Response: ...
120
+ manager: Incomplete
121
+ def __init__(self, manager: SpeechManager) -> None: ...
122
+ async def get(self, request: web.Request, token: str) -> web.StreamResponse: ...
108
123
 
109
124
  # Names in __all__ with no definition:
110
125
  # SampleFormat
@@ -0,0 +1,54 @@
1
+ from .const import TtsAudioType as TtsAudioType
2
+ from .media_source import generate_media_source_id as generate_media_source_id
3
+ from .models import Voice as Voice
4
+ from _typeshed import Incomplete
5
+ from collections.abc import AsyncGenerator, Mapping
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.media_player import ATTR_MEDIA_ANNOUNCE as ATTR_MEDIA_ANNOUNCE, ATTR_MEDIA_CONTENT_ID as ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE as ATTR_MEDIA_CONTENT_TYPE, MediaType as MediaType, SERVICE_PLAY_MEDIA as SERVICE_PLAY_MEDIA
8
+ from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, STATE_UNAVAILABLE as STATE_UNAVAILABLE, STATE_UNKNOWN as STATE_UNKNOWN
9
+ from homeassistant.core import callback as callback
10
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
+ from homeassistant.helpers.restore_state import RestoreEntity as RestoreEntity
12
+ from propcache.api import cached_property
13
+ from typing import Any, final
14
+
15
+ CACHED_PROPERTIES_WITH_ATTR_: Incomplete
16
+
17
+ @dataclass
18
+ class TTSAudioRequest:
19
+ language: str
20
+ options: dict[str, Any]
21
+ message_gen: AsyncGenerator[str]
22
+
23
+ @dataclass
24
+ class TTSAudioResponse:
25
+ extension: str
26
+ data_gen: AsyncGenerator[bytes]
27
+
28
+ class TextToSpeechEntity(RestoreEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
29
+ _attr_should_poll: bool
30
+ __last_tts_loaded: str | None
31
+ _attr_default_language: str
32
+ _attr_default_options: Mapping[str, Any] | None
33
+ _attr_supported_languages: list[str]
34
+ _attr_supported_options: list[str] | None
35
+ @property
36
+ @final
37
+ def state(self) -> str | None: ...
38
+ @cached_property
39
+ def supported_languages(self) -> list[str]: ...
40
+ @cached_property
41
+ def default_language(self) -> str: ...
42
+ @cached_property
43
+ def supported_options(self) -> list[str] | None: ...
44
+ @cached_property
45
+ def default_options(self) -> Mapping[str, Any] | None: ...
46
+ @callback
47
+ def async_get_supported_voices(self, language: str) -> list[Voice] | None: ...
48
+ async def async_internal_added_to_hass(self) -> None: ...
49
+ async def async_speak(self, media_player_entity_id: list[str], message: str, cache: bool, language: str | None = None, options: dict | None = None) -> None: ...
50
+ @final
51
+ async def internal_async_stream_tts_audio(self, request: TTSAudioRequest) -> TTSAudioResponse: ...
52
+ async def async_stream_tts_audio(self, request: TTSAudioRequest) -> TTSAudioResponse: ...
53
+ def get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
54
+ async def async_get_tts_audio(self, message: str, language: str, options: dict[str, Any]) -> TtsAudioType: ...
@@ -18,7 +18,7 @@ class MediaSourceOptions(TypedDict):
18
18
  message: str
19
19
  language: str | None
20
20
  options: dict | None
21
- cache: bool | None
21
+ use_file_cache: bool | None
22
22
 
23
23
  @callback
24
24
  def media_source_id_to_kwargs(media_source_id: str) -> MediaSourceOptions: ...
@@ -30,7 +30,7 @@ class UpdateEntity(RestoreEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_
30
30
  _attr_installed_version: str | None
31
31
  _attr_device_class: UpdateDeviceClass | None
32
32
  _attr_display_precision: int
33
- _attr_in_progress: bool | int
33
+ _attr_in_progress: bool
34
34
  _attr_latest_version: str | None
35
35
  _attr_release_summary: str | None
36
36
  _attr_release_url: str | None
@@ -54,7 +54,7 @@ class UpdateEntity(RestoreEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_
54
54
  @property
55
55
  def entity_picture(self) -> str | None: ...
56
56
  @cached_property
57
- def in_progress(self) -> bool | int | None: ...
57
+ def in_progress(self) -> bool | None: ...
58
58
  @cached_property
59
59
  def latest_version(self) -> str | None: ...
60
60
  @cached_property
@@ -40,9 +40,6 @@ class USBDiscovery:
40
40
  @hass_callback
41
41
  def async_stop(self, event: Event) -> None: ...
42
42
  @hass_callback
43
- def _async_supports_monitoring(self) -> bool: ...
44
- async def _async_start_monitor(self) -> None: ...
45
- @hass_callback
46
43
  def _async_start_monitor_polling(self) -> None: ...
47
44
  async def _async_start_aiousbwatcher(self) -> None: ...
48
45
  @hass_callback
@@ -0,0 +1,11 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import VodafoneConfigEntry as VodafoneConfigEntry, VodafoneStationRouter as VodafoneStationRouter
3
+ from _typeshed import Incomplete
4
+ from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME, Platform as Platform
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+
7
+ PLATFORMS: Incomplete
8
+
9
+ async def async_setup_entry(hass: HomeAssistant, entry: VodafoneConfigEntry) -> bool: ...
10
+ async def async_unload_entry(hass: HomeAssistant, entry: VodafoneConfigEntry) -> bool: ...
11
+ async def update_listener(hass: HomeAssistant, entry: VodafoneConfigEntry) -> None: ...
@@ -0,0 +1,31 @@
1
+ from .const import DOMAIN as DOMAIN, _LOGGER as _LOGGER
2
+ from .coordinator import VodafoneConfigEntry as VodafoneConfigEntry, VodafoneStationRouter as VodafoneStationRouter
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.button import ButtonDeviceClass as ButtonDeviceClass, ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
7
+ from homeassistant.const import EntityCategory as EntityCategory
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
12
+ from typing import Any, Final
13
+
14
+ PARALLEL_UPDATES: int
15
+
16
+ @dataclass(frozen=True, kw_only=True)
17
+ class VodafoneStationEntityDescription(ButtonEntityDescription):
18
+ press_action: Callable[[VodafoneStationRouter], Any]
19
+ is_suitable: Callable[[dict], bool]
20
+
21
+ BUTTON_TYPES: Final[Incomplete]
22
+
23
+ async def async_setup_entry(hass: HomeAssistant, entry: VodafoneConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
24
+
25
+ class VodafoneStationSensorEntity(CoordinatorEntity[VodafoneStationRouter], ButtonEntity):
26
+ _attr_has_entity_name: bool
27
+ entity_description: VodafoneStationEntityDescription
28
+ _attr_device_info: Incomplete
29
+ _attr_unique_id: Incomplete
30
+ def __init__(self, coordinator: VodafoneStationRouter, description: VodafoneStationEntityDescription) -> None: ...
31
+ async def async_press(self) -> None: ...
@@ -0,0 +1,29 @@
1
+ import voluptuous as vol
2
+ from .const import DEFAULT_HOST as DEFAULT_HOST, DEFAULT_USERNAME as DEFAULT_USERNAME, DOMAIN as DOMAIN, _LOGGER as _LOGGER
3
+ from .coordinator import VodafoneConfigEntry as VodafoneConfigEntry
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Mapping
6
+ from homeassistant.components.device_tracker import CONF_CONSIDER_HOME as CONF_CONSIDER_HOME, DEFAULT_CONSIDER_HOME as DEFAULT_CONSIDER_HOME
7
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
8
+ from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
9
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
10
+ from typing import Any
11
+
12
+ def user_form_schema(user_input: dict[str, Any] | None) -> vol.Schema: ...
13
+
14
+ STEP_REAUTH_DATA_SCHEMA: Incomplete
15
+
16
+ async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, str]: ...
17
+
18
+ class VodafoneStationConfigFlow(ConfigFlow, domain=DOMAIN):
19
+ VERSION: int
20
+ @staticmethod
21
+ @callback
22
+ def async_get_options_flow(config_entry: VodafoneConfigEntry) -> VodafoneStationOptionsFlowHandler: ...
23
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
24
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
25
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
26
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
27
+
28
+ class VodafoneStationOptionsFlowHandler(OptionsFlow):
29
+ async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -0,0 +1,9 @@
1
+ from _typeshed import Incomplete
2
+
3
+ _LOGGER: Incomplete
4
+ DOMAIN: str
5
+ SCAN_INTERVAL: int
6
+ DEFAULT_DEVICE_NAME: str
7
+ DEFAULT_HOST: str
8
+ DEFAULT_USERNAME: str
9
+ LINE_TYPES: Incomplete
@@ -0,0 +1,43 @@
1
+ from .const import DOMAIN as DOMAIN, SCAN_INTERVAL as SCAN_INTERVAL, _LOGGER as _LOGGER
2
+ from .helpers import cleanup_device_tracker as cleanup_device_tracker
3
+ from _typeshed import Incomplete
4
+ from aiovodafone import VodafoneStationDevice as VodafoneStationDevice
5
+ from dataclasses import dataclass
6
+ from datetime import datetime
7
+ from homeassistant.components.device_tracker import DEFAULT_CONSIDER_HOME as DEFAULT_CONSIDER_HOME
8
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
11
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
12
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
13
+ from typing import Any
14
+
15
+ CONSIDER_HOME_SECONDS: Incomplete
16
+ type VodafoneConfigEntry = ConfigEntry[VodafoneStationRouter]
17
+
18
+ @dataclass(slots=True)
19
+ class VodafoneStationDeviceInfo:
20
+ device: VodafoneStationDevice
21
+ update_time: datetime | None
22
+ home: bool
23
+
24
+ @dataclass(slots=True)
25
+ class UpdateCoordinatorDataType:
26
+ devices: dict[str, VodafoneStationDeviceInfo]
27
+ sensors: dict[str, Any]
28
+
29
+ class VodafoneStationRouter(DataUpdateCoordinator[UpdateCoordinatorDataType]):
30
+ config_entry: VodafoneConfigEntry
31
+ _host: Incomplete
32
+ api: Incomplete
33
+ _id: Incomplete
34
+ previous_devices: Incomplete
35
+ def __init__(self, hass: HomeAssistant, host: str, username: str, password: str, config_entry: VodafoneConfigEntry) -> None: ...
36
+ def _calculate_update_time_and_consider_home(self, device: VodafoneStationDevice, utc_point_in_time: datetime) -> tuple[datetime | None, bool]: ...
37
+ async def _async_update_data(self) -> UpdateCoordinatorDataType: ...
38
+ @property
39
+ def signal_device_new(self) -> str: ...
40
+ @property
41
+ def serial_number(self) -> str: ...
42
+ @property
43
+ def device_info(self) -> DeviceInfo: ...
@@ -0,0 +1,30 @@
1
+ from .const import _LOGGER as _LOGGER
2
+ from .coordinator import VodafoneConfigEntry as VodafoneConfigEntry, VodafoneStationDeviceInfo as VodafoneStationDeviceInfo, VodafoneStationRouter as VodafoneStationRouter
3
+ from _typeshed import Incomplete
4
+ from homeassistant.components.device_tracker import ScannerEntity as ScannerEntity
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
+ from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
7
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
8
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
9
+
10
+ PARALLEL_UPDATES: int
11
+
12
+ async def async_setup_entry(hass: HomeAssistant, entry: VodafoneConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
13
+ @callback
14
+ def async_add_new_tracked_entities(coordinator: VodafoneStationRouter, async_add_entities: AddConfigEntryEntitiesCallback, tracked: set[str]) -> None: ...
15
+
16
+ class VodafoneStationTracker(CoordinatorEntity[VodafoneStationRouter], ScannerEntity):
17
+ _attr_translation_key: str
18
+ _attr_has_entity_name: bool
19
+ mac_address: str
20
+ _coordinator: Incomplete
21
+ _attr_mac_address: Incomplete
22
+ _attr_unique_id: Incomplete
23
+ _attr_hostname: Incomplete
24
+ def __init__(self, coordinator: VodafoneStationRouter, device_info: VodafoneStationDeviceInfo) -> None: ...
25
+ @property
26
+ def _device_info(self) -> VodafoneStationDeviceInfo: ...
27
+ @property
28
+ def is_connected(self) -> bool: ...
29
+ @property
30
+ def ip_address(self) -> str | None: ...
@@ -0,0 +1,10 @@
1
+ from .coordinator import VodafoneConfigEntry as VodafoneConfigEntry
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components.diagnostics import async_redact_data as async_redact_data
4
+ from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from typing import Any
7
+
8
+ TO_REDACT: Incomplete
9
+
10
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: VodafoneConfigEntry) -> dict[str, Any]: ...
@@ -0,0 +1,8 @@
1
+ from .const import _LOGGER as _LOGGER
2
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
3
+ from homeassistant.core import HomeAssistant as HomeAssistant
4
+ from homeassistant.helpers import entity_registry as er
5
+ from typing import Any
6
+
7
+ async def cleanup_device_tracker(hass: HomeAssistant, config_entry: ConfigEntry, devices: dict[str, Any]) -> None: ...
8
+ def _async_remove_empty_devices(hass: HomeAssistant, entity_reg: er.EntityRegistry, config_entry: ConfigEntry) -> None: ...
@@ -0,0 +1,38 @@
1
+ from .const import LINE_TYPES as LINE_TYPES, _LOGGER as _LOGGER
2
+ from .coordinator import VodafoneConfigEntry as VodafoneConfigEntry, VodafoneStationRouter as VodafoneStationRouter
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from datetime import datetime
7
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
8
+ from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfDataRate as UnitOfDataRate
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
12
+ from typing import Final
13
+
14
+ PARALLEL_UPDATES: int
15
+ NOT_AVAILABLE: list
16
+ UPTIME_DEVIATION: int
17
+
18
+ @dataclass(frozen=True, kw_only=True)
19
+ class VodafoneStationEntityDescription(SensorEntityDescription):
20
+ value: Callable[[VodafoneStationRouter, str | datetime | float | None, str], str | datetime | float | None] = ...
21
+ is_suitable: Callable[[dict], bool] = ...
22
+
23
+ def _calculate_uptime(coordinator: VodafoneStationRouter, last_value: str | datetime | float | None, key: str) -> datetime: ...
24
+ def _line_connection(coordinator: VodafoneStationRouter, last_value: str | datetime | float | None, key: str) -> str | None: ...
25
+
26
+ SENSOR_TYPES: Final[Incomplete]
27
+
28
+ async def async_setup_entry(hass: HomeAssistant, entry: VodafoneConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
29
+
30
+ class VodafoneStationSensorEntity(CoordinatorEntity[VodafoneStationRouter], SensorEntity):
31
+ _attr_has_entity_name: bool
32
+ entity_description: VodafoneStationEntityDescription
33
+ _attr_device_info: Incomplete
34
+ _attr_unique_id: Incomplete
35
+ _old_state: str | datetime | float | None
36
+ def __init__(self, coordinator: VodafoneStationRouter, description: VodafoneStationEntityDescription) -> None: ...
37
+ @property
38
+ def native_value(self) -> str | datetime | float | None: ...
@@ -9,10 +9,10 @@ from .services import ZWaveServices as ZWaveServices
9
9
  from _typeshed import Incomplete
10
10
  from homeassistant.components.hassio import AddonError as AddonError, AddonManager as AddonManager, AddonState as AddonState
11
11
  from homeassistant.components.persistent_notification import async_create as async_create
12
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
12
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigEntryState as ConfigEntryState
13
13
  from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_DOMAIN as ATTR_DOMAIN, ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_URL as CONF_URL, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, EVENT_LOGGING_CHANGED as EVENT_LOGGING_CHANGED, Platform as Platform
14
14
  from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
15
- from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
15
+ from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady, HomeAssistantError as HomeAssistantError
16
16
  from homeassistant.helpers import device_registry as dr
17
17
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
18
18
  from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
@@ -25,26 +25,23 @@ from zwave_js_server.model.node import Node as ZwaveNode
25
25
  from zwave_js_server.model.value import Value as Value, ValueNotification as ValueNotification
26
26
 
27
27
  CONNECT_TIMEOUT: int
28
- DATA_CLIENT_LISTEN_TASK: str
29
28
  DATA_DRIVER_EVENTS: str
30
- DATA_START_CLIENT_TASK: str
29
+ DRIVER_READY_TIMEOUT: int
31
30
  CONFIG_SCHEMA: Incomplete
31
+ PLATFORMS: Incomplete
32
32
 
33
33
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
34
34
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
35
- async def start_client(hass: HomeAssistant, entry: ConfigEntry, client: ZwaveClient) -> None: ...
35
+ def _get_listen_task_error(listen_task: asyncio.Task) -> tuple[BaseException | None, str]: ...
36
36
 
37
37
  class DriverEvents:
38
38
  driver: Driver
39
39
  config_entry: Incomplete
40
40
  dev_reg: Incomplete
41
41
  hass: Incomplete
42
- platform_setup_tasks: dict[str, asyncio.Task]
43
- ready: Incomplete
44
42
  controller_events: Incomplete
45
43
  def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None: ...
46
44
  async def setup(self, driver: Driver) -> None: ...
47
- async def async_setup_platform(self, platform: Platform) -> None: ...
48
45
 
49
46
  class ControllerEvents:
50
47
  hass: Incomplete
@@ -83,7 +80,6 @@ class NodeEvents:
83
80
  def async_on_value_updated_fire_event(self, value_updates_disc_info: dict[str, ZwaveDiscoveryInfo], value: Value) -> None: ...
84
81
 
85
82
  async def client_listen(hass: HomeAssistant, entry: ConfigEntry, client: ZwaveClient, driver_ready: asyncio.Event) -> None: ...
86
- async def disconnect_client(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
87
83
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
88
84
  async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
89
85
  async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
@@ -153,6 +153,11 @@ async def websocket_try_parse_dsk_from_qr_code_string(hass: HomeAssistant, conne
153
153
  @websocket_api.async_response
154
154
  @async_handle_failed_command
155
155
  @async_get_entry
156
+ async def websocket_lookup_device(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any], entry: ConfigEntry, client: Client, driver: Driver) -> None: ...
157
+ @websocket_api.require_admin
158
+ @websocket_api.async_response
159
+ @async_handle_failed_command
160
+ @async_get_entry
156
161
  async def websocket_supports_feature(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any], entry: ConfigEntry, client: Client, driver: Driver) -> None: ...
157
162
  @websocket_api.require_admin
158
163
  @websocket_api.async_response
@@ -329,3 +334,13 @@ async def websocket_invoke_cc_api(hass: HomeAssistant, connection: ActiveConnect
329
334
  @callback
330
335
  @websocket_api.require_admin
331
336
  def websocket_get_integration_settings(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]) -> None: ...
337
+ @websocket_api.require_admin
338
+ @websocket_api.async_response
339
+ @async_handle_failed_command
340
+ @async_get_entry
341
+ async def websocket_backup_nvm(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any], entry: ConfigEntry, client: Client, driver: Driver) -> None: ...
342
+ @websocket_api.require_admin
343
+ @websocket_api.async_response
344
+ @async_handle_failed_command
345
+ @async_get_entry
346
+ async def websocket_restore_nvm(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any], entry: ConfigEntry, client: Client, driver: Driver) -> None: ...
@@ -1,7 +1,6 @@
1
1
  import abc
2
2
  import asyncio
3
3
  import voluptuous as vol
4
- from . import disconnect_client as disconnect_client
5
4
  from .addon import get_addon_manager as get_addon_manager
6
5
  from .const import ADDON_SLUG as ADDON_SLUG, CONF_ADDON_DEVICE as CONF_ADDON_DEVICE, CONF_ADDON_EMULATE_HARDWARE as CONF_ADDON_EMULATE_HARDWARE, CONF_ADDON_LOG_LEVEL as CONF_ADDON_LOG_LEVEL, CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY as CONF_ADDON_LR_S2_ACCESS_CONTROL_KEY, CONF_ADDON_LR_S2_AUTHENTICATED_KEY as CONF_ADDON_LR_S2_AUTHENTICATED_KEY, CONF_ADDON_NETWORK_KEY as CONF_ADDON_NETWORK_KEY, CONF_ADDON_S0_LEGACY_KEY as CONF_ADDON_S0_LEGACY_KEY, CONF_ADDON_S2_ACCESS_CONTROL_KEY as CONF_ADDON_S2_ACCESS_CONTROL_KEY, CONF_ADDON_S2_AUTHENTICATED_KEY as CONF_ADDON_S2_AUTHENTICATED_KEY, CONF_ADDON_S2_UNAUTHENTICATED_KEY as CONF_ADDON_S2_UNAUTHENTICATED_KEY, CONF_INTEGRATION_CREATED_ADDON as CONF_INTEGRATION_CREATED_ADDON, CONF_LR_S2_ACCESS_CONTROL_KEY as CONF_LR_S2_ACCESS_CONTROL_KEY, CONF_LR_S2_AUTHENTICATED_KEY as CONF_LR_S2_AUTHENTICATED_KEY, CONF_S0_LEGACY_KEY as CONF_S0_LEGACY_KEY, CONF_S2_ACCESS_CONTROL_KEY as CONF_S2_ACCESS_CONTROL_KEY, CONF_S2_AUTHENTICATED_KEY as CONF_S2_AUTHENTICATED_KEY, CONF_S2_UNAUTHENTICATED_KEY as CONF_S2_UNAUTHENTICATED_KEY, CONF_USB_PATH as CONF_USB_PATH, CONF_USE_ADDON as CONF_USE_ADDON, DOMAIN as DOMAIN
7
6
  from _typeshed import Incomplete
@@ -84,7 +84,6 @@ class ConfigEntryState(Enum):
84
84
  DEFAULT_DISCOVERY_UNIQUE_ID: str
85
85
  DISCOVERY_NOTIFICATION_ID: str
86
86
  DISCOVERY_SOURCES: Incomplete
87
- RECONFIGURE_NOTIFICATION_ID: str
88
87
  EVENT_FLOW_DISCOVERED: str
89
88
  SIGNAL_CONFIG_ENTRY_CHANGED: Incomplete
90
89
 
@@ -404,8 +403,6 @@ class ConfigFlow(ConfigEntryBaseFlow):
404
403
  async def _async_handle_discovery_without_unique_id(self) -> None: ...
405
404
  async def _async_step_discovery_without_unique_id(self) -> ConfigFlowResult: ...
406
405
  async def async_step_discovery(self, discovery_info: DiscoveryInfoType) -> ConfigFlowResult: ...
407
- @callback
408
- def async_abort(self, *, reason: str, description_placeholders: Mapping[str, str] | None = None) -> ConfigFlowResult: ...
409
406
  async def async_step_bluetooth(self, discovery_info: BluetoothServiceInfoBleak) -> ConfigFlowResult: ...
410
407
  async def async_step_dhcp(self, discovery_info: DhcpServiceInfo) -> ConfigFlowResult: ...
411
408
  async def async_step_hassio(self, discovery_info: HassioServiceInfo) -> ConfigFlowResult: ...
@@ -448,9 +445,9 @@ class ConfigSubentryFlow(data_entry_flow.FlowHandler[SubentryFlowContext, Subent
448
445
  @callback
449
446
  def async_update_and_abort(self, entry: ConfigEntry, subentry: ConfigSubentry, *, unique_id: str | None | UndefinedType = ..., title: str | UndefinedType = ..., data: Mapping[str, Any] | UndefinedType = ..., data_updates: Mapping[str, Any] | UndefinedType = ...) -> SubentryFlowResult: ...
450
447
  @property
451
- def _reconfigure_entry_id(self) -> str: ...
448
+ def _entry_id(self) -> str: ...
452
449
  @callback
453
- def _get_reconfigure_entry(self) -> ConfigEntry: ...
450
+ def _get_entry(self) -> ConfigEntry: ...
454
451
  @property
455
452
  def _reconfigure_subentry_id(self) -> str: ...
456
453
  @callback
@@ -1,7 +1,7 @@
1
1
  import asyncio
2
2
  from collections.abc import Callable as Callable
3
3
  from dataclasses import dataclass, field
4
- from homeassistant.components.backup import BackupManager as BackupManager, ManagerStateEvent as ManagerStateEvent
4
+ from homeassistant.components.backup import BackupManager as BackupManager, BackupPlatformEvent as BackupPlatformEvent, ManagerStateEvent as ManagerStateEvent
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
6
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
7
  from homeassistant.util.hass_dict import HassKey as HassKey
@@ -12,6 +12,7 @@ DATA_MANAGER: HassKey[BackupManager]
12
12
  @dataclass(slots=True)
13
13
  class BackupData:
14
14
  backup_event_subscriptions: list[Callable[[ManagerStateEvent], None]] = field(default_factory=list)
15
+ backup_platform_event_subscriptions: list[Callable[[BackupPlatformEvent], None]] = field(default_factory=list)
15
16
  manager_ready: asyncio.Future[None] = field(default_factory=asyncio.Future)
16
17
 
17
18
  @callback
@@ -19,3 +20,5 @@ def async_initialize_backup(hass: HomeAssistant) -> None: ...
19
20
  async def async_get_manager(hass: HomeAssistant) -> BackupManager: ...
20
21
  @callback
21
22
  def async_subscribe_events(hass: HomeAssistant, on_event: Callable[[ManagerStateEvent], None]) -> Callable[[], None]: ...
23
+ @callback
24
+ def async_subscribe_platform_events(hass: HomeAssistant, on_event: Callable[[BackupPlatformEvent], None]) -> Callable[[], None]: ...