homeassistant-stubs 2024.12.5__py3-none-any.whl → 2025.1.0b0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. homeassistant-stubs/auth/__init__.pyi +1 -1
  2. homeassistant-stubs/auth/mfa_modules/__init__.pyi +6 -4
  3. homeassistant-stubs/auth/mfa_modules/notify.pyi +2 -3
  4. homeassistant-stubs/auth/mfa_modules/totp.pyi +2 -3
  5. homeassistant-stubs/auth/providers/__init__.pyi +6 -4
  6. homeassistant-stubs/auth/providers/command_line.pyi +2 -2
  7. homeassistant-stubs/auth/providers/homeassistant.pyi +2 -2
  8. homeassistant-stubs/auth/providers/insecure_example.pyi +2 -2
  9. homeassistant-stubs/auth/providers/trusted_networks.pyi +2 -2
  10. homeassistant-stubs/backup_restore.pyi +11 -4
  11. homeassistant-stubs/components/abode/light.pyi +4 -3
  12. homeassistant-stubs/components/acaia/__init__.pyi +9 -0
  13. homeassistant-stubs/components/acaia/binary_sensor.pyi +24 -0
  14. homeassistant-stubs/components/acaia/button.pyi +24 -0
  15. homeassistant-stubs/components/acaia/config_flow.pyi +18 -0
  16. homeassistant-stubs/components/acaia/const.pyi +2 -0
  17. homeassistant-stubs/components/acaia/coordinator.pyi +19 -0
  18. homeassistant-stubs/components/{stookalert → acaia}/diagnostics.pyi +2 -3
  19. homeassistant-stubs/components/acaia/entity.pyi +17 -0
  20. homeassistant-stubs/components/acaia/sensor.pyi +44 -0
  21. homeassistant-stubs/components/adax/climate.pyi +0 -1
  22. homeassistant-stubs/components/airtouch5/climate.pyi +0 -1
  23. homeassistant-stubs/components/airzone/climate.pyi +0 -1
  24. homeassistant-stubs/components/airzone_cloud/climate.pyi +3 -2
  25. homeassistant-stubs/components/alarm_control_panel/__init__.pyi +1 -6
  26. homeassistant-stubs/components/alarm_control_panel/const.pyi +0 -14
  27. homeassistant-stubs/components/analytics_insights/config_flow.pyi +3 -2
  28. homeassistant-stubs/components/autarco/__init__.pyi +1 -0
  29. homeassistant-stubs/components/autarco/config_flow.pyi +4 -0
  30. homeassistant-stubs/components/autarco/coordinator.pyi +1 -0
  31. homeassistant-stubs/components/automation/__init__.pyi +1 -10
  32. homeassistant-stubs/components/backup/__init__.pyi +4 -11
  33. homeassistant-stubs/components/backup/agent.pyi +35 -0
  34. homeassistant-stubs/components/backup/backup.pyi +29 -0
  35. homeassistant-stubs/components/backup/config.pyi +117 -0
  36. homeassistant-stubs/components/backup/const.pyi +2 -0
  37. homeassistant-stubs/components/backup/http.pyi +3 -2
  38. homeassistant-stubs/components/backup/manager.pyi +191 -51
  39. homeassistant-stubs/components/backup/models.pyi +35 -0
  40. homeassistant-stubs/components/backup/store.pyi +24 -0
  41. homeassistant-stubs/components/backup/util.pyi +12 -0
  42. homeassistant-stubs/components/backup/websocket.pyi +9 -1
  43. homeassistant-stubs/components/baf/climate.pyi +0 -1
  44. homeassistant-stubs/components/baf/fan.pyi +0 -1
  45. homeassistant-stubs/components/baf/light.pyi +4 -5
  46. homeassistant-stubs/components/bang_olufsen/const.pyi +3 -0
  47. homeassistant-stubs/components/bang_olufsen/media_player.pyi +2 -2
  48. homeassistant-stubs/components/binary_sensor/__init__.pyi +0 -33
  49. homeassistant-stubs/components/bluesound/__init__.pyi +0 -1
  50. homeassistant-stubs/components/bluesound/media_player.pyi +13 -8
  51. homeassistant-stubs/components/bluesound/utils.pyi +2 -0
  52. homeassistant-stubs/components/bmw_connected_drive/__init__.pyi +4 -12
  53. homeassistant-stubs/components/bmw_connected_drive/binary_sensor.pyi +1 -0
  54. homeassistant-stubs/components/bmw_connected_drive/button.pyi +1 -0
  55. homeassistant-stubs/components/bmw_connected_drive/config_flow.pyi +8 -4
  56. homeassistant-stubs/components/bmw_connected_drive/coordinator.pyi +4 -3
  57. homeassistant-stubs/components/bmw_connected_drive/device_tracker.pyi +2 -2
  58. homeassistant-stubs/components/bmw_connected_drive/diagnostics.pyi +1 -0
  59. homeassistant-stubs/components/bmw_connected_drive/lock.pyi +1 -0
  60. homeassistant-stubs/components/bmw_connected_drive/notify.pyi +2 -1
  61. homeassistant-stubs/components/bmw_connected_drive/number.pyi +1 -0
  62. homeassistant-stubs/components/bmw_connected_drive/select.pyi +1 -0
  63. homeassistant-stubs/components/bmw_connected_drive/sensor.pyi +1 -0
  64. homeassistant-stubs/components/bmw_connected_drive/switch.pyi +1 -0
  65. homeassistant-stubs/components/bryant_evolution/climate.pyi +0 -1
  66. homeassistant-stubs/components/cambridge_audio/config_flow.pyi +4 -1
  67. homeassistant-stubs/components/cambridge_audio/media_browser.pyi +8 -0
  68. homeassistant-stubs/components/cambridge_audio/media_player.pyi +4 -3
  69. homeassistant-stubs/components/cambridge_audio/select.pyi +2 -2
  70. homeassistant-stubs/components/cambridge_audio/switch.pyi +2 -2
  71. homeassistant-stubs/components/camera/__init__.pyi +1 -5
  72. homeassistant-stubs/components/camera/const.pyi +0 -8
  73. homeassistant-stubs/components/cert_expiry/config_flow.pyi +0 -1
  74. homeassistant-stubs/components/cert_expiry/sensor.pyi +2 -10
  75. homeassistant-stubs/components/climate/__init__.pyi +1 -12
  76. homeassistant-stubs/components/climate/const.pyi +0 -25
  77. homeassistant-stubs/components/cloud/backup.pyi +36 -0
  78. homeassistant-stubs/components/cloud/const.pyi +2 -0
  79. homeassistant-stubs/components/cloud/http_api.pyi +7 -2
  80. homeassistant-stubs/components/cookidoo/__init__.pyi +9 -0
  81. homeassistant-stubs/components/cookidoo/config_flow.pyi +24 -0
  82. homeassistant-stubs/components/cookidoo/const.pyi +1 -0
  83. homeassistant-stubs/components/cookidoo/coordinator.pyi +25 -0
  84. homeassistant-stubs/components/cookidoo/entity.pyi +10 -0
  85. homeassistant-stubs/components/cookidoo/todo.pyi +32 -0
  86. homeassistant-stubs/components/cover/__init__.pyi +0 -18
  87. homeassistant-stubs/components/crownstone/config_flow.pyi +1 -1
  88. homeassistant-stubs/components/deconz/climate.pyi +0 -1
  89. homeassistant-stubs/components/deconz/fan.pyi +0 -1
  90. homeassistant-stubs/components/deconz/light.pyi +7 -5
  91. homeassistant-stubs/components/demo/climate.pyi +0 -1
  92. homeassistant-stubs/components/demo/fan.pyi +0 -1
  93. homeassistant-stubs/components/demo/light.pyi +4 -2
  94. homeassistant-stubs/components/demo/vacuum.pyi +2 -4
  95. homeassistant-stubs/components/device_tracker/__init__.pyi +1 -7
  96. homeassistant-stubs/components/device_tracker/const.pyi +0 -8
  97. homeassistant-stubs/components/devolo_home_control/__init__.pyi +1 -1
  98. homeassistant-stubs/components/devolo_home_control/binary_sensor.pyi +3 -2
  99. homeassistant-stubs/components/devolo_home_control/climate.pyi +0 -1
  100. homeassistant-stubs/components/devolo_home_control/config_flow.pyi +1 -2
  101. homeassistant-stubs/components/devolo_home_control/const.pyi +0 -2
  102. homeassistant-stubs/components/devolo_home_control/sensor.pyi +1 -3
  103. homeassistant-stubs/components/discovergy/__init__.pyi +2 -2
  104. homeassistant-stubs/components/duotecno/climate.pyi +0 -1
  105. homeassistant-stubs/components/easyenergy/__init__.pyi +4 -5
  106. homeassistant-stubs/components/easyenergy/coordinator.pyi +3 -2
  107. homeassistant-stubs/components/easyenergy/diagnostics.pyi +2 -5
  108. homeassistant-stubs/components/easyenergy/sensor.pyi +2 -3
  109. homeassistant-stubs/components/easyenergy/services.pyi +4 -4
  110. homeassistant-stubs/components/ecovacs/button.pyi +13 -2
  111. homeassistant-stubs/components/ecovacs/const.pyi +1 -0
  112. homeassistant-stubs/components/ecovacs/number.pyi +1 -1
  113. homeassistant-stubs/components/ecovacs/select.pyi +2 -2
  114. homeassistant-stubs/components/ecovacs/sensor.pyi +1 -1
  115. homeassistant-stubs/components/ecovacs/util.pyi +1 -0
  116. homeassistant-stubs/components/ecovacs/vacuum.pyi +3 -3
  117. homeassistant-stubs/components/eheimdigital/__init__.pyi +14 -0
  118. homeassistant-stubs/components/eheimdigital/config_flow.pyi +18 -0
  119. homeassistant-stubs/components/eheimdigital/const.pyi +8 -0
  120. homeassistant-stubs/components/eheimdigital/coordinator.pyi +25 -0
  121. homeassistant-stubs/components/eheimdigital/entity.pyi +20 -0
  122. homeassistant-stubs/components/eheimdigital/light.pyi +36 -0
  123. homeassistant-stubs/components/electrasmart/climate.pyi +0 -1
  124. homeassistant-stubs/components/elevenlabs/__init__.pyi +6 -7
  125. homeassistant-stubs/components/elevenlabs/config_flow.pyi +4 -3
  126. homeassistant-stubs/components/elevenlabs/tts.pyi +6 -3
  127. homeassistant-stubs/components/elgato/__init__.pyi +3 -5
  128. homeassistant-stubs/components/elgato/button.pyi +4 -3
  129. homeassistant-stubs/components/elgato/config_flow.pyi +1 -1
  130. homeassistant-stubs/components/elgato/coordinator.pyi +4 -3
  131. homeassistant-stubs/components/elgato/diagnostics.pyi +2 -2
  132. homeassistant-stubs/components/elgato/light.pyi +6 -7
  133. homeassistant-stubs/components/elgato/sensor.pyi +4 -3
  134. homeassistant-stubs/components/elgato/switch.pyi +4 -3
  135. homeassistant-stubs/components/elkm1/climate.pyi +0 -1
  136. homeassistant-stubs/components/emulated_hue/hue_api.pyi +1 -1
  137. homeassistant-stubs/components/energyzero/__init__.pyi +4 -5
  138. homeassistant-stubs/components/energyzero/coordinator.pyi +2 -1
  139. homeassistant-stubs/components/energyzero/diagnostics.pyi +2 -5
  140. homeassistant-stubs/components/energyzero/sensor.pyi +2 -3
  141. homeassistant-stubs/components/energyzero/services.pyi +4 -4
  142. homeassistant-stubs/components/enigma2/coordinator.pyi +1 -0
  143. homeassistant-stubs/components/enigma2/media_player.pyi +0 -1
  144. homeassistant-stubs/components/enphase_envoy/binary_sensor.pyi +2 -0
  145. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +2 -1
  146. homeassistant-stubs/components/enphase_envoy/coordinator.pyi +2 -2
  147. homeassistant-stubs/components/enphase_envoy/number.pyi +2 -0
  148. homeassistant-stubs/components/enphase_envoy/select.pyi +2 -0
  149. homeassistant-stubs/components/enphase_envoy/sensor.pyi +35 -1
  150. homeassistant-stubs/components/enphase_envoy/switch.pyi +2 -0
  151. homeassistant-stubs/components/esphome/climate.pyi +0 -1
  152. homeassistant-stubs/components/esphome/fan.pyi +0 -1
  153. homeassistant-stubs/components/esphome/light.pyi +0 -2
  154. homeassistant-stubs/components/evohome/climate.pyi +0 -1
  155. homeassistant-stubs/components/fan/__init__.pyi +0 -15
  156. homeassistant-stubs/components/feedreader/__init__.pyi +3 -8
  157. homeassistant-stubs/components/feedreader/config_flow.pyi +1 -6
  158. homeassistant-stubs/components/flexit_bacnet/climate.pyi +0 -1
  159. homeassistant-stubs/components/flexit_bacnet/number.pyi +3 -0
  160. homeassistant-stubs/components/flux_led/light.pyi +4 -5
  161. homeassistant-stubs/components/fritzbox/climate.pyi +0 -1
  162. homeassistant-stubs/components/fritzbox/coordinator.pyi +2 -1
  163. homeassistant-stubs/components/fritzbox/light.pyi +3 -4
  164. homeassistant-stubs/components/fritzbox_callmonitor/base.pyi +13 -2
  165. homeassistant-stubs/components/fritzbox_callmonitor/config_flow.pyi +2 -2
  166. homeassistant-stubs/components/fritzbox_callmonitor/sensor.pyi +4 -4
  167. homeassistant-stubs/components/fronius/__init__.pyi +1 -1
  168. homeassistant-stubs/components/fronius/const.pyi +3 -3
  169. homeassistant-stubs/components/fronius/coordinator.pyi +1 -1
  170. homeassistant-stubs/components/fronius/sensor.pyi +2 -1
  171. homeassistant-stubs/components/fujitsu_fglair/climate.pyi +0 -1
  172. homeassistant-stubs/components/fyta/__init__.pyi +2 -2
  173. homeassistant-stubs/components/fyta/entity.pyi +2 -2
  174. homeassistant-stubs/components/generic_thermostat/climate.pyi +1 -4
  175. homeassistant-stubs/components/generic_thermostat/config_flow.pyi +1 -1
  176. homeassistant-stubs/components/generic_thermostat/const.pyi +2 -0
  177. homeassistant-stubs/components/group/fan.pyi +0 -1
  178. homeassistant-stubs/components/group/registry.pyi +1 -1
  179. homeassistant-stubs/components/history/__init__.pyi +1 -1
  180. homeassistant-stubs/components/history/helpers.pyi +1 -2
  181. homeassistant-stubs/components/history/websocket_api.pyi +1 -1
  182. homeassistant-stubs/components/holiday/__init__.pyi +2 -1
  183. homeassistant-stubs/components/holiday/calendar.pyi +4 -3
  184. homeassistant-stubs/components/holiday/config_flow.pyi +13 -3
  185. homeassistant-stubs/components/holiday/const.pyi +1 -0
  186. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +5 -3
  187. homeassistant-stubs/components/homekit/doorbell.pyi +23 -0
  188. homeassistant-stubs/components/homekit/type_cameras.pyi +4 -12
  189. homeassistant-stubs/components/homekit/type_locks.pyi +3 -2
  190. homeassistant-stubs/components/homekit/type_switches.pyi +1 -1
  191. homeassistant-stubs/components/homekit/util.pyi +1 -0
  192. homeassistant-stubs/components/homewizard/sensor.pyi +1 -1
  193. homeassistant-stubs/components/humidifier/__init__.pyi +1 -8
  194. homeassistant-stubs/components/humidifier/const.pyi +0 -9
  195. homeassistant-stubs/components/husqvarna_automower/__init__.pyi +2 -2
  196. homeassistant-stubs/components/husqvarna_automower/binary_sensor.pyi +1 -0
  197. homeassistant-stubs/components/husqvarna_automower/calendar.pyi +1 -0
  198. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +4 -4
  199. homeassistant-stubs/components/husqvarna_automower/device_tracker.pyi +2 -0
  200. homeassistant-stubs/components/husqvarna_automower/diagnostics.pyi +1 -2
  201. homeassistant-stubs/components/husqvarna_automower/entity.pyi +4 -3
  202. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -0
  203. homeassistant-stubs/components/idasen_desk/__init__.pyi +5 -16
  204. homeassistant-stubs/components/idasen_desk/button.pyi +7 -12
  205. homeassistant-stubs/components/idasen_desk/coordinator.pyi +2 -3
  206. homeassistant-stubs/components/idasen_desk/cover.pyi +8 -17
  207. homeassistant-stubs/components/idasen_desk/entity.pyi +12 -0
  208. homeassistant-stubs/components/idasen_desk/sensor.pyi +7 -20
  209. homeassistant-stubs/components/image_upload/media_source.pyi +14 -0
  210. homeassistant-stubs/components/imap/config_flow.pyi +3 -2
  211. homeassistant-stubs/components/imap/coordinator.pyi +5 -5
  212. homeassistant-stubs/components/imap/sensor.pyi +1 -0
  213. homeassistant-stubs/components/intent/__init__.pyi +2 -1
  214. homeassistant-stubs/components/iotty/switch.pyi +8 -6
  215. homeassistant-stubs/components/iron_os/__init__.pyi +21 -0
  216. homeassistant-stubs/components/iron_os/binary_sensor.pyi +19 -0
  217. homeassistant-stubs/components/iron_os/config_flow.pyi +15 -0
  218. homeassistant-stubs/components/iron_os/const.pyi +7 -0
  219. homeassistant-stubs/components/iron_os/coordinator.pyi +43 -0
  220. homeassistant-stubs/components/iron_os/entity.pyi +13 -0
  221. homeassistant-stubs/components/iron_os/number.pyi +62 -0
  222. homeassistant-stubs/components/iron_os/select.pyi +49 -0
  223. homeassistant-stubs/components/iron_os/sensor.pyi +46 -0
  224. homeassistant-stubs/components/iron_os/update.pyi +29 -0
  225. homeassistant-stubs/components/isy994/climate.pyi +0 -1
  226. homeassistant-stubs/components/isy994/fan.pyi +0 -1
  227. homeassistant-stubs/components/knx/climate.pyi +0 -1
  228. homeassistant-stubs/components/knx/config_flow.pyi +4 -0
  229. homeassistant-stubs/components/knx/fan.pyi +0 -1
  230. homeassistant-stubs/components/knx/services.pyi +5 -5
  231. homeassistant-stubs/components/lamarzocco/__init__.pyi +4 -5
  232. homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +9 -3
  233. homeassistant-stubs/components/lamarzocco/calendar.pyi +1 -0
  234. homeassistant-stubs/components/lamarzocco/config_flow.pyi +6 -5
  235. homeassistant-stubs/components/lamarzocco/coordinator.pyi +39 -16
  236. homeassistant-stubs/components/lamarzocco/entity.pyi +7 -3
  237. homeassistant-stubs/components/lamarzocco/number.pyi +8 -4
  238. homeassistant-stubs/components/lamarzocco/select.pyi +8 -4
  239. homeassistant-stubs/components/lamarzocco/sensor.pyi +10 -3
  240. homeassistant-stubs/components/lamarzocco/switch.pyi +1 -1
  241. homeassistant-stubs/components/lametric/notify.pyi +2 -1
  242. homeassistant-stubs/components/lametric/number.pyi +2 -1
  243. homeassistant-stubs/components/lametric/services.pyi +2 -1
  244. homeassistant-stubs/components/lametric/switch.pyi +2 -1
  245. homeassistant-stubs/components/lcn/__init__.pyi +3 -1
  246. homeassistant-stubs/components/lcn/climate.pyi +0 -1
  247. homeassistant-stubs/components/lcn/const.pyi +1 -0
  248. homeassistant-stubs/components/lcn/helpers.pyi +1 -1
  249. homeassistant-stubs/components/lcn/services.pyi +7 -4
  250. homeassistant-stubs/components/lifx/const.pyi +1 -0
  251. homeassistant-stubs/components/lifx/manager.pyi +2 -2
  252. homeassistant-stubs/components/lifx/util.pyi +2 -2
  253. homeassistant-stubs/components/light/__init__.pyi +31 -55
  254. homeassistant-stubs/components/light/const.pyi +33 -0
  255. homeassistant-stubs/components/light/device_action.pyi +2 -1
  256. homeassistant-stubs/components/light/device_condition.pyi +1 -1
  257. homeassistant-stubs/components/light/device_trigger.pyi +1 -1
  258. homeassistant-stubs/components/light/intent.pyi +2 -1
  259. homeassistant-stubs/components/light/reproduce_state.pyi +2 -1
  260. homeassistant-stubs/components/light/significant_change.pyi +1 -1
  261. homeassistant-stubs/components/litterrobot/vacuum.pyi +2 -2
  262. homeassistant-stubs/components/lock/__init__.pyi +1 -2
  263. homeassistant-stubs/components/lookin/climate.pyi +0 -1
  264. homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
  265. homeassistant-stubs/components/mastodon/config_flow.pyi +1 -2
  266. homeassistant-stubs/components/mastodon/sensor.pyi +2 -0
  267. homeassistant-stubs/components/matter/climate.pyi +0 -1
  268. homeassistant-stubs/components/matter/fan.pyi +0 -1
  269. homeassistant-stubs/components/matter/light.pyi +5 -5
  270. homeassistant-stubs/components/matter/vacuum.pyi +3 -3
  271. homeassistant-stubs/components/mealie/__init__.pyi +18 -0
  272. homeassistant-stubs/components/mealie/calendar.pyi +21 -0
  273. homeassistant-stubs/components/mealie/config_flow.pyi +20 -0
  274. homeassistant-stubs/components/mealie/const.pyi +14 -0
  275. homeassistant-stubs/components/mealie/coordinator.pyi +53 -0
  276. homeassistant-stubs/components/mealie/diagnostics.pyi +5 -0
  277. homeassistant-stubs/components/mealie/entity.pyi +11 -0
  278. homeassistant-stubs/components/mealie/sensor.pyi +29 -0
  279. homeassistant-stubs/components/mealie/services.pyi +21 -0
  280. homeassistant-stubs/components/mealie/todo.pyi +36 -0
  281. homeassistant-stubs/components/mealie/utils.pyi +3 -0
  282. homeassistant-stubs/components/media_player/__init__.pyi +0 -2
  283. homeassistant-stubs/components/modbus/climate.pyi +0 -1
  284. homeassistant-stubs/components/modbus/fan.pyi +0 -1
  285. homeassistant-stubs/components/modbus/modbus.pyi +3 -3
  286. homeassistant-stubs/components/mqtt/client.pyi +1 -1
  287. homeassistant-stubs/components/mqtt/climate.pyi +0 -1
  288. homeassistant-stubs/components/mqtt/config_flow.pyi +2 -1
  289. homeassistant-stubs/components/mqtt/fan.pyi +0 -1
  290. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +5 -5
  291. homeassistant-stubs/components/mqtt/light/schema_json.pyi +4 -4
  292. homeassistant-stubs/components/mqtt/light/schema_template.pyi +4 -4
  293. homeassistant-stubs/components/mqtt/switch.pyi +1 -1
  294. homeassistant-stubs/components/mqtt/vacuum.pyi +10 -4
  295. homeassistant-stubs/components/music_assistant/__init__.pyi +4 -0
  296. homeassistant-stubs/components/music_assistant/actions.pyi +18 -0
  297. homeassistant-stubs/components/music_assistant/const.pyi +48 -0
  298. homeassistant-stubs/components/music_assistant/media_player.pyi +9 -16
  299. homeassistant-stubs/components/music_assistant/schemas.pyi +20 -0
  300. homeassistant-stubs/components/mysensors/climate.pyi +0 -1
  301. homeassistant-stubs/components/myuplink/__init__.pyi +5 -2
  302. homeassistant-stubs/components/myuplink/binary_sensor.pyi +2 -2
  303. homeassistant-stubs/components/myuplink/config_flow.pyi +4 -1
  304. homeassistant-stubs/components/myuplink/number.pyi +2 -2
  305. homeassistant-stubs/components/myuplink/select.pyi +3 -2
  306. homeassistant-stubs/components/myuplink/switch.pyi +1 -1
  307. homeassistant-stubs/components/nanoleaf/light.pyi +4 -4
  308. homeassistant-stubs/components/neato/vacuum.pyi +3 -3
  309. homeassistant-stubs/components/nest/__init__.pyi +6 -6
  310. homeassistant-stubs/components/nest/camera.pyi +2 -4
  311. homeassistant-stubs/components/nest/climate.pyi +2 -5
  312. homeassistant-stubs/components/nest/const.pyi +0 -2
  313. homeassistant-stubs/components/nest/device_info.pyi +2 -1
  314. homeassistant-stubs/components/nest/diagnostics.pyi +4 -8
  315. homeassistant-stubs/components/nest/event.pyi +2 -4
  316. homeassistant-stubs/components/nest/sensor.pyi +2 -4
  317. homeassistant-stubs/components/nest/types.pyi +11 -0
  318. homeassistant-stubs/components/netatmo/climate.pyi +0 -1
  319. homeassistant-stubs/components/netatmo/fan.pyi +0 -1
  320. homeassistant-stubs/components/nordpool/__init__.pyi +6 -0
  321. homeassistant-stubs/components/nordpool/coordinator.pyi +5 -2
  322. homeassistant-stubs/components/nordpool/entity.pyi +1 -1
  323. homeassistant-stubs/components/nordpool/sensor.pyi +10 -6
  324. homeassistant-stubs/components/nordpool/services.pyi +19 -0
  325. homeassistant-stubs/components/number/const.pyi +0 -8
  326. homeassistant-stubs/components/onkyo/config_flow.pyi +2 -0
  327. homeassistant-stubs/components/onkyo/media_player.pyi +10 -7
  328. homeassistant-stubs/components/overkiz/__init__.pyi +4 -3
  329. homeassistant-stubs/components/overkiz/alarm_control_panel.pyi +2 -4
  330. homeassistant-stubs/components/overkiz/binary_sensor.pyi +3 -4
  331. homeassistant-stubs/components/overkiz/button.pyi +4 -5
  332. homeassistant-stubs/components/overkiz/climate/__init__.pyi +3 -4
  333. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater.pyi +0 -1
  334. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.pyi +0 -1
  335. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_towel_dryer.pyi +1 -2
  336. homeassistant-stubs/components/overkiz/climate/atlantic_heat_recovery_ventilation.pyi +0 -1
  337. homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_heat_pump_main_component.pyi +0 -1
  338. homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_heating_zone.pyi +0 -1
  339. homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_zone_control.pyi +0 -1
  340. homeassistant-stubs/components/overkiz/climate/hitachi_air_to_air_heat_pump_hlrrwifi.pyi +0 -1
  341. homeassistant-stubs/components/overkiz/climate/hitachi_air_to_air_heat_pump_ovp.pyi +0 -1
  342. homeassistant-stubs/components/overkiz/climate/hitachi_air_to_water_heating_zone.pyi +34 -0
  343. homeassistant-stubs/components/overkiz/climate/somfy_heating_temperature_interface.pyi +0 -1
  344. homeassistant-stubs/components/overkiz/climate/somfy_thermostat.pyi +0 -1
  345. homeassistant-stubs/components/overkiz/climate/valve_heating_temperature_interface.pyi +0 -1
  346. homeassistant-stubs/components/overkiz/cover/__init__.pyi +2 -4
  347. homeassistant-stubs/components/overkiz/diagnostics.pyi +4 -5
  348. homeassistant-stubs/components/overkiz/light.pyi +2 -4
  349. homeassistant-stubs/components/overkiz/lock.pyi +2 -4
  350. homeassistant-stubs/components/overkiz/number.pyi +3 -4
  351. homeassistant-stubs/components/overkiz/scene.pyi +2 -4
  352. homeassistant-stubs/components/overkiz/select.pyi +3 -4
  353. homeassistant-stubs/components/overkiz/sensor.pyi +2 -3
  354. homeassistant-stubs/components/overkiz/siren.pyi +2 -4
  355. homeassistant-stubs/components/overkiz/switch.pyi +2 -4
  356. homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +2 -4
  357. homeassistant-stubs/components/peblar/__init__.pyi +11 -0
  358. homeassistant-stubs/components/peblar/binary_sensor.pyi +25 -0
  359. homeassistant-stubs/components/peblar/button.pyi +27 -0
  360. homeassistant-stubs/components/peblar/config_flow.pyi +18 -0
  361. homeassistant-stubs/components/peblar/const.pyi +7 -0
  362. homeassistant-stubs/components/peblar/coordinator.pyi +50 -0
  363. homeassistant-stubs/components/peblar/diagnostics.pyi +5 -0
  364. homeassistant-stubs/components/peblar/entity.pyi +15 -0
  365. homeassistant-stubs/components/peblar/helpers.pyi +7 -0
  366. homeassistant-stubs/components/peblar/number.pyi +33 -0
  367. homeassistant-stubs/components/peblar/select.pyi +30 -0
  368. homeassistant-stubs/components/peblar/sensor.pyi +29 -0
  369. homeassistant-stubs/components/peblar/switch.pyi +32 -0
  370. homeassistant-stubs/components/peblar/update.pyi +26 -0
  371. homeassistant-stubs/components/plugwise/binary_sensor.pyi +1 -0
  372. homeassistant-stubs/components/plugwise/button.pyi +2 -0
  373. homeassistant-stubs/components/plugwise/climate.pyi +3 -4
  374. homeassistant-stubs/components/plugwise/config_flow.pyi +7 -1
  375. homeassistant-stubs/components/plugwise/entity.pyi +0 -1
  376. homeassistant-stubs/components/plugwise/number.pyi +2 -0
  377. homeassistant-stubs/components/plugwise/select.pyi +2 -0
  378. homeassistant-stubs/components/plugwise/sensor.pyi +2 -0
  379. homeassistant-stubs/components/plugwise/switch.pyi +2 -0
  380. homeassistant-stubs/components/plugwise/util.pyi +1 -0
  381. homeassistant-stubs/components/powerfox/__init__.pyi +12 -0
  382. homeassistant-stubs/components/powerfox/config_flow.pyi +16 -0
  383. homeassistant-stubs/components/{stookalert → powerfox}/const.pyi +1 -2
  384. homeassistant-stubs/components/powerfox/coordinator.pyi +14 -0
  385. homeassistant-stubs/components/powerfox/diagnostics.pyi +5 -0
  386. homeassistant-stubs/components/powerfox/entity.pyi +11 -0
  387. homeassistant-stubs/components/powerfox/sensor.pyi +28 -0
  388. homeassistant-stubs/components/powerwall/sensor.pyi +3 -5
  389. homeassistant-stubs/components/rabbitair/fan.pyi +0 -1
  390. homeassistant-stubs/components/recorder/db_schema.pyi +19 -4
  391. homeassistant-stubs/components/recorder/history/legacy.pyi +4 -4
  392. homeassistant-stubs/components/recorder/history/modern.pyi +5 -5
  393. homeassistant-stubs/components/recorder/migration.pyi +29 -19
  394. homeassistant-stubs/components/recorder/models/state.pyi +3 -0
  395. homeassistant-stubs/components/recorder/queries.pyi +3 -4
  396. homeassistant-stubs/components/recorder/statistics.pyi +2 -2
  397. homeassistant-stubs/components/recorder/table_managers/event_types.pyi +0 -1
  398. homeassistant-stubs/components/recorder/table_managers/recorder_runs.pyi +1 -12
  399. homeassistant-stubs/components/recorder/table_managers/states.pyi +7 -0
  400. homeassistant-stubs/components/remote/__init__.pyi +0 -10
  401. homeassistant-stubs/components/renault/binary_sensor.pyi +2 -0
  402. homeassistant-stubs/components/renault/button.pyi +2 -0
  403. homeassistant-stubs/components/renault/coordinator.pyi +2 -1
  404. homeassistant-stubs/components/renault/device_tracker.pyi +2 -0
  405. homeassistant-stubs/components/renault/select.pyi +2 -0
  406. homeassistant-stubs/components/renault/sensor.pyi +2 -0
  407. homeassistant-stubs/components/reolink/button.pyi +1 -2
  408. homeassistant-stubs/components/reolink/camera.pyi +1 -2
  409. homeassistant-stubs/components/reolink/light.pyi +1 -2
  410. homeassistant-stubs/components/reolink/number.pyi +1 -2
  411. homeassistant-stubs/components/reolink/select.pyi +1 -2
  412. homeassistant-stubs/components/reolink/services.pyi +2 -2
  413. homeassistant-stubs/components/reolink/siren.pyi +1 -2
  414. homeassistant-stubs/components/reolink/switch.pyi +1 -2
  415. homeassistant-stubs/components/reolink/update.pyi +1 -0
  416. homeassistant-stubs/components/reolink/util.pyi +7 -0
  417. homeassistant-stubs/components/roborock/vacuum.pyi +2 -2
  418. homeassistant-stubs/components/roku/__init__.pyi +5 -4
  419. homeassistant-stubs/components/roku/binary_sensor.pyi +4 -3
  420. homeassistant-stubs/components/roku/config_flow.pyi +5 -3
  421. homeassistant-stubs/components/roku/diagnostics.pyi +2 -4
  422. homeassistant-stubs/components/roku/media_player.pyi +4 -3
  423. homeassistant-stubs/components/roku/remote.pyi +4 -4
  424. homeassistant-stubs/components/roku/select.pyi +4 -4
  425. homeassistant-stubs/components/roku/sensor.pyi +4 -4
  426. homeassistant-stubs/components/romy/vacuum.pyi +2 -2
  427. homeassistant-stubs/components/russound_rio/__init__.pyi +14 -0
  428. homeassistant-stubs/components/russound_rio/config_flow.pyi +14 -0
  429. homeassistant-stubs/components/russound_rio/const.pyi +7 -0
  430. homeassistant-stubs/components/russound_rio/diagnostics.pyi +5 -0
  431. homeassistant-stubs/components/russound_rio/entity.pyi +25 -0
  432. homeassistant-stubs/components/russound_rio/media_player.pyi +56 -0
  433. homeassistant-stubs/components/schlage/__init__.pyi +11 -0
  434. homeassistant-stubs/components/schlage/binary_sensor.pyi +26 -0
  435. homeassistant-stubs/components/schlage/config_flow.pyi +19 -0
  436. homeassistant-stubs/components/schlage/const.pyi +6 -0
  437. homeassistant-stubs/components/schlage/coordinator.pyi +31 -0
  438. homeassistant-stubs/components/schlage/diagnostics.pyi +5 -0
  439. homeassistant-stubs/components/schlage/entity.pyi +19 -0
  440. homeassistant-stubs/components/schlage/lock.pyi +21 -0
  441. homeassistant-stubs/components/schlage/select.pyi +20 -0
  442. homeassistant-stubs/components/schlage/sensor.pyi +19 -0
  443. homeassistant-stubs/components/schlage/switch.pyi +32 -0
  444. homeassistant-stubs/components/sensibo/climate.pyi +2 -3
  445. homeassistant-stubs/components/sensibo/coordinator.pyi +1 -1
  446. homeassistant-stubs/components/sensor/const.pyi +0 -7
  447. homeassistant-stubs/components/senz/climate.pyi +0 -1
  448. homeassistant-stubs/components/shelly/climate.pyi +0 -2
  449. homeassistant-stubs/components/siren/__init__.pyi +1 -6
  450. homeassistant-stubs/components/siren/const.pyi +0 -11
  451. homeassistant-stubs/components/snooz/fan.pyi +0 -1
  452. homeassistant-stubs/components/solarlog/config_flow.pyi +2 -5
  453. homeassistant-stubs/components/solarlog/const.pyi +0 -1
  454. homeassistant-stubs/components/solarlog/coordinator.pyi +0 -1
  455. homeassistant-stubs/components/starlink/coordinator.pyi +4 -2
  456. homeassistant-stubs/components/starlink/sensor.pyi +1 -1
  457. homeassistant-stubs/components/statistics/sensor.pyi +43 -40
  458. homeassistant-stubs/components/stream/__init__.pyi +13 -0
  459. homeassistant-stubs/components/suez_water/__init__.pyi +3 -5
  460. homeassistant-stubs/components/suez_water/coordinator.pyi +7 -9
  461. homeassistant-stubs/components/suez_water/sensor.pyi +5 -6
  462. homeassistant-stubs/components/sun/__init__.pyi +2 -0
  463. homeassistant-stubs/components/sun/entity.pyi +1 -2
  464. homeassistant-stubs/components/switch/__init__.pyi +0 -7
  465. homeassistant-stubs/components/switch_as_x/fan.pyi +0 -1
  466. homeassistant-stubs/components/switchbee/climate.pyi +0 -1
  467. homeassistant-stubs/components/switchbot_cloud/climate.pyi +0 -1
  468. homeassistant-stubs/components/switchbot_cloud/sensor.pyi +12 -3
  469. homeassistant-stubs/components/switchbot_cloud/switch.pyi +4 -0
  470. homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +3 -3
  471. homeassistant-stubs/components/switcher_kis/climate.pyi +1 -2
  472. homeassistant-stubs/components/switcher_kis/cover.pyi +0 -4
  473. homeassistant-stubs/components/switcher_kis/entity.pyi +6 -0
  474. homeassistant-stubs/components/switcher_kis/light.pyi +0 -4
  475. homeassistant-stubs/components/switcher_kis/switch.pyi +0 -2
  476. homeassistant-stubs/components/tailwind/__init__.pyi +2 -4
  477. homeassistant-stubs/components/tailwind/binary_sensor.pyi +1 -1
  478. homeassistant-stubs/components/tailwind/button.pyi +1 -1
  479. homeassistant-stubs/components/tailwind/coordinator.pyi +2 -1
  480. homeassistant-stubs/components/tailwind/cover.pyi +1 -1
  481. homeassistant-stubs/components/tailwind/diagnostics.pyi +1 -1
  482. homeassistant-stubs/components/tailwind/number.pyi +1 -1
  483. homeassistant-stubs/components/tedee/__init__.pyi +2 -3
  484. homeassistant-stubs/components/tedee/binary_sensor.pyi +2 -0
  485. homeassistant-stubs/components/tedee/sensor.pyi +2 -0
  486. homeassistant-stubs/components/tibber/services.pyi +1 -1
  487. homeassistant-stubs/components/tolo/climate.pyi +0 -1
  488. homeassistant-stubs/components/tolo/fan.pyi +0 -1
  489. homeassistant-stubs/components/tplink/__init__.pyi +1 -1
  490. homeassistant-stubs/components/tplink/binary_sensor.pyi +2 -2
  491. homeassistant-stubs/components/tplink/button.pyi +2 -2
  492. homeassistant-stubs/components/tplink/camera.pyi +49 -0
  493. homeassistant-stubs/components/tplink/climate.pyi +1 -2
  494. homeassistant-stubs/components/tplink/config_flow.pyi +11 -5
  495. homeassistant-stubs/components/tplink/const.pyi +2 -0
  496. homeassistant-stubs/components/tplink/entity.pyi +9 -2
  497. homeassistant-stubs/components/tplink/fan.pyi +1 -2
  498. homeassistant-stubs/components/tplink/light.pyi +2 -2
  499. homeassistant-stubs/components/tplink/models.pyi +4 -1
  500. homeassistant-stubs/components/tplink/number.pyi +2 -2
  501. homeassistant-stubs/components/tplink/select.pyi +2 -2
  502. homeassistant-stubs/components/tplink/sensor.pyi +2 -2
  503. homeassistant-stubs/components/tplink/siren.pyi +1 -1
  504. homeassistant-stubs/components/tplink/switch.pyi +2 -2
  505. homeassistant-stubs/components/tractive/sensor.pyi +1 -1
  506. homeassistant-stubs/components/tradfri/fan.pyi +0 -1
  507. homeassistant-stubs/components/tradfri/light.pyi +4 -4
  508. homeassistant-stubs/components/transmission/__init__.pyi +1 -1
  509. homeassistant-stubs/components/transmission/const.pyi +1 -0
  510. homeassistant-stubs/components/twentemilieu/__init__.pyi +3 -11
  511. homeassistant-stubs/components/twentemilieu/calendar.pyi +1 -1
  512. homeassistant-stubs/components/twentemilieu/coordinator.pyi +14 -0
  513. homeassistant-stubs/components/twentemilieu/diagnostics.pyi +2 -2
  514. homeassistant-stubs/components/twentemilieu/entity.pyi +2 -3
  515. homeassistant-stubs/components/twentemilieu/sensor.pyi +3 -3
  516. homeassistant-stubs/components/unifi/sensor.pyi +1 -1
  517. homeassistant-stubs/components/unifiprotect/const.pyi +6 -0
  518. homeassistant-stubs/components/unifiprotect/event.pyi +5 -3
  519. homeassistant-stubs/components/unifiprotect/services.pyi +16 -9
  520. homeassistant-stubs/components/update/__init__.pyi +0 -2
  521. homeassistant-stubs/components/vacuum/__init__.pyi +16 -7
  522. homeassistant-stubs/components/vacuum/const.pyi +18 -5
  523. homeassistant-stubs/components/vacuum/device_condition.pyi +1 -1
  524. homeassistant-stubs/components/vacuum/device_trigger.pyi +1 -1
  525. homeassistant-stubs/components/vacuum/reproduce_state.pyi +2 -2
  526. homeassistant-stubs/components/vallox/fan.pyi +0 -1
  527. homeassistant-stubs/components/velbus/__init__.pyi +22 -9
  528. homeassistant-stubs/components/velbus/binary_sensor.pyi +4 -3
  529. homeassistant-stubs/components/velbus/button.pyi +4 -3
  530. homeassistant-stubs/components/velbus/climate.pyi +4 -3
  531. homeassistant-stubs/components/velbus/cover.pyi +4 -3
  532. homeassistant-stubs/components/velbus/diagnostics.pyi +3 -4
  533. homeassistant-stubs/components/velbus/light.pyi +4 -3
  534. homeassistant-stubs/components/velbus/select.pyi +4 -3
  535. homeassistant-stubs/components/velbus/sensor.pyi +4 -3
  536. homeassistant-stubs/components/velbus/services.pyi +7 -0
  537. homeassistant-stubs/components/velbus/switch.pyi +4 -3
  538. homeassistant-stubs/components/water_heater/__init__.pyi +7 -12
  539. homeassistant-stubs/components/wemo/fan.pyi +0 -1
  540. homeassistant-stubs/components/wemo/light.pyi +4 -2
  541. homeassistant-stubs/components/wiz/light.pyi +4 -5
  542. homeassistant-stubs/components/yale_smart_alarm/__init__.pyi +4 -4
  543. homeassistant-stubs/components/yale_smart_alarm/alarm_control_panel.pyi +0 -1
  544. homeassistant-stubs/components/yale_smart_alarm/config_flow.pyi +3 -2
  545. homeassistant-stubs/components/yale_smart_alarm/coordinator.pyi +3 -3
  546. homeassistant-stubs/components/yale_smart_alarm/entity.pyi +1 -1
  547. homeassistant-stubs/components/yale_smart_alarm/lock.pyi +1 -1
  548. homeassistant-stubs/components/zwave_js/api.pyi +2 -0
  549. homeassistant-stubs/components/zwave_js/climate.pyi +0 -1
  550. homeassistant-stubs/components/zwave_js/fan.pyi +0 -1
  551. homeassistant-stubs/components/zwave_js/light.pyi +7 -9
  552. homeassistant-stubs/const.pyi +2 -151
  553. homeassistant-stubs/core.pyi +3 -6
  554. homeassistant-stubs/core_config.pyi +2 -1
  555. homeassistant-stubs/data_entry_flow.pyi +0 -13
  556. homeassistant-stubs/exceptions.pyi +6 -0
  557. homeassistant-stubs/helpers/device_registry.pyi +1 -9
  558. homeassistant-stubs/helpers/entity.pyi +1 -2
  559. homeassistant-stubs/helpers/event.pyi +3 -4
  560. homeassistant-stubs/helpers/service.pyi +1 -1
  561. homeassistant-stubs/helpers/service_info/mqtt.pyi +1 -1
  562. homeassistant-stubs/helpers/template.pyi +1 -1
  563. homeassistant-stubs/util/dt.pyi +1 -0
  564. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/METADATA +2 -2
  565. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/RECORD +567 -474
  566. homeassistant-stubs/components/bluesound/services.pyi +0 -21
  567. homeassistant-stubs/components/stookalert/__init__.pyi +0 -10
  568. homeassistant-stubs/components/stookalert/binary_sensor.pyi +0 -24
  569. homeassistant-stubs/components/stookalert/config_flow.pyi +0 -7
  570. homeassistant-stubs/components/tailwind/typing.pyi +0 -4
  571. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/WHEEL +0 -0
  572. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -13,7 +13,6 @@ from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_MODE as A
13
13
  from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, Context as Context, CoreState as CoreState, Event as Event, HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback, split_entity_id as split_entity_id, valid_entity_id as valid_entity_id
14
14
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceNotFound as ServiceNotFound, TemplateError as TemplateError
15
15
  from homeassistant.helpers import condition as condition
16
- from homeassistant.helpers.deprecation import DeprecatedConstant as DeprecatedConstant, all_with_deprecated_constants as all_with_deprecated_constants, check_if_deprecated_constant as check_if_deprecated_constant, dir_with_deprecated_constants as dir_with_deprecated_constants
17
16
  from homeassistant.helpers.entity import ToggleEntity as ToggleEntity
18
17
  from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
19
18
  from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
@@ -22,7 +21,7 @@ from homeassistant.helpers.script import ATTR_CUR as ATTR_CUR, ATTR_MAX as ATTR_
22
21
  from homeassistant.helpers.script_variables import ScriptVariables as ScriptVariables
23
22
  from homeassistant.helpers.service import ReloadServiceHelper as ReloadServiceHelper, async_register_admin_service as async_register_admin_service
24
23
  from homeassistant.helpers.trace import TraceElement as TraceElement, script_execution_set as script_execution_set, trace_append_element as trace_append_element, trace_get as trace_get, trace_path as trace_path
25
- from homeassistant.helpers.trigger import TriggerActionType as TriggerActionType, TriggerData as TriggerData, TriggerInfo as TriggerInfo, async_initialize_triggers as async_initialize_triggers
24
+ from homeassistant.helpers.trigger import async_initialize_triggers as async_initialize_triggers
26
25
  from homeassistant.helpers.typing import ConfigType as ConfigType
27
26
  from homeassistant.loader import bind_hass as bind_hass
28
27
  from homeassistant.util.dt import parse_datetime as parse_datetime
@@ -45,10 +44,6 @@ class IfAction(Protocol):
45
44
  config: list[ConfigType]
46
45
  def __call__(self, variables: Mapping[str, Any] | None = None) -> bool: ...
47
46
 
48
- _DEPRECATED_AutomationActionType: Incomplete
49
- _DEPRECATED_AutomationTriggerData: Incomplete
50
- _DEPRECATED_AutomationTriggerInfo: Incomplete
51
-
52
47
  def is_on(hass: HomeAssistant, entity_id: str) -> bool: ...
53
48
  def _automations_with_x(hass: HomeAssistant, referenced_id: str, property_name: str) -> list[str]: ...
54
49
  def _x_in_automation(hass: HomeAssistant, entity_id: str, property_name: str) -> list[str]: ...
@@ -169,7 +164,3 @@ async def _async_process_if(hass: HomeAssistant, name: str, config: dict[str, An
169
164
  def _trigger_extract_devices(trigger_conf: dict) -> list[str]: ...
170
165
  def _trigger_extract_entities(trigger_conf: dict) -> list[str]: ...
171
166
  def websocket_config(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
172
-
173
- __getattr__: Incomplete
174
- __dir__: Incomplete
175
- __all__: Incomplete
@@ -1,12 +1,5 @@
1
- from .const import DATA_MANAGER as DATA_MANAGER, DOMAIN as DOMAIN, LOGGER as LOGGER
2
- from .http import async_register_http_views as async_register_http_views
3
- from .manager import BackupManager as BackupManager
4
- from .websocket import async_register_websocket_handlers as async_register_websocket_handlers
5
- from _typeshed import Incomplete
6
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
7
- from homeassistant.helpers.hassio import is_hassio as is_hassio
8
- from homeassistant.helpers.typing import ConfigType as ConfigType
1
+ from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
2
+ from .manager import BackupPlatformProtocol as BackupPlatformProtocol, BackupReaderWriter as BackupReaderWriter, CreateBackupEvent as CreateBackupEvent, ManagerBackup as ManagerBackup, NewBackup as NewBackup, WrittenBackup as WrittenBackup
3
+ from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
9
4
 
10
- CONFIG_SCHEMA: Incomplete
11
-
12
- async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
5
+ __all__ = ['AddonInfo', 'AgentBackup', 'ManagerBackup', 'BackupAgent', 'BackupAgentError', 'BackupAgentPlatformProtocol', 'BackupPlatformProtocol', 'BackupReaderWriter', 'CreateBackupEvent', 'Folder', 'LocalBackupAgent', 'NewBackup', 'WrittenBackup']
@@ -0,0 +1,35 @@
1
+ import abc
2
+ from .models import AgentBackup as AgentBackup
3
+ from collections.abc import AsyncIterator, Callable as Callable, Coroutine
4
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
5
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
6
+ from pathlib import Path
7
+ from typing import Any, Protocol
8
+
9
+ class BackupAgentError(HomeAssistantError): ...
10
+
11
+ class BackupAgentUnreachableError(BackupAgentError):
12
+ _message: str
13
+
14
+ class BackupAgent(abc.ABC, metaclass=abc.ABCMeta):
15
+ domain: str
16
+ name: str
17
+ def agent_id(self) -> str: ...
18
+ @abc.abstractmethod
19
+ async def async_download_backup(self, backup_id: str, **kwargs: Any) -> AsyncIterator[bytes]: ...
20
+ @abc.abstractmethod
21
+ async def async_upload_backup(self, *, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], backup: AgentBackup, **kwargs: Any) -> None: ...
22
+ @abc.abstractmethod
23
+ async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
24
+ @abc.abstractmethod
25
+ async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]: ...
26
+ @abc.abstractmethod
27
+ async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
28
+
29
+ class LocalBackupAgent(BackupAgent, metaclass=abc.ABCMeta):
30
+ @abc.abstractmethod
31
+ def get_backup_path(self, backup_id: str) -> Path: ...
32
+
33
+ class BackupAgentPlatformProtocol(Protocol):
34
+ async def async_get_backup_agents(self, hass: HomeAssistant, **kwargs: Any) -> list[BackupAgent]: ...
35
+ def async_register_backup_agents_listener(self, hass: HomeAssistant, *, listener: Callable[[], None], **kwargs: Any) -> Callable[[], None]: ...
@@ -0,0 +1,29 @@
1
+ from .agent import BackupAgent as BackupAgent, LocalBackupAgent as LocalBackupAgent
2
+ from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
3
+ from .models import AgentBackup as AgentBackup
4
+ from .util import read_backup as read_backup
5
+ from _typeshed import Incomplete
6
+ from collections.abc import AsyncIterator, Callable as Callable, Coroutine
7
+ from homeassistant.core import HomeAssistant as HomeAssistant
8
+ from homeassistant.helpers.hassio import is_hassio as is_hassio
9
+ from pathlib import Path
10
+ from typing import Any
11
+
12
+ async def async_get_backup_agents(hass: HomeAssistant, **kwargs: Any) -> list[BackupAgent]: ...
13
+
14
+ class CoreLocalBackupAgent(LocalBackupAgent):
15
+ domain = DOMAIN
16
+ name: str
17
+ _hass: Incomplete
18
+ _backup_dir: Incomplete
19
+ _backups: Incomplete
20
+ _loaded_backups: bool
21
+ def __init__(self, hass: HomeAssistant) -> None: ...
22
+ async def _load_backups(self) -> None: ...
23
+ def _read_backups(self) -> dict[str, AgentBackup]: ...
24
+ async def async_download_backup(self, backup_id: str, **kwargs: Any) -> AsyncIterator[bytes]: ...
25
+ async def async_upload_backup(self, *, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], backup: AgentBackup, **kwargs: Any) -> None: ...
26
+ async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]: ...
27
+ async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup | None: ...
28
+ def get_backup_path(self, backup_id: str) -> Path: ...
29
+ async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
@@ -0,0 +1,117 @@
1
+ from .const import LOGGER as LOGGER
2
+ from .manager import BackupManager as BackupManager, ManagerBackup as ManagerBackup
3
+ from .models import Folder as Folder
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable
6
+ from cronsim import CronSim
7
+ from dataclasses import dataclass
8
+ from datetime import datetime
9
+ from enum import StrEnum
10
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
+ from homeassistant.helpers.event import async_call_later as async_call_later, async_track_point_in_time as async_track_point_in_time
12
+ from homeassistant.helpers.typing import UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
13
+ from typing import Self, TypedDict
14
+
15
+ CRON_PATTERN_DAILY: str
16
+ CRON_PATTERN_WEEKLY: str
17
+
18
+ class StoredBackupConfig(TypedDict):
19
+ create_backup: StoredCreateBackupConfig
20
+ last_attempted_automatic_backup: str | None
21
+ last_completed_automatic_backup: str | None
22
+ retention: StoredRetentionConfig
23
+ schedule: StoredBackupSchedule
24
+
25
+ @dataclass(kw_only=True)
26
+ class BackupConfigData:
27
+ create_backup: CreateBackupConfig
28
+ last_attempted_automatic_backup: datetime | None = ...
29
+ last_completed_automatic_backup: datetime | None = ...
30
+ retention: RetentionConfig
31
+ schedule: BackupSchedule
32
+ @classmethod
33
+ def from_dict(cls, data: StoredBackupConfig) -> Self: ...
34
+ def to_dict(self) -> StoredBackupConfig: ...
35
+ def __init__(self, *, create_backup, last_attempted_automatic_backup=..., last_completed_automatic_backup=..., retention, schedule) -> None: ...
36
+
37
+ class BackupConfig:
38
+ data: Incomplete
39
+ _manager: Incomplete
40
+ def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
41
+ def load(self, stored_config: StoredBackupConfig) -> None: ...
42
+ async def update(self, *, create_backup: CreateBackupParametersDict | UndefinedType = ..., retention: RetentionParametersDict | UndefinedType = ..., schedule: ScheduleState | UndefinedType = ...) -> None: ...
43
+
44
+ @dataclass(kw_only=True)
45
+ class RetentionConfig:
46
+ copies: int | None = ...
47
+ days: int | None = ...
48
+ def apply(self, manager: BackupManager) -> None: ...
49
+ def to_dict(self) -> StoredRetentionConfig: ...
50
+ def _schedule_next(self, manager: BackupManager) -> None: ...
51
+ def _unschedule_next(self, manager: BackupManager) -> None: ...
52
+ def __init__(self, *, copies=..., days=...) -> None: ...
53
+
54
+ class StoredRetentionConfig(TypedDict):
55
+ copies: int | None
56
+ days: int | None
57
+
58
+ class RetentionParametersDict(TypedDict, total=False):
59
+ copies: int | None
60
+ days: int | None
61
+
62
+ class StoredBackupSchedule(TypedDict):
63
+ state: ScheduleState
64
+
65
+ class ScheduleState(StrEnum):
66
+ NEVER = 'never'
67
+ DAILY = 'daily'
68
+ MONDAY = 'mon'
69
+ TUESDAY = 'tue'
70
+ WEDNESDAY = 'wed'
71
+ THURSDAY = 'thu'
72
+ FRIDAY = 'fri'
73
+ SATURDAY = 'sat'
74
+ SUNDAY = 'sun'
75
+
76
+ @dataclass(kw_only=True)
77
+ class BackupSchedule:
78
+ state: ScheduleState = ...
79
+ cron_event: CronSim | None = ...
80
+ def apply(self, manager: BackupManager) -> None: ...
81
+ def _schedule_next(self, cron_pattern: str, manager: BackupManager) -> None: ...
82
+ def to_dict(self) -> StoredBackupSchedule: ...
83
+ def _unschedule_next(self, manager: BackupManager) -> None: ...
84
+ def __init__(self, *, state=...) -> None: ...
85
+
86
+ @dataclass(kw_only=True)
87
+ class CreateBackupConfig:
88
+ agent_ids: list[str] = ...
89
+ include_addons: list[str] | None = ...
90
+ include_all_addons: bool = ...
91
+ include_database: bool = ...
92
+ include_folders: list[Folder] | None = ...
93
+ name: str | None = ...
94
+ password: str | None = ...
95
+ def to_dict(self) -> StoredCreateBackupConfig: ...
96
+ def __init__(self, *, agent_ids=..., include_addons=..., include_all_addons=..., include_database=..., include_folders=..., name=..., password=...) -> None: ...
97
+
98
+ class StoredCreateBackupConfig(TypedDict):
99
+ agent_ids: list[str]
100
+ include_addons: list[str] | None
101
+ include_all_addons: bool
102
+ include_database: bool
103
+ include_folders: list[Folder] | None
104
+ name: str | None
105
+ password: str | None
106
+
107
+ class CreateBackupParametersDict(TypedDict, total=False):
108
+ agent_ids: list[str]
109
+ include_addons: list[str] | None
110
+ include_all_addons: bool
111
+ include_database: bool
112
+ include_folders: list[Folder] | None
113
+ name: str | None
114
+ password: str | None
115
+
116
+ async def _delete_filtered_backups(manager: BackupManager, backup_filter: Callable[[dict[str, ManagerBackup]], dict[str, ManagerBackup]]) -> None: ...
117
+ async def delete_backups_exceeding_configured_count(manager: BackupManager) -> None: ...
@@ -2,7 +2,9 @@ from .manager import BackupManager as BackupManager
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.util.hass_dict import HassKey as HassKey
4
4
 
5
+ BUF_SIZE: Incomplete
5
6
  DOMAIN: str
6
7
  DATA_MANAGER: HassKey[BackupManager]
7
8
  LOGGER: Incomplete
8
9
  EXCLUDE_FROM_BACKUP: Incomplete
10
+ EXCLUDE_DATABASE_FROM_BACKUP: Incomplete
@@ -1,7 +1,8 @@
1
1
  from .const import DATA_MANAGER as DATA_MANAGER
2
- from aiohttp.web import FileResponse, Request as Request, Response
2
+ from aiohttp.web import FileResponse, Request as Request, Response, StreamResponse
3
3
  from homeassistant.components.http import HomeAssistantView as HomeAssistantView, KEY_HASS as KEY_HASS, require_admin as require_admin
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
5
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
5
6
  from homeassistant.util import slugify as slugify
6
7
 
7
8
  def async_register_http_views(hass: HomeAssistant) -> None: ...
@@ -9,7 +10,7 @@ def async_register_http_views(hass: HomeAssistant) -> None: ...
9
10
  class DownloadBackupView(HomeAssistantView):
10
11
  url: str
11
12
  name: str
12
- async def get(self, request: Request, slug: str) -> FileResponse | Response: ...
13
+ async def get(self, request: Request, backup_id: str) -> StreamResponse | FileResponse | Response: ...
13
14
 
14
15
  class UploadBackupView(HomeAssistantView):
15
16
  url: str
@@ -1,71 +1,211 @@
1
1
  import abc
2
2
  import aiohttp
3
- from .const import DOMAIN as DOMAIN, EXCLUDE_FROM_BACKUP as EXCLUDE_FROM_BACKUP, LOGGER as LOGGER
3
+ import asyncio
4
+ from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
5
+ from .config import BackupConfig as BackupConfig, delete_backups_exceeding_configured_count as delete_backups_exceeding_configured_count
6
+ from .const import BUF_SIZE as BUF_SIZE, DATA_MANAGER as DATA_MANAGER, DOMAIN as DOMAIN, EXCLUDE_DATABASE_FROM_BACKUP as EXCLUDE_DATABASE_FROM_BACKUP, EXCLUDE_FROM_BACKUP as EXCLUDE_FROM_BACKUP, LOGGER as LOGGER
7
+ from .models import AgentBackup as AgentBackup, Folder as Folder
8
+ from .store import BackupStore as BackupStore
9
+ from .util import make_backup_dir as make_backup_dir, read_backup as read_backup, validate_password as validate_password
4
10
  from _typeshed import Incomplete
11
+ from collections.abc import AsyncIterator, Callable as Callable, Coroutine
5
12
  from dataclasses import dataclass
6
- from homeassistant.backup_restore import RESTORE_BACKUP_FILE as RESTORE_BACKUP_FILE
13
+ from enum import StrEnum
14
+ from homeassistant.backup_restore import RESTORE_BACKUP_FILE as RESTORE_BACKUP_FILE, password_to_key as password_to_key
7
15
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
16
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
9
- from homeassistant.helpers import integration_platform as integration_platform
17
+ from homeassistant.helpers import instance_id as instance_id, integration_platform as integration_platform
10
18
  from homeassistant.helpers.json import json_bytes as json_bytes
11
- from homeassistant.util.json import json_loads_object as json_loads_object
12
19
  from pathlib import Path
13
- from typing import Any, Protocol
20
+ from typing import Any, Protocol, TypedDict
14
21
 
15
- BUF_SIZE: Incomplete
22
+ class IncorrectPasswordError(HomeAssistantError): ...
16
23
 
17
- @dataclass(slots=True)
18
- class Backup:
19
- slug: str
20
- name: str
21
- date: str
22
- path: Path
23
- size: float
24
- def as_dict(self) -> dict: ...
25
- def __init__(self, slug, name, date, path, size) -> None: ...
24
+ @dataclass(frozen=True, kw_only=True, slots=True)
25
+ class NewBackup:
26
+ backup_job_id: str
27
+ def __init__(self, *, backup_job_id) -> None: ...
28
+
29
+ @dataclass(frozen=True, kw_only=True, slots=True)
30
+ class ManagerBackup(AgentBackup):
31
+ agent_ids: list[str]
32
+ failed_agent_ids: list[str]
33
+ with_automatic_settings: bool | None
34
+ def __init__(self, *, addons, backup_id, date, database_included, extra_metadata, folders, homeassistant_included, homeassistant_version, name, protected, size, agent_ids, failed_agent_ids, with_automatic_settings) -> None: ...
35
+
36
+ @dataclass(frozen=True, kw_only=True, slots=True)
37
+ class WrittenBackup:
38
+ backup: AgentBackup
39
+ open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]]
40
+ release_stream: Callable[[], Coroutine[Any, Any, None]]
41
+ def __init__(self, *, backup, open_stream, release_stream) -> None: ...
42
+
43
+ class BackupManagerState(StrEnum):
44
+ IDLE = 'idle'
45
+ CREATE_BACKUP = 'create_backup'
46
+ RECEIVE_BACKUP = 'receive_backup'
47
+ RESTORE_BACKUP = 'restore_backup'
48
+
49
+ class CreateBackupStage(StrEnum):
50
+ ADDON_REPOSITORIES = 'addon_repositories'
51
+ ADDONS = 'addons'
52
+ AWAIT_ADDON_RESTARTS = 'await_addon_restarts'
53
+ DOCKER_CONFIG = 'docker_config'
54
+ FINISHING_FILE = 'finishing_file'
55
+ FOLDERS = 'folders'
56
+ HOME_ASSISTANT = 'home_assistant'
57
+ UPLOAD_TO_AGENTS = 'upload_to_agents'
58
+
59
+ class CreateBackupState(StrEnum):
60
+ COMPLETED = 'completed'
61
+ FAILED = 'failed'
62
+ IN_PROGRESS = 'in_progress'
63
+
64
+ class ReceiveBackupStage(StrEnum):
65
+ RECEIVE_FILE = 'receive_file'
66
+ UPLOAD_TO_AGENTS = 'upload_to_agents'
67
+
68
+ class ReceiveBackupState(StrEnum):
69
+ COMPLETED = 'completed'
70
+ FAILED = 'failed'
71
+ IN_PROGRESS = 'in_progress'
72
+
73
+ class RestoreBackupStage(StrEnum):
74
+ ADDON_REPOSITORIES = 'addon_repositories'
75
+ ADDONS = 'addons'
76
+ AWAIT_ADDON_RESTARTS = 'await_addon_restarts'
77
+ AWAIT_HOME_ASSISTANT_RESTART = 'await_home_assistant_restart'
78
+ CHECK_HOME_ASSISTANT = 'check_home_assistant'
79
+ DOCKER_CONFIG = 'docker_config'
80
+ DOWNLOAD_FROM_AGENT = 'download_from_agent'
81
+ FOLDERS = 'folders'
82
+ HOME_ASSISTANT = 'home_assistant'
83
+ REMOVE_DELTA_ADDONS = 'remove_delta_addons'
84
+
85
+ class RestoreBackupState(StrEnum):
86
+ COMPLETED = 'completed'
87
+ FAILED = 'failed'
88
+ IN_PROGRESS = 'in_progress'
89
+
90
+ @dataclass(frozen=True, kw_only=True, slots=True)
91
+ class ManagerStateEvent:
92
+ manager_state: BackupManagerState
93
+ def __init__(self, *, manager_state) -> None: ...
94
+
95
+ @dataclass(frozen=True, kw_only=True, slots=True)
96
+ class IdleEvent(ManagerStateEvent):
97
+ manager_state: BackupManagerState = ...
98
+ def __init__(self, *, manager_state=...) -> None: ...
99
+
100
+ @dataclass(frozen=True, kw_only=True, slots=True)
101
+ class CreateBackupEvent(ManagerStateEvent):
102
+ manager_state: BackupManagerState = ...
103
+ stage: CreateBackupStage | None
104
+ state: CreateBackupState
105
+ def __init__(self, *, manager_state=..., stage, state) -> None: ...
106
+
107
+ @dataclass(frozen=True, kw_only=True, slots=True)
108
+ class ReceiveBackupEvent(ManagerStateEvent):
109
+ manager_state: BackupManagerState = ...
110
+ stage: ReceiveBackupStage | None
111
+ state: ReceiveBackupState
112
+ def __init__(self, *, manager_state=..., stage, state) -> None: ...
113
+
114
+ @dataclass(frozen=True, kw_only=True, slots=True)
115
+ class RestoreBackupEvent(ManagerStateEvent):
116
+ manager_state: BackupManagerState = ...
117
+ stage: RestoreBackupStage | None
118
+ state: RestoreBackupState
119
+ def __init__(self, *, manager_state=..., stage, state) -> None: ...
26
120
 
27
121
  class BackupPlatformProtocol(Protocol):
28
122
  async def async_pre_backup(self, hass: HomeAssistant) -> None: ...
29
123
  async def async_post_backup(self, hass: HomeAssistant) -> None: ...
30
124
 
31
- class BaseBackupManager(abc.ABC, metaclass=abc.ABCMeta):
32
- hass: Incomplete
33
- backing_up: bool
34
- backups: Incomplete
35
- loaded_platforms: bool
36
- platforms: Incomplete
37
- def __init__(self, hass: HomeAssistant) -> None: ...
38
- def _add_platform(self, hass: HomeAssistant, integration_domain: str, platform: BackupPlatformProtocol) -> None: ...
39
- async def async_pre_backup_actions(self, **kwargs: Any) -> None: ...
40
- async def async_post_backup_actions(self, **kwargs: Any) -> None: ...
41
- async def load_platforms(self) -> None: ...
42
- @abc.abstractmethod
43
- async def async_restore_backup(self, slug: str, **kwargs: Any) -> None: ...
125
+ class BackupReaderWriter(abc.ABC, metaclass=abc.ABCMeta):
44
126
  @abc.abstractmethod
45
- async def async_create_backup(self, **kwargs: Any) -> Backup: ...
127
+ async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[ManagerStateEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
46
128
  @abc.abstractmethod
47
- async def async_get_backups(self, **kwargs: Any) -> dict[str, Backup]: ...
129
+ async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
48
130
  @abc.abstractmethod
49
- async def async_get_backup(self, *, slug: str, **kwargs: Any) -> Backup | None: ...
50
- @abc.abstractmethod
51
- async def async_remove_backup(self, *, slug: str, **kwargs: Any) -> None: ...
52
- @abc.abstractmethod
53
- async def async_receive_backup(self, *, contents: aiohttp.BodyPartReader, **kwargs: Any) -> None: ...
131
+ async def async_restore_backup(self, backup_id: str, *, agent_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
132
+
133
+ class BackupManager:
134
+ hass: Incomplete
135
+ platforms: Incomplete
136
+ backup_agent_platforms: Incomplete
137
+ backup_agents: Incomplete
138
+ local_backup_agents: Incomplete
139
+ config: Incomplete
140
+ _reader_writer: Incomplete
141
+ known_backups: Incomplete
142
+ store: Incomplete
143
+ _backup_task: Incomplete
144
+ _backup_finish_task: Incomplete
145
+ remove_next_backup_event: Incomplete
146
+ remove_next_delete_event: Incomplete
147
+ last_event: Incomplete
148
+ _backup_event_subscriptions: Incomplete
149
+ def __init__(self, hass: HomeAssistant, reader_writer: BackupReaderWriter) -> None: ...
150
+ async def async_setup(self) -> None: ...
151
+ @property
152
+ def state(self) -> BackupManagerState: ...
153
+ def _add_platform_pre_post_handler(self, integration_domain: str, platform: BackupPlatformProtocol) -> None: ...
154
+ def _async_add_backup_agent_platform(self, integration_domain: str, platform: BackupAgentPlatformProtocol) -> None: ...
155
+ async def _async_reload_backup_agents(self, domain: str) -> None: ...
156
+ async def _add_platform(self, hass: HomeAssistant, integration_domain: str, platform: Any) -> None: ...
157
+ async def async_pre_backup_actions(self) -> None: ...
158
+ async def async_post_backup_actions(self) -> None: ...
159
+ async def load_platforms(self) -> None: ...
160
+ async def _async_upload_backup(self, *, backup: AgentBackup, agent_ids: list[str], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]]) -> dict[str, Exception]: ...
161
+ async def async_get_backups(self) -> tuple[dict[str, ManagerBackup], dict[str, Exception]]: ...
162
+ async def async_get_backup(self, backup_id: str) -> tuple[ManagerBackup | None, dict[str, Exception]]: ...
163
+ @staticmethod
164
+ def is_our_automatic_backup(backup: AgentBackup, our_instance_id: str) -> bool | None: ...
165
+ async def async_delete_backup(self, backup_id: str) -> dict[str, Exception]: ...
166
+ async def async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> None: ...
167
+ async def _async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> None: ...
168
+ async def async_create_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
169
+ async def async_initiate_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
170
+ async def _async_create_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool) -> NewBackup: ...
171
+ async def _async_finish_backup(self, agent_ids: list[str], with_automatic_settings: bool) -> None: ...
172
+ async def async_restore_backup(self, backup_id: str, *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
173
+ async def _async_restore_backup(self, backup_id: str, *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
174
+ def async_on_backup_event(self, event: ManagerStateEvent) -> None: ...
175
+ def async_subscribe_events(self, on_event: Callable[[ManagerStateEvent], None]) -> Callable[[], None]: ...
176
+ def _update_issue_backup_failed(self) -> None: ...
177
+ def _update_issue_after_agent_upload(self, agent_errors: dict[str, Exception]) -> None: ...
178
+
179
+ class KnownBackups:
180
+ _backups: Incomplete
181
+ _manager: Incomplete
182
+ def __init__(self, manager: BackupManager) -> None: ...
183
+ def load(self, stored_backups: list[StoredKnownBackup]) -> None: ...
184
+ def to_list(self) -> list[StoredKnownBackup]: ...
185
+ def add(self, backup: AgentBackup, agent_errors: dict[str, Exception]) -> None: ...
186
+ def get(self, backup_id: str) -> KnownBackup | None: ...
187
+ def remove(self, backup_id: str) -> None: ...
54
188
 
55
- class BackupManager(BaseBackupManager):
56
- backup_dir: Incomplete
57
- loaded_backups: bool
189
+ @dataclass(kw_only=True)
190
+ class KnownBackup:
191
+ backup_id: str
192
+ failed_agent_ids: list[str]
193
+ def to_dict(self) -> StoredKnownBackup: ...
194
+ def __init__(self, *, backup_id, failed_agent_ids) -> None: ...
195
+
196
+ class StoredKnownBackup(TypedDict):
197
+ backup_id: str
198
+ failed_agent_ids: list[str]
199
+
200
+ class CoreBackupReaderWriter(BackupReaderWriter):
201
+ _local_agent_id: Incomplete
202
+ _hass: Incomplete
203
+ temp_backup_dir: Incomplete
58
204
  def __init__(self, hass: HomeAssistant) -> None: ...
59
- backups: Incomplete
60
- async def load_backups(self) -> None: ...
61
- def _read_backups(self) -> dict[str, Backup]: ...
62
- async def async_get_backups(self, **kwargs: Any) -> dict[str, Backup]: ...
63
- async def async_get_backup(self, *, slug: str, **kwargs: Any) -> Backup | None: ...
64
- async def async_remove_backup(self, *, slug: str, **kwargs: Any) -> None: ...
65
- async def async_receive_backup(self, *, contents: aiohttp.BodyPartReader, **kwargs: Any) -> None: ...
66
- backing_up: bool
67
- async def async_create_backup(self, **kwargs: Any) -> Backup: ...
68
- def _mkdir_and_generate_backup_contents(self, tar_file_path: Path, backup_data: dict[str, Any]) -> int: ...
69
- async def async_restore_backup(self, slug: str, **kwargs: Any) -> None: ...
70
-
71
- def _generate_slug(date: str, name: str) -> str: ...
205
+ async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[ManagerStateEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
206
+ async def _async_create_backup(self, *, agent_ids: list[str], backup_id: str, backup_name: str, date_str: str, extra_metadata: dict[str, bool | str], include_database: bool, on_progress: Callable[[ManagerStateEvent], None], password: str | None) -> WrittenBackup: ...
207
+ def _mkdir_and_generate_backup_contents(self, backup_data: dict[str, Any], database_included: bool, password: str | None, tar_file_path: Path | None) -> tuple[Path, int]: ...
208
+ async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
209
+ async def async_restore_backup(self, backup_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
210
+
211
+ def _generate_backup_id(date: str, name: str) -> str: ...
@@ -0,0 +1,35 @@
1
+ from dataclasses import dataclass
2
+ from enum import StrEnum
3
+ from typing import Any, Self
4
+
5
+ @dataclass(frozen=True, kw_only=True)
6
+ class AddonInfo:
7
+ name: str
8
+ slug: str
9
+ version: str
10
+ def __init__(self, *, name, slug, version) -> None: ...
11
+
12
+ class Folder(StrEnum):
13
+ SHARE = 'share'
14
+ ADDONS = 'addons/local'
15
+ SSL = 'ssl'
16
+ MEDIA = 'media'
17
+
18
+ @dataclass(frozen=True, kw_only=True)
19
+ class AgentBackup:
20
+ addons: list[AddonInfo]
21
+ backup_id: str
22
+ date: str
23
+ database_included: bool
24
+ extra_metadata: dict[str, bool | str]
25
+ folders: list[Folder]
26
+ homeassistant_included: bool
27
+ homeassistant_version: str | None
28
+ name: str
29
+ protected: bool
30
+ size: int
31
+ def as_dict(self) -> dict: ...
32
+ def as_frontend_json(self) -> dict: ...
33
+ @classmethod
34
+ def from_dict(cls, data: dict[str, Any]) -> Self: ...
35
+ def __init__(self, *, addons, backup_id, date, database_included, extra_metadata, folders, homeassistant_included, homeassistant_version, name, protected, size) -> None: ...
@@ -0,0 +1,24 @@
1
+ from .config import StoredBackupConfig as StoredBackupConfig
2
+ from .const import DOMAIN as DOMAIN
3
+ from .manager import BackupManager as BackupManager, StoredKnownBackup as StoredKnownBackup
4
+ from _typeshed import Incomplete
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
+ from homeassistant.helpers.storage import Store as Store
7
+ from typing import TypedDict
8
+
9
+ STORE_DELAY_SAVE: int
10
+ STORAGE_KEY = DOMAIN
11
+ STORAGE_VERSION: int
12
+
13
+ class StoredBackupData(TypedDict):
14
+ backups: list[StoredKnownBackup]
15
+ config: StoredBackupConfig
16
+
17
+ class BackupStore:
18
+ _hass: Incomplete
19
+ _manager: Incomplete
20
+ _store: Incomplete
21
+ def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
22
+ async def load(self) -> StoredBackupData | None: ...
23
+ def save(self) -> None: ...
24
+ def _data_to_save(self) -> StoredBackupData: ...
@@ -0,0 +1,12 @@
1
+ import aiohttp
2
+ from .const import BUF_SIZE as BUF_SIZE, LOGGER as LOGGER
3
+ from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
4
+ from homeassistant.backup_restore import password_to_key as password_to_key
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.util.json import JsonObjectType as JsonObjectType, json_loads_object as json_loads_object
7
+ from pathlib import Path
8
+
9
+ def make_backup_dir(path: Path) -> None: ...
10
+ def read_backup(backup_path: Path) -> AgentBackup: ...
11
+ def validate_password(path: Path, password: str | None) -> bool: ...
12
+ async def receive_file(hass: HomeAssistant, contents: aiohttp.BodyPartReader, path: Path) -> None: ...
@@ -1,4 +1,7 @@
1
+ from .config import ScheduleState as ScheduleState
1
2
  from .const import DATA_MANAGER as DATA_MANAGER, LOGGER as LOGGER
3
+ from .manager import IncorrectPasswordError as IncorrectPasswordError, ManagerStateEvent as ManagerStateEvent
4
+ from .models import Folder as Folder
2
5
  from homeassistant.components import websocket_api as websocket_api
3
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
4
7
  from typing import Any
@@ -6,8 +9,13 @@ from typing import Any
6
9
  def async_register_websocket_handlers(hass: HomeAssistant, with_hassio: bool) -> None: ...
7
10
  async def handle_info(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
8
11
  async def handle_details(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
9
- async def handle_remove(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
12
+ async def handle_delete(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
10
13
  async def handle_restore(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
11
14
  async def handle_create(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
15
+ async def handle_create_with_automatic_settings(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
12
16
  async def handle_backup_start(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
13
17
  async def handle_backup_end(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
18
+ async def backup_agents_info(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
19
+ async def handle_config_info(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
20
+ async def handle_config_update(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
21
+ async def handle_subscribe_events(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
@@ -14,7 +14,6 @@ class BAFAutoComfort(BAFEntity, ClimateEntity):
14
14
  _attr_temperature_unit: Incomplete
15
15
  _attr_hvac_modes: Incomplete
16
16
  _attr_translation_key: str
17
- _enable_turn_on_off_backwards_compatibility: bool
18
17
  _attr_hvac_mode: Incomplete
19
18
  _attr_hvac_action: Incomplete
20
19
  _attr_target_temperature: Incomplete
@@ -12,7 +12,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: BAFConfigEntry, async_ad
12
12
 
13
13
  class BAFFan(BAFEntity, FanEntity):
14
14
  _attr_supported_features: Incomplete
15
- _enable_turn_on_off_backwards_compatibility: bool
16
15
  _attr_preset_modes: Incomplete
17
16
  _attr_speed_count = SPEED_COUNT
18
17
  _attr_name: Incomplete