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,17 +1,28 @@
1
- from _typeshed import Incomplete
1
+ import logging
2
2
 
3
3
  DOMAIN: str
4
- LOGGER: Incomplete
5
- CONF_RECOMMENDED: str
6
- CONF_PROMPT: str
4
+ LOGGER: logging.Logger
7
5
  CONF_CHAT_MODEL: str
8
- RECOMMENDED_CHAT_MODEL: str
6
+ CONF_FILENAMES: str
9
7
  CONF_MAX_TOKENS: str
10
- RECOMMENDED_MAX_TOKENS: int
11
- CONF_TOP_P: str
12
- RECOMMENDED_TOP_P: float
13
- CONF_TEMPERATURE: str
14
- RECOMMENDED_TEMPERATURE: float
8
+ CONF_PROMPT: str
15
9
  CONF_REASONING_EFFORT: str
10
+ CONF_RECOMMENDED: str
11
+ CONF_TEMPERATURE: str
12
+ CONF_TOP_P: str
13
+ CONF_WEB_SEARCH: str
14
+ CONF_WEB_SEARCH_USER_LOCATION: str
15
+ CONF_WEB_SEARCH_CONTEXT_SIZE: str
16
+ CONF_WEB_SEARCH_CITY: str
17
+ CONF_WEB_SEARCH_REGION: str
18
+ CONF_WEB_SEARCH_COUNTRY: str
19
+ CONF_WEB_SEARCH_TIMEZONE: str
20
+ RECOMMENDED_CHAT_MODEL: str
21
+ RECOMMENDED_MAX_TOKENS: int
16
22
  RECOMMENDED_REASONING_EFFORT: str
17
- UNSUPPORTED_MODELS: Incomplete
23
+ RECOMMENDED_TEMPERATURE: float
24
+ RECOMMENDED_TOP_P: float
25
+ RECOMMENDED_WEB_SEARCH: bool
26
+ RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE: str
27
+ RECOMMENDED_WEB_SEARCH_USER_LOCATION: bool
28
+ UNSUPPORTED_MODELS: list[str]
@@ -1,5 +1,5 @@
1
1
  from . import OpenAIConfigEntry as OpenAIConfigEntry
2
- from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P
2
+ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import AsyncGenerator, Callable as Callable
5
5
  from homeassistant.components import assist_pipeline as assist_pipeline, conversation as conversation
@@ -7,18 +7,18 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.const import CONF_LLM_HASS_API as CONF_LLM_HASS_API, MATCH_ALL as MATCH_ALL
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
- from homeassistant.helpers import chat_session as chat_session, intent as intent, llm as llm
10
+ from homeassistant.helpers import intent as intent, llm as llm
11
11
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
12
  from openai._streaming import AsyncStream as AsyncStream
13
- from openai.types.chat import ChatCompletionChunk as ChatCompletionChunk, ChatCompletionMessageParam, ChatCompletionToolParam
13
+ from openai.types.responses import FunctionToolParam, ResponseInputParam as ResponseInputParam, ResponseStreamEvent as ResponseStreamEvent, ToolParam as ToolParam
14
14
  from typing import Any, Literal
15
15
 
16
16
  MAX_TOOL_ITERATIONS: int
17
17
 
18
18
  async def async_setup_entry(hass: HomeAssistant, config_entry: OpenAIConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
19
- def _format_tool(tool: llm.Tool, custom_serializer: Callable[[Any], Any] | None) -> ChatCompletionToolParam: ...
20
- def _convert_content_to_param(content: conversation.Content) -> ChatCompletionMessageParam: ...
21
- async def _transform_stream(result: AsyncStream[ChatCompletionChunk]) -> AsyncGenerator[conversation.AssistantContentDeltaDict]: ...
19
+ def _format_tool(tool: llm.Tool, custom_serializer: Callable[[Any], Any] | None) -> FunctionToolParam: ...
20
+ def _convert_content_to_param(content: conversation.Content) -> ResponseInputParam: ...
21
+ async def _transform_stream(chat_log: conversation.ChatLog, result: AsyncStream[ResponseStreamEvent]) -> AsyncGenerator[conversation.AssistantContentDeltaDict]: ...
22
22
 
23
23
  class OpenAIConversationEntity(conversation.ConversationEntity, conversation.AbstractConversationAgent):
24
24
  _attr_has_entity_name: bool
@@ -32,6 +32,5 @@ class OpenAIConversationEntity(conversation.ConversationEntity, conversation.Abs
32
32
  def supported_languages(self) -> list[str] | Literal['*']: ...
33
33
  async def async_added_to_hass(self) -> None: ...
34
34
  async def async_will_remove_from_hass(self) -> None: ...
35
- async def async_process(self, user_input: conversation.ConversationInput) -> conversation.ConversationResult: ...
36
35
  async def _async_handle_message(self, user_input: conversation.ConversationInput, chat_log: conversation.ChatLog) -> conversation.ConversationResult: ...
37
36
  async def _async_entry_update_listener(self, hass: HomeAssistant, entry: ConfigEntry) -> None: ...
@@ -1,6 +1,7 @@
1
1
  from .. import OverkizDataConfigEntry as OverkizDataConfigEntry
2
2
  from ..entity import OverkizEntity as OverkizEntity
3
3
  from .atlantic_domestic_hot_water_production_mlb_component import AtlanticDomesticHotWaterProductionMBLComponent as AtlanticDomesticHotWaterProductionMBLComponent
4
+ from .atlantic_domestic_hot_water_production_v2_io_component import AtlanticDomesticHotWaterProductionV2IOComponent as AtlanticDomesticHotWaterProductionV2IOComponent
4
5
  from .atlantic_pass_apc_dhw import AtlanticPassAPCDHW as AtlanticPassAPCDHW
5
6
  from .domestic_hot_water_production import DomesticHotWaterProduction as DomesticHotWaterProduction
6
7
  from .hitachi_dhw import HitachiDHW as HitachiDHW
@@ -0,0 +1,41 @@
1
+ from ..entity import OverkizEntity as OverkizEntity
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components.water_heater import STATE_ECO as STATE_ECO, STATE_ELECTRIC as STATE_ELECTRIC, STATE_HEAT_PUMP as STATE_HEAT_PUMP, STATE_PERFORMANCE as STATE_PERFORMANCE, WaterHeaterEntity as WaterHeaterEntity, WaterHeaterEntityFeature as WaterHeaterEntityFeature
4
+ from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
5
+ from typing import Any
6
+
7
+ DEFAULT_MIN_TEMP: float
8
+ DEFAULT_MAX_TEMP: float
9
+ MAX_BOOST_MODE_DURATION: int
10
+ DHWP_AWAY_MODES: Incomplete
11
+
12
+ class AtlanticDomesticHotWaterProductionV2IOComponent(OverkizEntity, WaterHeaterEntity):
13
+ _attr_temperature_unit: Incomplete
14
+ _attr_supported_features: Incomplete
15
+ _attr_operation_list: Incomplete
16
+ @property
17
+ def min_temp(self) -> float: ...
18
+ @property
19
+ def max_temp(self) -> float: ...
20
+ @property
21
+ def current_temperature(self) -> float: ...
22
+ @property
23
+ def target_temperature(self) -> float: ...
24
+ async def async_set_temperature(self, **kwargs: Any) -> None: ...
25
+ @property
26
+ def is_state_eco(self) -> bool: ...
27
+ @property
28
+ def is_state_performance(self) -> bool: ...
29
+ @property
30
+ def is_state_heat_pump(self) -> bool: ...
31
+ @property
32
+ def is_away_mode_on(self) -> bool: ...
33
+ @property
34
+ def current_operation(self) -> str | None: ...
35
+ @property
36
+ def is_boost_mode_on(self) -> bool: ...
37
+ async def async_set_operation_mode(self, operation_mode: str) -> None: ...
38
+ async def async_turn_away_mode_on(self, refresh_afterwards: bool = True) -> None: ...
39
+ async def async_turn_away_mode_off(self, refresh_afterwards: bool = True) -> None: ...
40
+ async def async_turn_boost_mode_on(self, refresh_afterwards: bool = True) -> None: ...
41
+ async def async_turn_boost_mode_off(self, refresh_afterwards: bool = True) -> None: ...
@@ -1,12 +1,7 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .coordinator import PurpleAirDataUpdateCoordinator as PurpleAirDataUpdateCoordinator
3
- from _typeshed import Incomplete
4
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
- from homeassistant.const import Platform as Platform
1
+ from .const import PLATFORMS as PLATFORMS
2
+ from .coordinator import PurpleAirConfigEntry as PurpleAirConfigEntry, PurpleAirDataUpdateCoordinator as PurpleAirDataUpdateCoordinator
6
3
  from homeassistant.core import HomeAssistant as HomeAssistant
7
4
 
8
- PLATFORMS: Incomplete
9
-
10
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
11
- async def async_handle_entry_update(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
12
- async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
5
+ async def async_setup_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> bool: ...
6
+ async def async_reload_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> None: ...
7
+ async def async_unload_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> bool: ...
@@ -1,6 +1,8 @@
1
1
  from _typeshed import Incomplete
2
+ from homeassistant.const import Platform as Platform
3
+ from typing import Final
2
4
 
3
- DOMAIN: str
4
- LOGGER: Incomplete
5
- CONF_READ_KEY: str
6
- CONF_SENSOR_INDICES: str
5
+ LOGGER: Final[Incomplete]
6
+ PLATFORMS: Final[Incomplete]
7
+ DOMAIN: Final[str]
8
+ CONF_SENSOR_INDICES: Final[str]
@@ -10,11 +10,12 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as Da
10
10
 
11
11
  SENSOR_FIELDS_TO_RETRIEVE: Incomplete
12
12
  UPDATE_INTERVAL: Incomplete
13
+ type PurpleAirConfigEntry = ConfigEntry[PurpleAirDataUpdateCoordinator]
13
14
 
14
15
  class PurpleAirDataUpdateCoordinator(DataUpdateCoordinator[GetSensorsResponse]):
15
- config_entry: ConfigEntry
16
+ config_entry: PurpleAirConfigEntry
16
17
  _api: Incomplete
17
- def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None: ...
18
+ def __init__(self, hass: HomeAssistant, entry: PurpleAirConfigEntry) -> None: ...
18
19
  async def _async_update_data(self) -> GetSensorsResponse: ...
19
20
  @callback
20
21
  def async_get_map_url(self, sensor_index: int) -> str: ...
@@ -1,8 +1,6 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .coordinator import PurpleAirDataUpdateCoordinator as PurpleAirDataUpdateCoordinator
1
+ from .coordinator import PurpleAirConfigEntry as PurpleAirConfigEntry
3
2
  from _typeshed import Incomplete
4
3
  from homeassistant.components.diagnostics import async_redact_data as async_redact_data
5
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
4
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, CONF_UNIQUE_ID as CONF_UNIQUE_ID
7
5
  from homeassistant.core import HomeAssistant as HomeAssistant
8
6
  from typing import Any
@@ -10,4 +8,4 @@ from typing import Any
10
8
  CONF_TITLE: str
11
9
  TO_REDACT: Incomplete
12
10
 
13
- async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: ConfigEntry) -> dict[str, Any]: ...
11
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> dict[str, Any]: ...
@@ -1,9 +1,8 @@
1
1
  from .const import DOMAIN as DOMAIN
2
- from .coordinator import PurpleAirDataUpdateCoordinator as PurpleAirDataUpdateCoordinator
2
+ from .coordinator import PurpleAirConfigEntry as PurpleAirConfigEntry, PurpleAirDataUpdateCoordinator as PurpleAirDataUpdateCoordinator
3
3
  from _typeshed import Incomplete
4
4
  from aiopurpleair.models.sensors import SensorModel as SensorModel
5
5
  from collections.abc import Mapping
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
6
  from homeassistant.const import ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE as ATTR_LONGITUDE, CONF_SHOW_ON_MAP as CONF_SHOW_ON_MAP
8
7
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
9
8
  from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
@@ -14,7 +13,7 @@ class PurpleAirEntity(CoordinatorEntity[PurpleAirDataUpdateCoordinator]):
14
13
  _sensor_index: Incomplete
15
14
  _attr_device_info: Incomplete
16
15
  _entry: Incomplete
17
- def __init__(self, coordinator: PurpleAirDataUpdateCoordinator, entry: ConfigEntry, sensor_index: int) -> None: ...
16
+ def __init__(self, entry: PurpleAirConfigEntry, sensor_index: int) -> None: ...
18
17
  @property
19
18
  def extra_state_attributes(self) -> Mapping[str, Any]: ...
20
19
  @property
@@ -1,12 +1,11 @@
1
- from .const import CONF_SENSOR_INDICES as CONF_SENSOR_INDICES, DOMAIN as DOMAIN
2
- from .coordinator import PurpleAirDataUpdateCoordinator as PurpleAirDataUpdateCoordinator
1
+ from .const import CONF_SENSOR_INDICES as CONF_SENSOR_INDICES
2
+ from .coordinator import PurpleAirConfigEntry as PurpleAirConfigEntry
3
3
  from .entity import PurpleAirEntity as PurpleAirEntity
4
4
  from _typeshed import Incomplete
5
5
  from aiopurpleair.models.sensors import SensorModel as SensorModel
6
6
  from collections.abc import Callable as Callable
7
7
  from dataclasses import dataclass
8
8
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
9
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
10
9
  from homeassistant.const import CONCENTRATION_MICROGRAMS_PER_CUBIC_METER as CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, SIGNAL_STRENGTH_DECIBELS_MILLIWATT as SIGNAL_STRENGTH_DECIBELS_MILLIWATT, UnitOfPressure as UnitOfPressure, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
11
10
  from homeassistant.core import HomeAssistant as HomeAssistant
12
11
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
@@ -19,11 +18,11 @@ class PurpleAirSensorEntityDescription(SensorEntityDescription):
19
18
 
20
19
  SENSOR_DESCRIPTIONS: Incomplete
21
20
 
22
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
21
+ async def async_setup_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
22
 
24
23
  class PurpleAirSensorEntity(PurpleAirEntity, SensorEntity):
25
24
  entity_description: PurpleAirSensorEntityDescription
26
25
  _attr_unique_id: Incomplete
27
- def __init__(self, coordinator: PurpleAirDataUpdateCoordinator, entry: ConfigEntry, sensor_index: int, description: PurpleAirSensorEntityDescription) -> None: ...
26
+ def __init__(self, entry: PurpleAirConfigEntry, sensor_index: int, description: PurpleAirSensorEntityDescription) -> None: ...
28
27
  @property
29
28
  def native_value(self) -> float | str | None: ...
@@ -0,0 +1,12 @@
1
+ from .coordinator import PyLoadConfigEntry as PyLoadConfigEntry, PyLoadCoordinator as PyLoadCoordinator
2
+ from _typeshed import Incomplete
3
+ from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_SSL as CONF_SSL, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
6
+
7
+ _LOGGER: Incomplete
8
+ PLATFORMS: list[Platform]
9
+
10
+ async def async_setup_entry(hass: HomeAssistant, entry: PyLoadConfigEntry) -> bool: ...
11
+ async def async_unload_entry(hass: HomeAssistant, entry: PyLoadConfigEntry) -> bool: ...
12
+ async def async_migrate_entry(hass: HomeAssistant, entry: PyLoadConfigEntry) -> bool: ...
@@ -0,0 +1,32 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import PyLoadConfigEntry as PyLoadConfigEntry
3
+ from .entity import BasePyLoadEntity as BasePyLoadEntity
4
+ from collections.abc import Awaitable, Callable as Callable
5
+ from dataclasses import dataclass
6
+ from enum import StrEnum
7
+ from homeassistant.components.button import ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from pyloadapi import PyLoadAPI as PyLoadAPI
12
+ from typing import Any
13
+
14
+ PARALLEL_UPDATES: int
15
+
16
+ @dataclass(kw_only=True, frozen=True)
17
+ class PyLoadButtonEntityDescription(ButtonEntityDescription):
18
+ press_fn: Callable[[PyLoadAPI], Awaitable[Any]]
19
+
20
+ class PyLoadButtonEntity(StrEnum):
21
+ ABORT_DOWNLOADS = 'abort_downloads'
22
+ RESTART_FAILED = 'restart_failed'
23
+ DELETE_FINISHED = 'delete_finished'
24
+ RESTART = 'restart'
25
+
26
+ SENSOR_DESCRIPTIONS: tuple[PyLoadButtonEntityDescription, ...]
27
+
28
+ async def async_setup_entry(hass: HomeAssistant, entry: PyLoadConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
29
+
30
+ class PyLoadBinarySensor(BasePyLoadEntity, ButtonEntity):
31
+ entity_description: PyLoadButtonEntityDescription
32
+ async def async_press(self) -> None: ...
@@ -0,0 +1,23 @@
1
+ from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from collections.abc import Mapping
4
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
5
+ from homeassistant.const import CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
8
+ from homeassistant.helpers.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
9
+ from typing import Any
10
+
11
+ _LOGGER: Incomplete
12
+ STEP_USER_DATA_SCHEMA: Incomplete
13
+ REAUTH_SCHEMA: Incomplete
14
+
15
+ async def validate_input(hass: HomeAssistant, user_input: dict[str, Any]) -> None: ...
16
+
17
+ class PyLoadConfigFlow(ConfigFlow, domain=DOMAIN):
18
+ VERSION: int
19
+ MINOR_VERSION: int
20
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
21
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
22
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
23
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -0,0 +1,6 @@
1
+ DOMAIN: str
2
+ DEFAULT_NAME: str
3
+ DEFAULT_PORT: int
4
+ MANUFACTURER: str
5
+ SERVICE_NAME: str
6
+ UNIT_DOWNLOADS: str
@@ -0,0 +1,33 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from dataclasses import dataclass
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
+ from homeassistant.const import CONF_USERNAME as CONF_USERNAME
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
8
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
9
+ from pyloadapi import PyLoadAPI as PyLoadAPI
10
+
11
+ _LOGGER: Incomplete
12
+ SCAN_INTERVAL: Incomplete
13
+
14
+ @dataclass(kw_only=True)
15
+ class PyLoadData:
16
+ pause: bool
17
+ active: int
18
+ queue: int
19
+ total: int
20
+ speed: float
21
+ download: bool
22
+ reconnect: bool
23
+ captcha: bool | None = ...
24
+ free_space: int
25
+ type PyLoadConfigEntry = ConfigEntry[PyLoadCoordinator]
26
+
27
+ class PyLoadCoordinator(DataUpdateCoordinator[PyLoadData]):
28
+ config_entry: PyLoadConfigEntry
29
+ pyload: Incomplete
30
+ version: str | None
31
+ def __init__(self, hass: HomeAssistant, config_entry: PyLoadConfigEntry, pyload: PyLoadAPI) -> None: ...
32
+ async def _async_update_data(self) -> PyLoadData: ...
33
+ async def _async_setup(self) -> None: ...
@@ -0,0 +1,10 @@
1
+ from .coordinator import PyLoadConfigEntry as PyLoadConfigEntry, PyLoadData as PyLoadData
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components.diagnostics import REDACTED as REDACTED, async_redact_data as async_redact_data
4
+ from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_URL as CONF_URL, 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, config_entry: PyLoadConfigEntry) -> dict[str, Any]: ...
@@ -0,0 +1,13 @@
1
+ from .const import DOMAIN as DOMAIN, MANUFACTURER as MANUFACTURER, SERVICE_NAME as SERVICE_NAME
2
+ from .coordinator import PyLoadCoordinator as PyLoadCoordinator
3
+ from _typeshed import Incomplete
4
+ from homeassistant.components.button import EntityDescription as EntityDescription
5
+ from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
6
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
7
+
8
+ class BasePyLoadEntity(CoordinatorEntity[PyLoadCoordinator]):
9
+ _attr_has_entity_name: bool
10
+ _attr_unique_id: Incomplete
11
+ entity_description: Incomplete
12
+ _attr_device_info: Incomplete
13
+ def __init__(self, coordinator: PyLoadCoordinator, entity_description: EntityDescription) -> None: ...
@@ -0,0 +1,33 @@
1
+ from .const import UNIT_DOWNLOADS as UNIT_DOWNLOADS
2
+ from .coordinator import PyLoadConfigEntry as PyLoadConfigEntry, PyLoadData as PyLoadData
3
+ from .entity import BasePyLoadEntity as BasePyLoadEntity
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from enum import StrEnum
7
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
8
+ from homeassistant.const import UnitOfDataRate as UnitOfDataRate, UnitOfInformation as UnitOfInformation
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from homeassistant.helpers.typing import StateType as StateType
12
+
13
+ PARALLEL_UPDATES: int
14
+
15
+ class PyLoadSensorEntity(StrEnum):
16
+ ACTIVE = 'active'
17
+ FREE_SPACE = 'free_space'
18
+ QUEUE = 'queue'
19
+ SPEED = 'speed'
20
+ TOTAL = 'total'
21
+
22
+ @dataclass(kw_only=True, frozen=True)
23
+ class PyLoadSensorEntityDescription(SensorEntityDescription):
24
+ value_fn: Callable[[PyLoadData], StateType]
25
+
26
+ SENSOR_DESCRIPTIONS: tuple[PyLoadSensorEntityDescription, ...]
27
+
28
+ async def async_setup_entry(hass: HomeAssistant, entry: PyLoadConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
29
+
30
+ class PyLoadSensor(BasePyLoadEntity, SensorEntity):
31
+ entity_description: PyLoadSensorEntityDescription
32
+ @property
33
+ def native_value(self) -> StateType: ...
@@ -0,0 +1,37 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import PyLoadConfigEntry as PyLoadConfigEntry, PyLoadData as PyLoadData
3
+ from .entity import BasePyLoadEntity as BasePyLoadEntity
4
+ from collections.abc import Awaitable, Callable as Callable
5
+ from dataclasses import dataclass
6
+ from enum import StrEnum
7
+ from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass, SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from pyloadapi import PyLoadAPI as PyLoadAPI
12
+ from typing import Any
13
+
14
+ PARALLEL_UPDATES: int
15
+
16
+ class PyLoadSwitch(StrEnum):
17
+ PAUSE_RESUME_QUEUE = 'download'
18
+ RECONNECT = 'reconnect'
19
+
20
+ @dataclass(kw_only=True, frozen=True)
21
+ class PyLoadSwitchEntityDescription(SwitchEntityDescription):
22
+ turn_on_fn: Callable[[PyLoadAPI], Awaitable[Any]]
23
+ turn_off_fn: Callable[[PyLoadAPI], Awaitable[Any]]
24
+ toggle_fn: Callable[[PyLoadAPI], Awaitable[Any]]
25
+ value_fn: Callable[[PyLoadData], bool]
26
+
27
+ SENSOR_DESCRIPTIONS: tuple[PyLoadSwitchEntityDescription, ...]
28
+
29
+ async def async_setup_entry(hass: HomeAssistant, entry: PyLoadConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
30
+
31
+ class PyLoadSwitchEntity(BasePyLoadEntity, SwitchEntity):
32
+ entity_description: PyLoadSwitchEntityDescription
33
+ @property
34
+ def is_on(self) -> bool | None: ...
35
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
36
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
37
+ async def async_toggle(self, **kwargs: Any) -> None: ...
@@ -0,0 +1,41 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import QbusConfigEntry as QbusConfigEntry
3
+ from .entity import QbusEntity as QbusEntity, add_new_outputs as add_new_outputs
4
+ from _typeshed import Incomplete
5
+ from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACAction as HVACAction, HVACMode as HVACMode
6
+ from homeassistant.components.mqtt import ReceiveMessage as ReceiveMessage
7
+ from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
10
+ from homeassistant.helpers.debounce import Debouncer as Debouncer
11
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
+ from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
13
+ from typing import Any
14
+
15
+ PARALLEL_UPDATES: int
16
+ STATE_REQUEST_DELAY: int
17
+ _LOGGER: Incomplete
18
+
19
+ async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
20
+
21
+ class QbusClimate(QbusEntity, ClimateEntity):
22
+ _attr_hvac_modes: Incomplete
23
+ _attr_supported_features: Incomplete
24
+ _attr_temperature_unit: Incomplete
25
+ _attr_hvac_action: Incomplete
26
+ _attr_hvac_mode: Incomplete
27
+ _attr_min_temp: float
28
+ _attr_max_temp: float
29
+ _attr_target_temperature_step: float
30
+ _attr_preset_modes: list[str]
31
+ _attr_preset_mode: str
32
+ _request_state_debouncer: Debouncer | None
33
+ def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
34
+ async def async_added_to_hass(self) -> None: ...
35
+ async def async_set_preset_mode(self, preset_mode: str) -> None: ...
36
+ async def async_set_temperature(self, **kwargs: Any) -> None: ...
37
+ _attr_current_temperature: Incomplete
38
+ _attr_target_temperature: Incomplete
39
+ async def _state_received(self, msg: ReceiveMessage) -> None: ...
40
+ def _set_hvac_action(self) -> None: ...
41
+ async def _async_request_state(self) -> None: ...
@@ -20,6 +20,6 @@ class QbusLight(QbusEntity, LightEntity):
20
20
  async def async_turn_on(self, **kwargs: Any) -> None: ...
21
21
  async def async_turn_off(self, **kwargs: Any) -> None: ...
22
22
  async def _state_received(self, msg: ReceiveMessage) -> None: ...
23
- _attr_is_on: bool
24
- _attr_brightness: int
25
- def _set_state(self, *, percentage: int | None = None, on: bool | None = None) -> None: ...
23
+ _attr_is_on: Incomplete
24
+ _attr_brightness: Incomplete
25
+ def _set_state(self, percentage: int = 0) -> None: ...
@@ -25,6 +25,7 @@ CONTEXT_ID_AS_BINARY_SCHEMA_VERSION: int
25
25
  EVENT_TYPE_IDS_SCHEMA_VERSION: int
26
26
  STATES_META_SCHEMA_VERSION: int
27
27
  LAST_REPORTED_SCHEMA_VERSION: int
28
+ CIRCULAR_MEAN_SCHEMA_VERSION: int
28
29
  LEGACY_STATES_EVENT_ID_INDEX_SCHEMA_VERSION: int
29
30
  LEGACY_STATES_EVENT_FOREIGN_KEYS_FIXED_SCHEMA_VERSION: int
30
31
  INTEGRATION_PLATFORM_COMPILE_STATISTICS: str
@@ -6,7 +6,7 @@ from . import migration as migration, statistics as statistics
6
6
  from .const import DB_WORKER_PREFIX as DB_WORKER_PREFIX, DEFAULT_MAX_BIND_VARS as DEFAULT_MAX_BIND_VARS, DOMAIN as DOMAIN, KEEPALIVE_TIME as KEEPALIVE_TIME, LAST_REPORTED_SCHEMA_VERSION as LAST_REPORTED_SCHEMA_VERSION, MARIADB_PYMYSQL_URL_PREFIX as MARIADB_PYMYSQL_URL_PREFIX, MARIADB_URL_PREFIX as MARIADB_URL_PREFIX, MAX_QUEUE_BACKLOG_MIN_VALUE as MAX_QUEUE_BACKLOG_MIN_VALUE, MIN_AVAILABLE_MEMORY_FOR_QUEUE_BACKLOG as MIN_AVAILABLE_MEMORY_FOR_QUEUE_BACKLOG, MYSQLDB_PYMYSQL_URL_PREFIX as MYSQLDB_PYMYSQL_URL_PREFIX, MYSQLDB_URL_PREFIX as MYSQLDB_URL_PREFIX, SQLITE_URL_PREFIX as SQLITE_URL_PREFIX, SupportedDialect as SupportedDialect
7
7
  from .db_schema import Base as Base, EventData as EventData, EventTypes as EventTypes, Events as Events, SCHEMA_VERSION as SCHEMA_VERSION, StateAttributes as StateAttributes, States as States, StatesMeta as StatesMeta, Statistics as Statistics, StatisticsShortTerm as StatisticsShortTerm
8
8
  from .executor import DBInterruptibleThreadPoolExecutor as DBInterruptibleThreadPoolExecutor
9
- from .models import DatabaseEngine as DatabaseEngine, StatisticData as StatisticData, StatisticMetaData as StatisticMetaData, UnsupportedDialect as UnsupportedDialect
9
+ from .models import DatabaseEngine as DatabaseEngine, StatisticData as StatisticData, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData, UnsupportedDialect as UnsupportedDialect
10
10
  from .pool import MutexPool as MutexPool, POOL_SIZE as POOL_SIZE, RecorderPool as RecorderPool
11
11
  from .table_managers.event_data import EventDataManager as EventDataManager
12
12
  from .table_managers.event_types import EventTypeManager as EventTypeManager
@@ -36,7 +36,6 @@ from sqlalchemy.orm.session import Session as Session
36
36
  from typing import Any
37
37
 
38
38
  _LOGGER: Incomplete
39
- DEFAULT_URL: str
40
39
  EXPIRE_AFTER_COMMITS: int
41
40
  SHUTDOWN_TASK: Incomplete
42
41
  COMMIT_TASK: Incomplete
@@ -1,5 +1,5 @@
1
1
  from .const import ALL_DOMAIN_EXCLUDE_ATTRS as ALL_DOMAIN_EXCLUDE_ATTRS, SupportedDialect as SupportedDialect
2
- from .models import StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMetaData as StatisticMetaData, bytes_to_ulid_or_none as bytes_to_ulid_or_none, bytes_to_uuid_hex_or_none as bytes_to_uuid_hex_or_none, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp, ulid_to_bytes_or_none as ulid_to_bytes_or_none, uuid_hex_to_bytes_or_none as uuid_hex_to_bytes_or_none
2
+ from .models import StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData, bytes_to_ulid_or_none as bytes_to_ulid_or_none, bytes_to_uuid_hex_or_none as bytes_to_uuid_hex_or_none, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp, ulid_to_bytes_or_none as ulid_to_bytes_or_none, uuid_hex_to_bytes_or_none as uuid_hex_to_bytes_or_none
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable
5
5
  from datetime import datetime, timedelta
@@ -209,6 +209,7 @@ class StatisticsBase:
209
209
  start: Mapped[datetime | None]
210
210
  start_ts: Mapped[float | None]
211
211
  mean: Mapped[float | None]
212
+ mean_weight: Mapped[float | None]
212
213
  min: Mapped[float | None]
213
214
  max: Mapped[float | None]
214
215
  last_reset: Mapped[datetime | None]
@@ -247,6 +248,7 @@ class _StatisticsMeta:
247
248
  has_mean: Mapped[bool | None]
248
249
  has_sum: Mapped[bool | None]
249
250
  name: Mapped[str | None]
251
+ mean_type: Mapped[StatisticMeanType]
250
252
  @staticmethod
251
253
  def from_meta(meta: StatisticMetaData) -> StatisticsMeta: ...
252
254
 
@@ -3,7 +3,7 @@ from . import Recorder as Recorder
3
3
  from .auto_repairs.statistics.duplicates import delete_statistics_duplicates as delete_statistics_duplicates, delete_statistics_meta_duplicates as delete_statistics_meta_duplicates
4
4
  from .const import CONTEXT_ID_AS_BINARY_SCHEMA_VERSION as CONTEXT_ID_AS_BINARY_SCHEMA_VERSION, EVENT_TYPE_IDS_SCHEMA_VERSION as EVENT_TYPE_IDS_SCHEMA_VERSION, LEGACY_STATES_EVENT_FOREIGN_KEYS_FIXED_SCHEMA_VERSION as LEGACY_STATES_EVENT_FOREIGN_KEYS_FIXED_SCHEMA_VERSION, LEGACY_STATES_EVENT_ID_INDEX_SCHEMA_VERSION as LEGACY_STATES_EVENT_ID_INDEX_SCHEMA_VERSION, STATES_META_SCHEMA_VERSION as STATES_META_SCHEMA_VERSION, SupportedDialect as SupportedDialect
5
5
  from .db_schema import BIG_INTEGER_SQL as BIG_INTEGER_SQL, Base as Base, CONTEXT_ID_BIN_MAX_LENGTH as CONTEXT_ID_BIN_MAX_LENGTH, DOUBLE_PRECISION_TYPE_SQL as DOUBLE_PRECISION_TYPE_SQL, EventTypes as EventTypes, Events as Events, LEGACY_STATES_ENTITY_ID_LAST_UPDATED_TS_INDEX as LEGACY_STATES_ENTITY_ID_LAST_UPDATED_TS_INDEX, LEGACY_STATES_EVENT_ID_INDEX as LEGACY_STATES_EVENT_ID_INDEX, LegacyBase as LegacyBase, MYSQL_COLLATE as MYSQL_COLLATE, MYSQL_DEFAULT_CHARSET as MYSQL_DEFAULT_CHARSET, MigrationChanges as MigrationChanges, SCHEMA_VERSION as SCHEMA_VERSION, STATISTICS_TABLES as STATISTICS_TABLES, SchemaChanges as SchemaChanges, States as States, StatesMeta as StatesMeta, Statistics as Statistics, StatisticsMeta as StatisticsMeta, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm, TABLE_STATES as TABLE_STATES
6
- from .models import process_timestamp as process_timestamp
6
+ from .models import StatisticMeanType as StatisticMeanType, process_timestamp as process_timestamp
7
7
  from .models.time import datetime_to_timestamp_or_none as datetime_to_timestamp_or_none
8
8
  from .queries import batch_cleanup_entity_ids as batch_cleanup_entity_ids, delete_duplicate_short_term_statistics_row as delete_duplicate_short_term_statistics_row, delete_duplicate_statistics_row as delete_duplicate_statistics_row, find_entity_ids_to_migrate as find_entity_ids_to_migrate, find_event_type_to_migrate as find_event_type_to_migrate, find_events_context_ids_to_migrate as find_events_context_ids_to_migrate, find_states_context_ids_to_migrate as find_states_context_ids_to_migrate, find_unmigrated_short_term_statistics_rows as find_unmigrated_short_term_statistics_rows, find_unmigrated_statistics_rows as find_unmigrated_statistics_rows, get_migration_changes as get_migration_changes, has_entity_ids_to_migrate as has_entity_ids_to_migrate, has_event_type_to_migrate as has_event_type_to_migrate, has_events_context_ids_to_migrate as has_events_context_ids_to_migrate, has_states_context_ids_to_migrate as has_states_context_ids_to_migrate, has_used_states_entity_ids as has_used_states_entity_ids, has_used_states_event_ids as has_used_states_event_ids, migrate_single_short_term_statistics_row_to_timestamp as migrate_single_short_term_statistics_row_to_timestamp, migrate_single_statistics_row_to_timestamp as migrate_single_statistics_row_to_timestamp
9
9
  from .statistics import cleanup_statistics_timestamp_migration as cleanup_statistics_timestamp_migration, get_start_time as get_start_time
@@ -16,12 +16,13 @@ from dataclasses import dataclass
16
16
  from homeassistant.core import HomeAssistant as HomeAssistant
17
17
  from homeassistant.util.enum import try_parse_enum as try_parse_enum
18
18
  from homeassistant.util.ulid import ulid_at_time as ulid_at_time, ulid_to_bytes as ulid_to_bytes
19
+ from sqlalchemy import ForeignKeyConstraint
19
20
  from sqlalchemy.engine import CursorResult as CursorResult, Engine as Engine
20
21
  from sqlalchemy.orm import DeclarativeBase as DeclarativeBase
21
22
  from sqlalchemy.orm.session import Session as Session
22
23
  from sqlalchemy.schema import AddConstraint
23
24
  from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
24
- from typing import Any, final
25
+ from typing import Any, TypedDict, final
25
26
 
26
27
  LIVE_MIGRATION_MIN_SCHEMA_VERSION: int
27
28
  MIGRATION_NOTE_OFFLINE: str
@@ -36,6 +37,8 @@ class _ColumnTypesForDialect:
36
37
  big_int_type: str
37
38
  timestamp_type: str
38
39
  context_bin_type: str
40
+ small_int_type: str
41
+ double_type: str
39
42
 
40
43
  _MYSQL_COLUMN_TYPES: Incomplete
41
44
  _POSTGRESQL_COLUMN_TYPES: Incomplete
@@ -75,6 +78,11 @@ def _execute_or_collect_error(session_maker: Callable[[], Session], query: str,
75
78
  def _drop_index(session_maker: Callable[[], Session], table_name: str, index_name: str, quiet: bool | None = None) -> None: ...
76
79
  def _add_columns(session_maker: Callable[[], Session], table_name: str, columns_def: list[str]) -> None: ...
77
80
  def _modify_columns(session_maker: Callable[[], Session], engine: Engine, table_name: str, columns_def: list[str]) -> None: ...
81
+
82
+ class _FKAlterDict(TypedDict):
83
+ old_fk: ForeignKeyConstraint
84
+ columns: list[str]
85
+
78
86
  def _update_states_table_with_foreign_key_options(session_maker: Callable[[], Session], engine: Engine) -> None: ...
79
87
  def _drop_foreign_key_constraints(session_maker: Callable[[], Session], engine: Engine, table: str, column: str) -> None: ...
80
88
  def _restore_foreign_key_constraints(session_maker: Callable[[], Session], engine: Engine, foreign_columns: list[tuple[str, str, str | None, str | None]]) -> None: ...
@@ -245,6 +253,12 @@ class _SchemaVersion47Migrator(_SchemaVersionMigrator, target_version=47):
245
253
  class _SchemaVersion48Migrator(_SchemaVersionMigrator, target_version=48):
246
254
  def _apply_update(self) -> None: ...
247
255
 
256
+ class _SchemaVersion49Migrator(_SchemaVersionMigrator, target_version=49):
257
+ def _apply_update(self) -> None: ...
258
+
259
+ class _SchemaVersion50Migrator(_SchemaVersionMigrator, target_version=50):
260
+ def _apply_update(self) -> None: ...
261
+
248
262
  def _migrate_statistics_columns_to_timestamp_removing_duplicates(hass: HomeAssistant, instance: Recorder, session_maker: Callable[[], Session], engine: Engine) -> None: ...
249
263
  def _correct_table_character_set_and_collation(table: str, session_maker: Callable[[], Session]) -> None: ...
250
264
  def _wipe_old_string_time_columns(instance: Recorder, engine: Engine, session: Session) -> None: ...