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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (590) 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/bootstrap.pyi +2 -1
  12. homeassistant-stubs/components/abode/light.pyi +4 -3
  13. homeassistant-stubs/components/acaia/__init__.pyi +9 -0
  14. homeassistant-stubs/components/acaia/binary_sensor.pyi +24 -0
  15. homeassistant-stubs/components/acaia/button.pyi +24 -0
  16. homeassistant-stubs/components/acaia/config_flow.pyi +18 -0
  17. homeassistant-stubs/components/acaia/const.pyi +2 -0
  18. homeassistant-stubs/components/acaia/coordinator.pyi +19 -0
  19. homeassistant-stubs/components/{stookalert → acaia}/diagnostics.pyi +2 -3
  20. homeassistant-stubs/components/acaia/entity.pyi +17 -0
  21. homeassistant-stubs/components/acaia/sensor.pyi +44 -0
  22. homeassistant-stubs/components/adax/climate.pyi +0 -1
  23. homeassistant-stubs/components/airtouch5/climate.pyi +0 -1
  24. homeassistant-stubs/components/airzone/climate.pyi +0 -1
  25. homeassistant-stubs/components/airzone_cloud/climate.pyi +3 -2
  26. homeassistant-stubs/components/alarm_control_panel/__init__.pyi +1 -6
  27. homeassistant-stubs/components/alarm_control_panel/const.pyi +0 -14
  28. homeassistant-stubs/components/analytics_insights/config_flow.pyi +3 -2
  29. homeassistant-stubs/components/apple_tv/config_flow.pyi +1 -1
  30. homeassistant-stubs/components/apsystems/number.pyi +1 -0
  31. homeassistant-stubs/components/autarco/__init__.pyi +1 -0
  32. homeassistant-stubs/components/autarco/config_flow.pyi +4 -0
  33. homeassistant-stubs/components/autarco/coordinator.pyi +1 -0
  34. homeassistant-stubs/components/automation/__init__.pyi +1 -10
  35. homeassistant-stubs/components/backup/__init__.pyi +4 -11
  36. homeassistant-stubs/components/backup/agent.pyi +35 -0
  37. homeassistant-stubs/components/backup/backup.pyi +29 -0
  38. homeassistant-stubs/components/backup/config.pyi +117 -0
  39. homeassistant-stubs/components/backup/const.pyi +2 -0
  40. homeassistant-stubs/components/backup/http.pyi +3 -2
  41. homeassistant-stubs/components/backup/manager.pyi +192 -51
  42. homeassistant-stubs/components/backup/models.pyi +38 -0
  43. homeassistant-stubs/components/backup/store.pyi +24 -0
  44. homeassistant-stubs/components/backup/util.pyi +12 -0
  45. homeassistant-stubs/components/backup/websocket.pyi +9 -1
  46. homeassistant-stubs/components/baf/climate.pyi +0 -1
  47. homeassistant-stubs/components/baf/fan.pyi +0 -1
  48. homeassistant-stubs/components/baf/light.pyi +4 -5
  49. homeassistant-stubs/components/bang_olufsen/const.pyi +3 -0
  50. homeassistant-stubs/components/bang_olufsen/media_player.pyi +2 -2
  51. homeassistant-stubs/components/binary_sensor/__init__.pyi +0 -33
  52. homeassistant-stubs/components/bluesound/__init__.pyi +0 -1
  53. homeassistant-stubs/components/bluesound/media_player.pyi +13 -8
  54. homeassistant-stubs/components/bluesound/utils.pyi +2 -0
  55. homeassistant-stubs/components/bmw_connected_drive/__init__.pyi +4 -12
  56. homeassistant-stubs/components/bmw_connected_drive/binary_sensor.pyi +1 -0
  57. homeassistant-stubs/components/bmw_connected_drive/button.pyi +1 -0
  58. homeassistant-stubs/components/bmw_connected_drive/config_flow.pyi +8 -4
  59. homeassistant-stubs/components/bmw_connected_drive/coordinator.pyi +4 -3
  60. homeassistant-stubs/components/bmw_connected_drive/device_tracker.pyi +2 -2
  61. homeassistant-stubs/components/bmw_connected_drive/diagnostics.pyi +1 -0
  62. homeassistant-stubs/components/bmw_connected_drive/lock.pyi +1 -0
  63. homeassistant-stubs/components/bmw_connected_drive/notify.pyi +2 -1
  64. homeassistant-stubs/components/bmw_connected_drive/number.pyi +1 -0
  65. homeassistant-stubs/components/bmw_connected_drive/select.pyi +1 -0
  66. homeassistant-stubs/components/bmw_connected_drive/sensor.pyi +1 -0
  67. homeassistant-stubs/components/bmw_connected_drive/switch.pyi +1 -0
  68. homeassistant-stubs/components/bryant_evolution/climate.pyi +0 -1
  69. homeassistant-stubs/components/cambridge_audio/config_flow.pyi +4 -1
  70. homeassistant-stubs/components/cambridge_audio/media_browser.pyi +8 -0
  71. homeassistant-stubs/components/cambridge_audio/media_player.pyi +4 -3
  72. homeassistant-stubs/components/cambridge_audio/select.pyi +2 -2
  73. homeassistant-stubs/components/cambridge_audio/switch.pyi +2 -2
  74. homeassistant-stubs/components/camera/__init__.pyi +1 -5
  75. homeassistant-stubs/components/camera/const.pyi +0 -8
  76. homeassistant-stubs/components/cert_expiry/config_flow.pyi +0 -1
  77. homeassistant-stubs/components/cert_expiry/sensor.pyi +2 -10
  78. homeassistant-stubs/components/climate/__init__.pyi +1 -12
  79. homeassistant-stubs/components/climate/const.pyi +0 -25
  80. homeassistant-stubs/components/cloud/__init__.pyi +1 -1
  81. homeassistant-stubs/components/cloud/backup.pyi +37 -0
  82. homeassistant-stubs/components/cloud/const.pyi +2 -0
  83. homeassistant-stubs/components/cloud/http_api.pyi +7 -2
  84. homeassistant-stubs/components/cookidoo/__init__.pyi +9 -0
  85. homeassistant-stubs/components/cookidoo/config_flow.pyi +24 -0
  86. homeassistant-stubs/components/cookidoo/const.pyi +1 -0
  87. homeassistant-stubs/components/cookidoo/coordinator.pyi +25 -0
  88. homeassistant-stubs/components/cookidoo/entity.pyi +10 -0
  89. homeassistant-stubs/components/cookidoo/todo.pyi +32 -0
  90. homeassistant-stubs/components/cover/__init__.pyi +0 -18
  91. homeassistant-stubs/components/crownstone/config_flow.pyi +1 -1
  92. homeassistant-stubs/components/deconz/climate.pyi +0 -1
  93. homeassistant-stubs/components/deconz/fan.pyi +0 -1
  94. homeassistant-stubs/components/deconz/light.pyi +7 -5
  95. homeassistant-stubs/components/demo/climate.pyi +0 -1
  96. homeassistant-stubs/components/demo/fan.pyi +0 -1
  97. homeassistant-stubs/components/demo/light.pyi +4 -2
  98. homeassistant-stubs/components/demo/vacuum.pyi +2 -4
  99. homeassistant-stubs/components/device_tracker/__init__.pyi +1 -7
  100. homeassistant-stubs/components/device_tracker/const.pyi +0 -8
  101. homeassistant-stubs/components/devolo_home_control/__init__.pyi +1 -1
  102. homeassistant-stubs/components/devolo_home_control/binary_sensor.pyi +3 -2
  103. homeassistant-stubs/components/devolo_home_control/climate.pyi +0 -1
  104. homeassistant-stubs/components/devolo_home_control/config_flow.pyi +1 -2
  105. homeassistant-stubs/components/devolo_home_control/const.pyi +0 -2
  106. homeassistant-stubs/components/devolo_home_control/sensor.pyi +1 -3
  107. homeassistant-stubs/components/discovergy/__init__.pyi +2 -2
  108. homeassistant-stubs/components/duotecno/climate.pyi +0 -1
  109. homeassistant-stubs/components/easyenergy/__init__.pyi +4 -5
  110. homeassistant-stubs/components/easyenergy/coordinator.pyi +3 -2
  111. homeassistant-stubs/components/easyenergy/diagnostics.pyi +2 -5
  112. homeassistant-stubs/components/easyenergy/sensor.pyi +2 -3
  113. homeassistant-stubs/components/easyenergy/services.pyi +4 -4
  114. homeassistant-stubs/components/ecovacs/button.pyi +13 -2
  115. homeassistant-stubs/components/ecovacs/const.pyi +1 -0
  116. homeassistant-stubs/components/ecovacs/number.pyi +1 -1
  117. homeassistant-stubs/components/ecovacs/select.pyi +2 -2
  118. homeassistant-stubs/components/ecovacs/sensor.pyi +1 -1
  119. homeassistant-stubs/components/ecovacs/util.pyi +1 -0
  120. homeassistant-stubs/components/ecovacs/vacuum.pyi +3 -3
  121. homeassistant-stubs/components/eheimdigital/__init__.pyi +14 -0
  122. homeassistant-stubs/components/eheimdigital/config_flow.pyi +18 -0
  123. homeassistant-stubs/components/eheimdigital/const.pyi +8 -0
  124. homeassistant-stubs/components/eheimdigital/coordinator.pyi +25 -0
  125. homeassistant-stubs/components/eheimdigital/entity.pyi +20 -0
  126. homeassistant-stubs/components/eheimdigital/light.pyi +36 -0
  127. homeassistant-stubs/components/electrasmart/climate.pyi +0 -1
  128. homeassistant-stubs/components/elevenlabs/__init__.pyi +6 -7
  129. homeassistant-stubs/components/elevenlabs/config_flow.pyi +4 -3
  130. homeassistant-stubs/components/elevenlabs/tts.pyi +6 -3
  131. homeassistant-stubs/components/elgato/__init__.pyi +3 -5
  132. homeassistant-stubs/components/elgato/button.pyi +4 -3
  133. homeassistant-stubs/components/elgato/config_flow.pyi +1 -1
  134. homeassistant-stubs/components/elgato/coordinator.pyi +4 -3
  135. homeassistant-stubs/components/elgato/diagnostics.pyi +2 -2
  136. homeassistant-stubs/components/elgato/light.pyi +6 -7
  137. homeassistant-stubs/components/elgato/sensor.pyi +4 -3
  138. homeassistant-stubs/components/elgato/switch.pyi +4 -3
  139. homeassistant-stubs/components/elkm1/climate.pyi +0 -1
  140. homeassistant-stubs/components/emulated_hue/hue_api.pyi +1 -1
  141. homeassistant-stubs/components/energyzero/__init__.pyi +4 -5
  142. homeassistant-stubs/components/energyzero/coordinator.pyi +2 -1
  143. homeassistant-stubs/components/energyzero/diagnostics.pyi +2 -5
  144. homeassistant-stubs/components/energyzero/sensor.pyi +2 -3
  145. homeassistant-stubs/components/energyzero/services.pyi +4 -4
  146. homeassistant-stubs/components/enigma2/coordinator.pyi +1 -0
  147. homeassistant-stubs/components/enigma2/media_player.pyi +0 -1
  148. homeassistant-stubs/components/enphase_envoy/binary_sensor.pyi +2 -0
  149. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +2 -1
  150. homeassistant-stubs/components/enphase_envoy/coordinator.pyi +2 -2
  151. homeassistant-stubs/components/enphase_envoy/number.pyi +2 -0
  152. homeassistant-stubs/components/enphase_envoy/select.pyi +2 -0
  153. homeassistant-stubs/components/enphase_envoy/sensor.pyi +35 -1
  154. homeassistant-stubs/components/enphase_envoy/switch.pyi +2 -0
  155. homeassistant-stubs/components/esphome/climate.pyi +0 -1
  156. homeassistant-stubs/components/esphome/fan.pyi +0 -1
  157. homeassistant-stubs/components/esphome/light.pyi +0 -2
  158. homeassistant-stubs/components/evohome/climate.pyi +0 -1
  159. homeassistant-stubs/components/fan/__init__.pyi +0 -15
  160. homeassistant-stubs/components/feedreader/__init__.pyi +3 -8
  161. homeassistant-stubs/components/feedreader/config_flow.pyi +1 -6
  162. homeassistant-stubs/components/feedreader/coordinator.pyi +1 -0
  163. homeassistant-stubs/components/flexit_bacnet/climate.pyi +0 -1
  164. homeassistant-stubs/components/flexit_bacnet/number.pyi +3 -0
  165. homeassistant-stubs/components/flux_led/light.pyi +4 -5
  166. homeassistant-stubs/components/fritzbox/climate.pyi +0 -1
  167. homeassistant-stubs/components/fritzbox/coordinator.pyi +2 -1
  168. homeassistant-stubs/components/fritzbox/light.pyi +3 -4
  169. homeassistant-stubs/components/fritzbox_callmonitor/base.pyi +13 -2
  170. homeassistant-stubs/components/fritzbox_callmonitor/config_flow.pyi +2 -2
  171. homeassistant-stubs/components/fritzbox_callmonitor/sensor.pyi +4 -4
  172. homeassistant-stubs/components/fronius/__init__.pyi +1 -1
  173. homeassistant-stubs/components/fronius/const.pyi +3 -3
  174. homeassistant-stubs/components/fronius/coordinator.pyi +1 -1
  175. homeassistant-stubs/components/fronius/sensor.pyi +2 -1
  176. homeassistant-stubs/components/fujitsu_fglair/climate.pyi +0 -1
  177. homeassistant-stubs/components/fyta/__init__.pyi +2 -2
  178. homeassistant-stubs/components/fyta/entity.pyi +2 -2
  179. homeassistant-stubs/components/generic_thermostat/climate.pyi +1 -4
  180. homeassistant-stubs/components/generic_thermostat/config_flow.pyi +1 -1
  181. homeassistant-stubs/components/generic_thermostat/const.pyi +2 -0
  182. homeassistant-stubs/components/google_cloud/const.pyi +3 -0
  183. homeassistant-stubs/components/google_cloud/helpers.pyi +1 -1
  184. homeassistant-stubs/components/google_cloud/tts.pyi +1 -1
  185. homeassistant-stubs/components/group/fan.pyi +0 -1
  186. homeassistant-stubs/components/group/registry.pyi +1 -1
  187. homeassistant-stubs/components/history/__init__.pyi +1 -1
  188. homeassistant-stubs/components/history/helpers.pyi +1 -2
  189. homeassistant-stubs/components/history/websocket_api.pyi +1 -1
  190. homeassistant-stubs/components/holiday/__init__.pyi +2 -1
  191. homeassistant-stubs/components/holiday/calendar.pyi +4 -3
  192. homeassistant-stubs/components/holiday/config_flow.pyi +13 -3
  193. homeassistant-stubs/components/holiday/const.pyi +1 -0
  194. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +5 -3
  195. homeassistant-stubs/components/homekit/doorbell.pyi +23 -0
  196. homeassistant-stubs/components/homekit/type_cameras.pyi +4 -12
  197. homeassistant-stubs/components/homekit/type_locks.pyi +3 -2
  198. homeassistant-stubs/components/homekit/type_switches.pyi +1 -1
  199. homeassistant-stubs/components/homekit/util.pyi +1 -0
  200. homeassistant-stubs/components/homewizard/sensor.pyi +1 -1
  201. homeassistant-stubs/components/humidifier/__init__.pyi +1 -8
  202. homeassistant-stubs/components/humidifier/const.pyi +0 -9
  203. homeassistant-stubs/components/husqvarna_automower/__init__.pyi +2 -2
  204. homeassistant-stubs/components/husqvarna_automower/binary_sensor.pyi +1 -0
  205. homeassistant-stubs/components/husqvarna_automower/calendar.pyi +1 -0
  206. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +4 -4
  207. homeassistant-stubs/components/husqvarna_automower/device_tracker.pyi +2 -0
  208. homeassistant-stubs/components/husqvarna_automower/diagnostics.pyi +1 -2
  209. homeassistant-stubs/components/husqvarna_automower/entity.pyi +4 -3
  210. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -0
  211. homeassistant-stubs/components/idasen_desk/__init__.pyi +5 -16
  212. homeassistant-stubs/components/idasen_desk/button.pyi +7 -12
  213. homeassistant-stubs/components/idasen_desk/coordinator.pyi +2 -3
  214. homeassistant-stubs/components/idasen_desk/cover.pyi +8 -17
  215. homeassistant-stubs/components/idasen_desk/entity.pyi +12 -0
  216. homeassistant-stubs/components/idasen_desk/sensor.pyi +7 -20
  217. homeassistant-stubs/components/image_upload/media_source.pyi +14 -0
  218. homeassistant-stubs/components/imap/config_flow.pyi +3 -2
  219. homeassistant-stubs/components/imap/coordinator.pyi +5 -5
  220. homeassistant-stubs/components/imap/sensor.pyi +1 -0
  221. homeassistant-stubs/components/intent/__init__.pyi +2 -1
  222. homeassistant-stubs/components/iotty/switch.pyi +8 -6
  223. homeassistant-stubs/components/iron_os/__init__.pyi +21 -0
  224. homeassistant-stubs/components/iron_os/binary_sensor.pyi +19 -0
  225. homeassistant-stubs/components/iron_os/config_flow.pyi +15 -0
  226. homeassistant-stubs/components/iron_os/const.pyi +7 -0
  227. homeassistant-stubs/components/iron_os/coordinator.pyi +43 -0
  228. homeassistant-stubs/components/iron_os/entity.pyi +13 -0
  229. homeassistant-stubs/components/iron_os/number.pyi +62 -0
  230. homeassistant-stubs/components/iron_os/select.pyi +49 -0
  231. homeassistant-stubs/components/iron_os/sensor.pyi +46 -0
  232. homeassistant-stubs/components/iron_os/update.pyi +29 -0
  233. homeassistant-stubs/components/isy994/climate.pyi +0 -1
  234. homeassistant-stubs/components/isy994/fan.pyi +0 -1
  235. homeassistant-stubs/components/knx/climate.pyi +0 -1
  236. homeassistant-stubs/components/knx/config_flow.pyi +4 -0
  237. homeassistant-stubs/components/knx/fan.pyi +0 -1
  238. homeassistant-stubs/components/knx/services.pyi +5 -5
  239. homeassistant-stubs/components/lamarzocco/__init__.pyi +4 -5
  240. homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +9 -3
  241. homeassistant-stubs/components/lamarzocco/calendar.pyi +1 -0
  242. homeassistant-stubs/components/lamarzocco/config_flow.pyi +6 -5
  243. homeassistant-stubs/components/lamarzocco/coordinator.pyi +39 -16
  244. homeassistant-stubs/components/lamarzocco/entity.pyi +7 -3
  245. homeassistant-stubs/components/lamarzocco/number.pyi +8 -4
  246. homeassistant-stubs/components/lamarzocco/select.pyi +8 -4
  247. homeassistant-stubs/components/lamarzocco/sensor.pyi +10 -3
  248. homeassistant-stubs/components/lamarzocco/switch.pyi +1 -1
  249. homeassistant-stubs/components/lametric/notify.pyi +2 -1
  250. homeassistant-stubs/components/lametric/number.pyi +2 -1
  251. homeassistant-stubs/components/lametric/services.pyi +2 -1
  252. homeassistant-stubs/components/lametric/switch.pyi +2 -1
  253. homeassistant-stubs/components/lcn/__init__.pyi +3 -1
  254. homeassistant-stubs/components/lcn/climate.pyi +0 -1
  255. homeassistant-stubs/components/lcn/const.pyi +1 -0
  256. homeassistant-stubs/components/lcn/helpers.pyi +1 -1
  257. homeassistant-stubs/components/lcn/services.pyi +7 -4
  258. homeassistant-stubs/components/lifx/const.pyi +1 -0
  259. homeassistant-stubs/components/lifx/manager.pyi +2 -2
  260. homeassistant-stubs/components/lifx/util.pyi +2 -2
  261. homeassistant-stubs/components/light/__init__.pyi +31 -55
  262. homeassistant-stubs/components/light/const.pyi +33 -0
  263. homeassistant-stubs/components/light/device_action.pyi +2 -1
  264. homeassistant-stubs/components/light/device_condition.pyi +1 -1
  265. homeassistant-stubs/components/light/device_trigger.pyi +1 -1
  266. homeassistant-stubs/components/light/intent.pyi +2 -1
  267. homeassistant-stubs/components/light/reproduce_state.pyi +2 -1
  268. homeassistant-stubs/components/light/significant_change.pyi +1 -1
  269. homeassistant-stubs/components/litterrobot/vacuum.pyi +2 -2
  270. homeassistant-stubs/components/lock/__init__.pyi +1 -2
  271. homeassistant-stubs/components/lookin/climate.pyi +0 -1
  272. homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
  273. homeassistant-stubs/components/mastodon/config_flow.pyi +1 -2
  274. homeassistant-stubs/components/mastodon/sensor.pyi +2 -0
  275. homeassistant-stubs/components/matter/climate.pyi +0 -1
  276. homeassistant-stubs/components/matter/fan.pyi +0 -1
  277. homeassistant-stubs/components/matter/light.pyi +5 -5
  278. homeassistant-stubs/components/matter/vacuum.pyi +3 -3
  279. homeassistant-stubs/components/mealie/__init__.pyi +18 -0
  280. homeassistant-stubs/components/mealie/calendar.pyi +21 -0
  281. homeassistant-stubs/components/mealie/config_flow.pyi +20 -0
  282. homeassistant-stubs/components/mealie/const.pyi +14 -0
  283. homeassistant-stubs/components/mealie/coordinator.pyi +53 -0
  284. homeassistant-stubs/components/mealie/diagnostics.pyi +5 -0
  285. homeassistant-stubs/components/mealie/entity.pyi +11 -0
  286. homeassistant-stubs/components/mealie/sensor.pyi +29 -0
  287. homeassistant-stubs/components/mealie/services.pyi +21 -0
  288. homeassistant-stubs/components/mealie/todo.pyi +36 -0
  289. homeassistant-stubs/components/mealie/utils.pyi +3 -0
  290. homeassistant-stubs/components/media_player/__init__.pyi +0 -2
  291. homeassistant-stubs/components/modbus/__init__.pyi +5 -3
  292. homeassistant-stubs/components/modbus/climate.pyi +0 -1
  293. homeassistant-stubs/components/modbus/fan.pyi +0 -1
  294. homeassistant-stubs/components/modbus/modbus.pyi +3 -4
  295. homeassistant-stubs/components/mqtt/client.pyi +1 -1
  296. homeassistant-stubs/components/mqtt/climate.pyi +0 -1
  297. homeassistant-stubs/components/mqtt/config_flow.pyi +2 -1
  298. homeassistant-stubs/components/mqtt/fan.pyi +0 -1
  299. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +5 -5
  300. homeassistant-stubs/components/mqtt/light/schema_json.pyi +4 -4
  301. homeassistant-stubs/components/mqtt/light/schema_template.pyi +4 -4
  302. homeassistant-stubs/components/mqtt/switch.pyi +1 -1
  303. homeassistant-stubs/components/mqtt/vacuum.pyi +10 -4
  304. homeassistant-stubs/components/music_assistant/__init__.pyi +4 -0
  305. homeassistant-stubs/components/music_assistant/actions.pyi +18 -0
  306. homeassistant-stubs/components/music_assistant/const.pyi +48 -0
  307. homeassistant-stubs/components/music_assistant/media_player.pyi +9 -16
  308. homeassistant-stubs/components/music_assistant/schemas.pyi +20 -0
  309. homeassistant-stubs/components/mysensors/climate.pyi +0 -1
  310. homeassistant-stubs/components/myuplink/__init__.pyi +5 -2
  311. homeassistant-stubs/components/myuplink/binary_sensor.pyi +2 -2
  312. homeassistant-stubs/components/myuplink/config_flow.pyi +4 -1
  313. homeassistant-stubs/components/myuplink/number.pyi +2 -2
  314. homeassistant-stubs/components/myuplink/select.pyi +3 -2
  315. homeassistant-stubs/components/myuplink/switch.pyi +1 -1
  316. homeassistant-stubs/components/nanoleaf/light.pyi +4 -4
  317. homeassistant-stubs/components/neato/vacuum.pyi +3 -3
  318. homeassistant-stubs/components/nest/__init__.pyi +6 -6
  319. homeassistant-stubs/components/nest/camera.pyi +2 -4
  320. homeassistant-stubs/components/nest/climate.pyi +2 -5
  321. homeassistant-stubs/components/nest/const.pyi +0 -2
  322. homeassistant-stubs/components/nest/device_info.pyi +2 -1
  323. homeassistant-stubs/components/nest/diagnostics.pyi +4 -8
  324. homeassistant-stubs/components/nest/event.pyi +2 -4
  325. homeassistant-stubs/components/nest/sensor.pyi +2 -4
  326. homeassistant-stubs/components/nest/types.pyi +11 -0
  327. homeassistant-stubs/components/netatmo/climate.pyi +0 -1
  328. homeassistant-stubs/components/netatmo/fan.pyi +0 -1
  329. homeassistant-stubs/components/nordpool/__init__.pyi +10 -3
  330. homeassistant-stubs/components/nordpool/coordinator.pyi +5 -2
  331. homeassistant-stubs/components/nordpool/entity.pyi +1 -1
  332. homeassistant-stubs/components/nordpool/sensor.pyi +10 -6
  333. homeassistant-stubs/components/nordpool/services.pyi +19 -0
  334. homeassistant-stubs/components/number/const.pyi +0 -8
  335. homeassistant-stubs/components/onkyo/config_flow.pyi +2 -0
  336. homeassistant-stubs/components/onkyo/media_player.pyi +10 -7
  337. homeassistant-stubs/components/overkiz/__init__.pyi +4 -3
  338. homeassistant-stubs/components/overkiz/alarm_control_panel.pyi +2 -4
  339. homeassistant-stubs/components/overkiz/binary_sensor.pyi +3 -4
  340. homeassistant-stubs/components/overkiz/button.pyi +4 -5
  341. homeassistant-stubs/components/overkiz/climate/__init__.pyi +3 -4
  342. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater.pyi +0 -1
  343. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.pyi +0 -1
  344. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_towel_dryer.pyi +1 -2
  345. homeassistant-stubs/components/overkiz/climate/atlantic_heat_recovery_ventilation.pyi +0 -1
  346. homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_heat_pump_main_component.pyi +0 -1
  347. homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_heating_zone.pyi +0 -1
  348. homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_zone_control.pyi +0 -1
  349. homeassistant-stubs/components/overkiz/climate/hitachi_air_to_air_heat_pump_hlrrwifi.pyi +0 -1
  350. homeassistant-stubs/components/overkiz/climate/hitachi_air_to_air_heat_pump_ovp.pyi +0 -1
  351. homeassistant-stubs/components/overkiz/climate/hitachi_air_to_water_heating_zone.pyi +34 -0
  352. homeassistant-stubs/components/overkiz/climate/somfy_heating_temperature_interface.pyi +0 -1
  353. homeassistant-stubs/components/overkiz/climate/somfy_thermostat.pyi +0 -1
  354. homeassistant-stubs/components/overkiz/climate/valve_heating_temperature_interface.pyi +0 -1
  355. homeassistant-stubs/components/overkiz/cover/__init__.pyi +2 -4
  356. homeassistant-stubs/components/overkiz/diagnostics.pyi +4 -5
  357. homeassistant-stubs/components/overkiz/light.pyi +2 -4
  358. homeassistant-stubs/components/overkiz/lock.pyi +2 -4
  359. homeassistant-stubs/components/overkiz/number.pyi +3 -4
  360. homeassistant-stubs/components/overkiz/scene.pyi +2 -4
  361. homeassistant-stubs/components/overkiz/select.pyi +3 -4
  362. homeassistant-stubs/components/overkiz/sensor.pyi +2 -3
  363. homeassistant-stubs/components/overkiz/siren.pyi +2 -4
  364. homeassistant-stubs/components/overkiz/switch.pyi +2 -4
  365. homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +2 -4
  366. homeassistant-stubs/components/peblar/__init__.pyi +11 -0
  367. homeassistant-stubs/components/peblar/binary_sensor.pyi +25 -0
  368. homeassistant-stubs/components/peblar/button.pyi +27 -0
  369. homeassistant-stubs/components/peblar/config_flow.pyi +18 -0
  370. homeassistant-stubs/components/peblar/const.pyi +7 -0
  371. homeassistant-stubs/components/peblar/coordinator.pyi +49 -0
  372. homeassistant-stubs/components/peblar/diagnostics.pyi +5 -0
  373. homeassistant-stubs/components/peblar/entity.pyi +15 -0
  374. homeassistant-stubs/components/peblar/helpers.pyi +7 -0
  375. homeassistant-stubs/components/peblar/number.pyi +33 -0
  376. homeassistant-stubs/components/peblar/select.pyi +30 -0
  377. homeassistant-stubs/components/peblar/sensor.pyi +29 -0
  378. homeassistant-stubs/components/peblar/switch.pyi +32 -0
  379. homeassistant-stubs/components/peblar/update.pyi +27 -0
  380. homeassistant-stubs/components/plugwise/binary_sensor.pyi +1 -0
  381. homeassistant-stubs/components/plugwise/button.pyi +2 -0
  382. homeassistant-stubs/components/plugwise/climate.pyi +3 -4
  383. homeassistant-stubs/components/plugwise/config_flow.pyi +7 -1
  384. homeassistant-stubs/components/plugwise/entity.pyi +0 -1
  385. homeassistant-stubs/components/plugwise/number.pyi +2 -0
  386. homeassistant-stubs/components/plugwise/select.pyi +2 -0
  387. homeassistant-stubs/components/plugwise/sensor.pyi +2 -0
  388. homeassistant-stubs/components/plugwise/switch.pyi +2 -0
  389. homeassistant-stubs/components/plugwise/util.pyi +1 -0
  390. homeassistant-stubs/components/powerfox/__init__.pyi +12 -0
  391. homeassistant-stubs/components/powerfox/config_flow.pyi +16 -0
  392. homeassistant-stubs/components/{stookalert → powerfox}/const.pyi +1 -2
  393. homeassistant-stubs/components/powerfox/coordinator.pyi +14 -0
  394. homeassistant-stubs/components/powerfox/diagnostics.pyi +5 -0
  395. homeassistant-stubs/components/powerfox/entity.pyi +11 -0
  396. homeassistant-stubs/components/powerfox/sensor.pyi +28 -0
  397. homeassistant-stubs/components/powerwall/sensor.pyi +3 -5
  398. homeassistant-stubs/components/prometheus/__init__.pyi +11 -3
  399. homeassistant-stubs/components/rabbitair/fan.pyi +0 -1
  400. homeassistant-stubs/components/recorder/__init__.pyi +1 -1
  401. homeassistant-stubs/components/recorder/db_schema.pyi +19 -4
  402. homeassistant-stubs/components/recorder/history/legacy.pyi +4 -4
  403. homeassistant-stubs/components/recorder/history/modern.pyi +5 -5
  404. homeassistant-stubs/components/recorder/migration.pyi +32 -19
  405. homeassistant-stubs/components/recorder/models/state.pyi +3 -0
  406. homeassistant-stubs/components/recorder/queries.pyi +3 -4
  407. homeassistant-stubs/components/recorder/statistics.pyi +2 -2
  408. homeassistant-stubs/components/recorder/table_managers/event_types.pyi +0 -1
  409. homeassistant-stubs/components/recorder/table_managers/recorder_runs.pyi +1 -12
  410. homeassistant-stubs/components/recorder/table_managers/states.pyi +7 -0
  411. homeassistant-stubs/components/remote/__init__.pyi +0 -10
  412. homeassistant-stubs/components/renault/binary_sensor.pyi +2 -0
  413. homeassistant-stubs/components/renault/button.pyi +2 -0
  414. homeassistant-stubs/components/renault/coordinator.pyi +2 -1
  415. homeassistant-stubs/components/renault/device_tracker.pyi +2 -0
  416. homeassistant-stubs/components/renault/select.pyi +2 -0
  417. homeassistant-stubs/components/renault/sensor.pyi +2 -0
  418. homeassistant-stubs/components/reolink/__init__.pyi +1 -0
  419. homeassistant-stubs/components/reolink/button.pyi +1 -2
  420. homeassistant-stubs/components/reolink/camera.pyi +1 -2
  421. homeassistant-stubs/components/reolink/light.pyi +1 -2
  422. homeassistant-stubs/components/reolink/media_source.pyi +2 -3
  423. homeassistant-stubs/components/reolink/number.pyi +1 -2
  424. homeassistant-stubs/components/reolink/select.pyi +1 -2
  425. homeassistant-stubs/components/reolink/services.pyi +2 -2
  426. homeassistant-stubs/components/reolink/siren.pyi +1 -2
  427. homeassistant-stubs/components/reolink/switch.pyi +1 -2
  428. homeassistant-stubs/components/reolink/update.pyi +1 -0
  429. homeassistant-stubs/components/reolink/util.pyi +9 -0
  430. homeassistant-stubs/components/reolink/views.pyi +21 -0
  431. homeassistant-stubs/components/roborock/vacuum.pyi +2 -2
  432. homeassistant-stubs/components/roku/__init__.pyi +5 -4
  433. homeassistant-stubs/components/roku/binary_sensor.pyi +4 -3
  434. homeassistant-stubs/components/roku/config_flow.pyi +5 -3
  435. homeassistant-stubs/components/roku/diagnostics.pyi +2 -4
  436. homeassistant-stubs/components/roku/media_player.pyi +4 -3
  437. homeassistant-stubs/components/roku/remote.pyi +4 -4
  438. homeassistant-stubs/components/roku/select.pyi +4 -4
  439. homeassistant-stubs/components/roku/sensor.pyi +4 -4
  440. homeassistant-stubs/components/romy/vacuum.pyi +2 -2
  441. homeassistant-stubs/components/russound_rio/__init__.pyi +14 -0
  442. homeassistant-stubs/components/russound_rio/config_flow.pyi +14 -0
  443. homeassistant-stubs/components/russound_rio/const.pyi +6 -0
  444. homeassistant-stubs/components/russound_rio/diagnostics.pyi +5 -0
  445. homeassistant-stubs/components/russound_rio/entity.pyi +25 -0
  446. homeassistant-stubs/components/russound_rio/media_player.pyi +56 -0
  447. homeassistant-stubs/components/schlage/__init__.pyi +11 -0
  448. homeassistant-stubs/components/schlage/binary_sensor.pyi +26 -0
  449. homeassistant-stubs/components/schlage/config_flow.pyi +19 -0
  450. homeassistant-stubs/components/schlage/const.pyi +6 -0
  451. homeassistant-stubs/components/schlage/coordinator.pyi +31 -0
  452. homeassistant-stubs/components/schlage/diagnostics.pyi +5 -0
  453. homeassistant-stubs/components/schlage/entity.pyi +19 -0
  454. homeassistant-stubs/components/schlage/lock.pyi +21 -0
  455. homeassistant-stubs/components/schlage/select.pyi +20 -0
  456. homeassistant-stubs/components/schlage/sensor.pyi +19 -0
  457. homeassistant-stubs/components/schlage/switch.pyi +32 -0
  458. homeassistant-stubs/components/sensibo/climate.pyi +2 -3
  459. homeassistant-stubs/components/sensibo/coordinator.pyi +1 -1
  460. homeassistant-stubs/components/sensor/const.pyi +0 -7
  461. homeassistant-stubs/components/senz/climate.pyi +0 -1
  462. homeassistant-stubs/components/shelly/climate.pyi +0 -2
  463. homeassistant-stubs/components/siren/__init__.pyi +1 -6
  464. homeassistant-stubs/components/siren/const.pyi +0 -11
  465. homeassistant-stubs/components/snooz/fan.pyi +0 -1
  466. homeassistant-stubs/components/solarlog/config_flow.pyi +2 -5
  467. homeassistant-stubs/components/solarlog/const.pyi +0 -1
  468. homeassistant-stubs/components/solarlog/coordinator.pyi +0 -1
  469. homeassistant-stubs/components/sql/sensor.pyi +2 -0
  470. homeassistant-stubs/components/starlink/coordinator.pyi +4 -2
  471. homeassistant-stubs/components/starlink/sensor.pyi +1 -1
  472. homeassistant-stubs/components/statistics/sensor.pyi +43 -40
  473. homeassistant-stubs/components/stream/__init__.pyi +13 -0
  474. homeassistant-stubs/components/suez_water/__init__.pyi +3 -5
  475. homeassistant-stubs/components/suez_water/coordinator.pyi +7 -9
  476. homeassistant-stubs/components/suez_water/sensor.pyi +5 -6
  477. homeassistant-stubs/components/sun/__init__.pyi +2 -0
  478. homeassistant-stubs/components/sun/entity.pyi +1 -2
  479. homeassistant-stubs/components/switch/__init__.pyi +0 -7
  480. homeassistant-stubs/components/switch_as_x/fan.pyi +0 -1
  481. homeassistant-stubs/components/switchbee/climate.pyi +0 -1
  482. homeassistant-stubs/components/switchbot_cloud/climate.pyi +0 -1
  483. homeassistant-stubs/components/switchbot_cloud/sensor.pyi +12 -3
  484. homeassistant-stubs/components/switchbot_cloud/switch.pyi +4 -0
  485. homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +3 -3
  486. homeassistant-stubs/components/switcher_kis/climate.pyi +1 -2
  487. homeassistant-stubs/components/switcher_kis/cover.pyi +0 -4
  488. homeassistant-stubs/components/switcher_kis/entity.pyi +6 -0
  489. homeassistant-stubs/components/switcher_kis/light.pyi +0 -4
  490. homeassistant-stubs/components/switcher_kis/switch.pyi +0 -2
  491. homeassistant-stubs/components/tailwind/__init__.pyi +2 -4
  492. homeassistant-stubs/components/tailwind/binary_sensor.pyi +1 -1
  493. homeassistant-stubs/components/tailwind/button.pyi +1 -1
  494. homeassistant-stubs/components/tailwind/coordinator.pyi +2 -1
  495. homeassistant-stubs/components/tailwind/cover.pyi +1 -1
  496. homeassistant-stubs/components/tailwind/diagnostics.pyi +1 -1
  497. homeassistant-stubs/components/tailwind/number.pyi +1 -1
  498. homeassistant-stubs/components/tedee/__init__.pyi +2 -3
  499. homeassistant-stubs/components/tedee/binary_sensor.pyi +2 -0
  500. homeassistant-stubs/components/tedee/sensor.pyi +2 -0
  501. homeassistant-stubs/components/tibber/services.pyi +1 -1
  502. homeassistant-stubs/components/tolo/climate.pyi +0 -1
  503. homeassistant-stubs/components/tolo/fan.pyi +0 -1
  504. homeassistant-stubs/components/tplink/__init__.pyi +1 -1
  505. homeassistant-stubs/components/tplink/binary_sensor.pyi +2 -2
  506. homeassistant-stubs/components/tplink/button.pyi +2 -2
  507. homeassistant-stubs/components/tplink/camera.pyi +49 -0
  508. homeassistant-stubs/components/tplink/climate.pyi +1 -2
  509. homeassistant-stubs/components/tplink/config_flow.pyi +11 -5
  510. homeassistant-stubs/components/tplink/const.pyi +2 -0
  511. homeassistant-stubs/components/tplink/entity.pyi +9 -2
  512. homeassistant-stubs/components/tplink/fan.pyi +1 -2
  513. homeassistant-stubs/components/tplink/light.pyi +2 -2
  514. homeassistant-stubs/components/tplink/models.pyi +4 -1
  515. homeassistant-stubs/components/tplink/number.pyi +2 -2
  516. homeassistant-stubs/components/tplink/select.pyi +2 -2
  517. homeassistant-stubs/components/tplink/sensor.pyi +2 -2
  518. homeassistant-stubs/components/tplink/siren.pyi +1 -1
  519. homeassistant-stubs/components/tplink/switch.pyi +2 -2
  520. homeassistant-stubs/components/tractive/sensor.pyi +1 -1
  521. homeassistant-stubs/components/tradfri/fan.pyi +0 -1
  522. homeassistant-stubs/components/tradfri/light.pyi +4 -4
  523. homeassistant-stubs/components/transmission/__init__.pyi +1 -1
  524. homeassistant-stubs/components/transmission/const.pyi +1 -0
  525. homeassistant-stubs/components/twentemilieu/__init__.pyi +3 -11
  526. homeassistant-stubs/components/twentemilieu/calendar.pyi +1 -1
  527. homeassistant-stubs/components/twentemilieu/coordinator.pyi +14 -0
  528. homeassistant-stubs/components/twentemilieu/diagnostics.pyi +2 -2
  529. homeassistant-stubs/components/twentemilieu/entity.pyi +2 -3
  530. homeassistant-stubs/components/twentemilieu/sensor.pyi +3 -3
  531. homeassistant-stubs/components/unifi/sensor.pyi +1 -1
  532. homeassistant-stubs/components/unifiprotect/const.pyi +6 -0
  533. homeassistant-stubs/components/unifiprotect/event.pyi +5 -3
  534. homeassistant-stubs/components/unifiprotect/services.pyi +16 -9
  535. homeassistant-stubs/components/update/__init__.pyi +0 -2
  536. homeassistant-stubs/components/vacuum/__init__.pyi +16 -7
  537. homeassistant-stubs/components/vacuum/const.pyi +18 -5
  538. homeassistant-stubs/components/vacuum/device_condition.pyi +1 -1
  539. homeassistant-stubs/components/vacuum/device_trigger.pyi +1 -1
  540. homeassistant-stubs/components/vacuum/reproduce_state.pyi +2 -2
  541. homeassistant-stubs/components/vallox/fan.pyi +0 -1
  542. homeassistant-stubs/components/velbus/__init__.pyi +22 -9
  543. homeassistant-stubs/components/velbus/binary_sensor.pyi +4 -3
  544. homeassistant-stubs/components/velbus/button.pyi +4 -3
  545. homeassistant-stubs/components/velbus/climate.pyi +4 -3
  546. homeassistant-stubs/components/velbus/cover.pyi +4 -3
  547. homeassistant-stubs/components/velbus/diagnostics.pyi +3 -4
  548. homeassistant-stubs/components/velbus/light.pyi +4 -3
  549. homeassistant-stubs/components/velbus/select.pyi +4 -3
  550. homeassistant-stubs/components/velbus/sensor.pyi +4 -3
  551. homeassistant-stubs/components/velbus/services.pyi +7 -0
  552. homeassistant-stubs/components/velbus/switch.pyi +4 -3
  553. homeassistant-stubs/components/water_heater/__init__.pyi +7 -12
  554. homeassistant-stubs/components/wemo/fan.pyi +0 -1
  555. homeassistant-stubs/components/wemo/light.pyi +4 -2
  556. homeassistant-stubs/components/wiz/light.pyi +4 -5
  557. homeassistant-stubs/components/yale_smart_alarm/__init__.pyi +4 -4
  558. homeassistant-stubs/components/yale_smart_alarm/alarm_control_panel.pyi +0 -1
  559. homeassistant-stubs/components/yale_smart_alarm/config_flow.pyi +3 -2
  560. homeassistant-stubs/components/yale_smart_alarm/coordinator.pyi +3 -3
  561. homeassistant-stubs/components/yale_smart_alarm/entity.pyi +1 -1
  562. homeassistant-stubs/components/yale_smart_alarm/lock.pyi +1 -1
  563. homeassistant-stubs/components/zwave_js/api.pyi +2 -0
  564. homeassistant-stubs/components/zwave_js/climate.pyi +0 -1
  565. homeassistant-stubs/components/zwave_js/fan.pyi +0 -1
  566. homeassistant-stubs/components/zwave_js/light.pyi +7 -9
  567. homeassistant-stubs/const.pyi +2 -151
  568. homeassistant-stubs/core.pyi +3 -6
  569. homeassistant-stubs/core_config.pyi +2 -1
  570. homeassistant-stubs/data_entry_flow.pyi +0 -13
  571. homeassistant-stubs/exceptions.pyi +6 -0
  572. homeassistant-stubs/helpers/device_registry.pyi +1 -9
  573. homeassistant-stubs/helpers/entity.pyi +1 -2
  574. homeassistant-stubs/helpers/event.pyi +3 -4
  575. homeassistant-stubs/helpers/service.pyi +1 -1
  576. homeassistant-stubs/helpers/service_info/mqtt.pyi +1 -1
  577. homeassistant-stubs/helpers/system_info.pyi +1 -1
  578. homeassistant-stubs/helpers/template.pyi +1 -1
  579. homeassistant-stubs/util/dt.pyi +1 -0
  580. homeassistant-stubs/util/package.pyi +1 -0
  581. homeassistant-stubs/util/system_info.pyi +1 -0
  582. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0.dist-info}/METADATA +2 -2
  583. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0.dist-info}/RECORD +585 -490
  584. homeassistant-stubs/components/bluesound/services.pyi +0 -21
  585. homeassistant-stubs/components/stookalert/__init__.pyi +0 -10
  586. homeassistant-stubs/components/stookalert/binary_sensor.pyi +0 -24
  587. homeassistant-stubs/components/stookalert/config_flow.pyi +0 -7
  588. homeassistant-stubs/components/tailwind/typing.pyi +0 -4
  589. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0.dist-info}/WHEEL +0 -0
  590. {homeassistant_stubs-2024.12.5.dist-info → homeassistant_stubs-2025.1.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,27 @@
1
+ from .coordinator import PeblarConfigEntry as PeblarConfigEntry, PeblarVersionDataUpdateCoordinator as PeblarVersionDataUpdateCoordinator, PeblarVersionInformation as PeblarVersionInformation
2
+ from .entity import PeblarEntity as PeblarEntity
3
+ from collections.abc import Callable as Callable
4
+ from dataclasses import dataclass
5
+ from homeassistant.components.update import UpdateDeviceClass as UpdateDeviceClass, UpdateEntity as UpdateEntity, UpdateEntityDescription as UpdateEntityDescription
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
8
+
9
+ PARALLEL_UPDATES: int
10
+
11
+ @dataclass(frozen=True, kw_only=True)
12
+ class PeblarUpdateEntityDescription(UpdateEntityDescription):
13
+ available_fn: Callable[[PeblarVersionInformation], str | None]
14
+ has_fn: Callable[[PeblarVersionInformation], bool] = ...
15
+ installed_fn: Callable[[PeblarVersionInformation], str | None]
16
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., display_precision=..., available_fn, has_fn=..., installed_fn) -> None: ...
17
+
18
+ DESCRIPTIONS: tuple[PeblarUpdateEntityDescription, ...]
19
+
20
+ async def async_setup_entry(hass: HomeAssistant, entry: PeblarConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
21
+
22
+ class PeblarUpdateEntity(PeblarEntity[PeblarVersionDataUpdateCoordinator], UpdateEntity):
23
+ entity_description: PeblarUpdateEntityDescription
24
+ @property
25
+ def installed_version(self) -> str | None: ...
26
+ @property
27
+ def latest_version(self) -> str | None: ...
@@ -12,6 +12,7 @@ from plugwise.constants import BinarySensorType as BinarySensorType
12
12
  from typing import Any
13
13
 
14
14
  SEVERITIES: Incomplete
15
+ PARALLEL_UPDATES: int
15
16
 
16
17
  @dataclass(frozen=True)
17
18
  class PlugwiseBinarySensorEntityDescription(BinarySensorEntityDescription):
@@ -9,6 +9,8 @@ from homeassistant.const import EntityCategory as EntityCategory
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
11
 
12
+ PARALLEL_UPDATES: int
13
+
12
14
  async def async_setup_entry(hass: HomeAssistant, entry: PlugwiseConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
13
15
 
14
16
  class PlugwiseButtonEntity(PlugwiseEntity, ButtonEntity):
@@ -7,20 +7,19 @@ from _typeshed import Incomplete
7
7
  from homeassistant.components.climate import ATTR_HVAC_MODE as ATTR_HVAC_MODE, ATTR_TARGET_TEMP_HIGH as ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_LOW as ATTR_TARGET_TEMP_LOW, ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACAction as HVACAction, HVACMode as HVACMode
8
8
  from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
10
- from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
+ from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
11
11
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
12
  from typing import Any
13
13
 
14
+ PARALLEL_UPDATES: int
15
+
14
16
  async def async_setup_entry(hass: HomeAssistant, entry: PlugwiseConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
15
17
 
16
18
  class PlugwiseClimateEntity(PlugwiseEntity, ClimateEntity):
17
- _attr_has_entity_name: bool
18
19
  _attr_name: Incomplete
19
20
  _attr_temperature_unit: Incomplete
20
21
  _attr_translation_key = DOMAIN
21
- _enable_turn_on_off_backwards_compatibility: bool
22
22
  _previous_mode: str
23
- _attr_extra_state_attributes: Incomplete
24
23
  _attr_unique_id: Incomplete
25
24
  _devices: Incomplete
26
25
  _gateway: Incomplete
@@ -1,5 +1,6 @@
1
1
  import voluptuous as vol
2
2
  from .const import DEFAULT_PORT as DEFAULT_PORT, DEFAULT_USERNAME as DEFAULT_USERNAME, DOMAIN as DOMAIN, FLOW_SMILE as FLOW_SMILE, FLOW_STRETCH as FLOW_STRETCH, SMILE as SMILE, STRETCH as STRETCH, STRETCH_USERNAME as STRETCH_USERNAME, ZEROCONF_MAP as ZEROCONF_MAP
3
+ from _typeshed import Incomplete
3
4
  from homeassistant.components.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
4
5
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, SOURCE_USER as SOURCE_USER
5
6
  from homeassistant.const import ATTR_CONFIGURATION_URL as ATTR_CONFIGURATION_URL, CONF_BASE as CONF_BASE, CONF_HOST as CONF_HOST, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_USERNAME as CONF_USERNAME
@@ -8,8 +9,12 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession as asyn
8
9
  from plugwise import Smile
9
10
  from typing import Any, Self
10
11
 
11
- def base_schema(discovery_info: ZeroconfServiceInfo | None) -> vol.Schema: ...
12
+ _LOGGER: Incomplete
13
+ SMILE_RECONF_SCHEMA: Incomplete
14
+
15
+ def smile_user_schema(discovery_info: ZeroconfServiceInfo | None) -> vol.Schema: ...
12
16
  async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> Smile: ...
17
+ async def verify_connection(hass: HomeAssistant, user_input: dict[str, Any]) -> tuple[Smile | None, dict[str, str]]: ...
13
18
 
14
19
  class PlugwiseConfigFlow(ConfigFlow, domain=DOMAIN):
15
20
  VERSION: int
@@ -19,3 +24,4 @@ class PlugwiseConfigFlow(ConfigFlow, domain=DOMAIN):
19
24
  async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
20
25
  def is_matching(self, other_flow: Self) -> bool: ...
21
26
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
27
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -15,4 +15,3 @@ class PlugwiseEntity(CoordinatorEntity[PlugwiseDataUpdateCoordinator]):
15
15
  def available(self) -> bool: ...
16
16
  @property
17
17
  def device(self) -> GwEntityData: ...
18
- async def async_added_to_hass(self) -> None: ...
@@ -10,6 +10,8 @@ from homeassistant.const import EntityCategory as EntityCategory, UnitOfTemperat
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
11
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
12
 
13
+ PARALLEL_UPDATES: int
14
+
13
15
  @dataclass(frozen=True, kw_only=True)
14
16
  class PlugwiseNumberEntityDescription(NumberEntityDescription):
15
17
  key: NumberType
@@ -10,6 +10,8 @@ from homeassistant.const import EntityCategory as EntityCategory, STATE_ON as ST
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
11
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
12
 
13
+ PARALLEL_UPDATES: int
14
+
13
15
  @dataclass(frozen=True, kw_only=True)
14
16
  class PlugwiseSelectEntityDescription(SelectEntityDescription):
15
17
  key: SelectType
@@ -9,6 +9,8 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
9
9
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
10
10
  from plugwise.constants import SensorType as SensorType
11
11
 
12
+ PARALLEL_UPDATES: int
13
+
12
14
  @dataclass(frozen=True)
13
15
  class PlugwiseSensorEntityDescription(SensorEntityDescription):
14
16
  key: SensorType
@@ -11,6 +11,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEnti
11
11
  from plugwise.constants import SwitchType as SwitchType
12
12
  from typing import Any
13
13
 
14
+ PARALLEL_UPDATES: int
15
+
14
16
  @dataclass(frozen=True)
15
17
  class PlugwiseSwitchEntityDescription(SwitchEntityDescription):
16
18
  key: SwitchType
@@ -1,3 +1,4 @@
1
+ from .const import DOMAIN as DOMAIN
1
2
  from .entity import PlugwiseEntity as PlugwiseEntity
2
3
  from collections.abc import Awaitable, Callable as Callable, Coroutine
3
4
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
@@ -0,0 +1,12 @@
1
+ from .coordinator import PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
2
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
3
+ from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD, Platform as Platform
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
6
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
7
+
8
+ PLATFORMS: list[Platform]
9
+ type PowerfoxConfigEntry = ConfigEntry[list[PowerfoxDataUpdateCoordinator]]
10
+
11
+ async def async_setup_entry(hass: HomeAssistant, entry: PowerfoxConfigEntry) -> bool: ...
12
+ async def async_unload_entry(hass: HomeAssistant, entry: PowerfoxConfigEntry) -> bool: ...
@@ -0,0 +1,16 @@
1
+ from .const import 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_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
6
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
7
+ from typing import Any
8
+
9
+ STEP_USER_DATA_SCHEMA: Incomplete
10
+ STEP_REAUTH_SCHEMA: Incomplete
11
+
12
+ class PowerfoxConfigFlow(ConfigFlow, domain=DOMAIN):
13
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
14
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
15
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
16
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -3,5 +3,4 @@ from typing import Final
3
3
 
4
4
  DOMAIN: Final[str]
5
5
  LOGGER: Incomplete
6
- CONF_PROVINCE: Final[str]
7
- PROVINCES: Final[Incomplete]
6
+ SCAN_INTERVAL: Incomplete
@@ -0,0 +1,14 @@
1
+ from .const import DOMAIN as DOMAIN, LOGGER as LOGGER, SCAN_INTERVAL as SCAN_INTERVAL
2
+ from _typeshed import Incomplete
3
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
6
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
7
+ from powerfox import Device as Device, Powerfox as Powerfox, Poweropti
8
+
9
+ class PowerfoxDataUpdateCoordinator(DataUpdateCoordinator[Poweropti]):
10
+ config_entry: ConfigEntry
11
+ client: Incomplete
12
+ device: Incomplete
13
+ def __init__(self, hass: HomeAssistant, client: Powerfox, device: Device) -> None: ...
14
+ async def _async_update_data(self) -> Poweropti: ...
@@ -0,0 +1,5 @@
1
+ from . import PowerfoxConfigEntry as PowerfoxConfigEntry, PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
2
+ from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from typing import Any
4
+
5
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: PowerfoxConfigEntry) -> dict[str, Any]: ...
@@ -0,0 +1,11 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
3
+ from _typeshed import Incomplete
4
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
5
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
6
+ from powerfox import Device as Device
7
+
8
+ class PowerfoxEntity(CoordinatorEntity[PowerfoxDataUpdateCoordinator]):
9
+ _attr_has_entity_name: bool
10
+ _attr_device_info: Incomplete
11
+ def __init__(self, coordinator: PowerfoxDataUpdateCoordinator, device: Device) -> None: ...
@@ -0,0 +1,28 @@
1
+ from . import PowerfoxConfigEntry as PowerfoxConfigEntry
2
+ from .coordinator import PowerfoxDataUpdateCoordinator as PowerfoxDataUpdateCoordinator
3
+ from .entity import PowerfoxEntity as PowerfoxEntity
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
8
+ from homeassistant.const import UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower, UnitOfVolume as UnitOfVolume
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
+ from powerfox import Device as Device, PowerMeter, WaterMeter
12
+
13
+ @dataclass(frozen=True, kw_only=True)
14
+ class PowerfoxSensorEntityDescription[T: (PowerMeter, WaterMeter)](SensorEntityDescription):
15
+ value_fn: Callable[[T], float | int | None]
16
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., last_reset=..., native_unit_of_measurement=..., options=..., state_class=..., suggested_display_precision=..., suggested_unit_of_measurement=..., value_fn) -> None: ...
17
+
18
+ SENSORS_POWER: tuple[PowerfoxSensorEntityDescription[PowerMeter], ...]
19
+ SENSORS_WATER: tuple[PowerfoxSensorEntityDescription[WaterMeter], ...]
20
+
21
+ async def async_setup_entry(hass: HomeAssistant, entry: PowerfoxConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
22
+
23
+ class PowerfoxSensorEntity(PowerfoxEntity, SensorEntity):
24
+ entity_description: PowerfoxSensorEntityDescription
25
+ _attr_unique_id: Incomplete
26
+ def __init__(self, coordinator: PowerfoxDataUpdateCoordinator, device: Device, description: PowerfoxSensorEntityDescription) -> None: ...
27
+ @property
28
+ def native_value(self) -> float | int | None: ...
@@ -10,15 +10,13 @@ from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.entity import Entity as Entity
11
11
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
12
  from tesla_powerwall import MeterResponse, MeterType as MeterType
13
- from typing import Generic, TypeVar
14
13
 
15
14
  _METER_DIRECTION_EXPORT: str
16
15
  _METER_DIRECTION_IMPORT: str
17
- _ValueParamT = TypeVar('_ValueParamT')
18
- _ValueT = TypeVar('_ValueT', bound=float | int | str | None)
16
+ type _ValueType = float | int | str | None
19
17
 
20
18
  @dataclass(frozen=True, kw_only=True)
21
- class PowerwallSensorEntityDescription(SensorEntityDescription, Generic[_ValueParamT, _ValueT]):
19
+ class PowerwallSensorEntityDescription[_ValueParamT, _ValueT: _ValueType](SensorEntityDescription):
22
20
  value_fn: Callable[[_ValueParamT], _ValueT]
23
21
  def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., last_reset=..., native_unit_of_measurement=..., options=..., state_class=..., suggested_display_precision=..., suggested_unit_of_measurement=..., value_fn) -> None: ...
24
22
 
@@ -88,7 +86,7 @@ class PowerWallImportSensor(PowerWallEnergyDirectionSensor):
88
86
  @property
89
87
  def native_value(self) -> float | None: ...
90
88
 
91
- class PowerWallBatterySensor(BatteryEntity, SensorEntity, Generic[_ValueT]):
89
+ class PowerWallBatterySensor[_ValueT: _ValueType](BatteryEntity, SensorEntity):
92
90
  entity_description: PowerwallSensorEntityDescription[BatteryResponse, _ValueT]
93
91
  _attr_translation_key: Incomplete
94
92
  _attr_unique_id: Incomplete
@@ -1,6 +1,7 @@
1
1
  from _typeshed import Incomplete
2
2
  from aiohttp import web
3
3
  from collections.abc import Callable as Callable
4
+ from dataclasses import dataclass
4
5
  from homeassistant.components.alarm_control_panel import AlarmControlPanelState as AlarmControlPanelState
5
6
  from homeassistant.components.climate import ATTR_CURRENT_TEMPERATURE as ATTR_CURRENT_TEMPERATURE, ATTR_FAN_MODE as ATTR_FAN_MODE, ATTR_FAN_MODES as ATTR_FAN_MODES, ATTR_HVAC_ACTION as ATTR_HVAC_ACTION, ATTR_HVAC_MODES as ATTR_HVAC_MODES, ATTR_TARGET_TEMP_HIGH as ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_LOW as ATTR_TARGET_TEMP_LOW, HVACAction as HVACAction
6
7
  from homeassistant.components.cover import ATTR_CURRENT_POSITION as ATTR_CURRENT_POSITION, ATTR_CURRENT_TILT_POSITION as ATTR_CURRENT_TILT_POSITION
@@ -39,6 +40,12 @@ CONFIG_SCHEMA: Incomplete
39
40
 
40
41
  def setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
41
42
 
43
+ @dataclass(frozen=True, slots=True)
44
+ class MetricNameWithLabelValues:
45
+ metric_name: str
46
+ label_values: tuple[str, ...]
47
+ def __init__(self, metric_name, label_values) -> None: ...
48
+
42
49
  class PrometheusMetrics:
43
50
  _component_config: Incomplete
44
51
  _override_metric: Incomplete
@@ -47,20 +54,21 @@ class PrometheusMetrics:
47
54
  _sensor_metric_handlers: Incomplete
48
55
  metrics_prefix: Incomplete
49
56
  _metrics: Incomplete
57
+ _metrics_by_entity_id: Incomplete
50
58
  _climate_units: Incomplete
51
59
  def __init__(self, entity_filter: entityfilter.EntityFilter, namespace: str, climate_units: UnitOfTemperature, component_config: EntityValues, override_metric: str | None, default_metric: str | None) -> None: ...
52
60
  def handle_state_changed_event(self, event: Event[EventStateChangedData]) -> None: ...
53
61
  def handle_state(self, state: State) -> None: ...
54
62
  def handle_entity_registry_updated(self, event: Event[EventEntityRegistryUpdatedData]) -> None: ...
55
- def _remove_labelsets(self, entity_id: str, friendly_name: str | None = None, ignored_metrics: set[MetricWrapperBase] | None = None) -> None: ...
63
+ def _remove_labelsets(self, entity_id: str, ignored_metric_names: set[str] | None = None) -> None: ...
56
64
  def _handle_attributes(self, state: State) -> None: ...
57
- def _metric[_MetricBaseT: MetricWrapperBase](self, metric: str, factory: type[_MetricBaseT], documentation: str, extra_labels: list[str] | None = None) -> _MetricBaseT: ...
65
+ def _metric[_MetricBaseT: MetricWrapperBase](self, metric_name: str, factory: type[_MetricBaseT], documentation: str, labels: dict[str, str]) -> _MetricBaseT: ...
58
66
  @staticmethod
59
67
  def _sanitize_metric_name(metric: str) -> str: ...
60
68
  @staticmethod
61
69
  def state_as_number(state: State) -> float | None: ...
62
70
  @staticmethod
63
- def _labels(state: State) -> dict[str, Any]: ...
71
+ def _labels(state: State, extra_labels: dict[str, str] | None = None) -> dict[str, Any]: ...
64
72
  def _battery(self, state: State) -> None: ...
65
73
  def _handle_binary_sensor(self, state: State) -> None: ...
66
74
  def _handle_input_boolean(self, state: State) -> None: ...
@@ -19,7 +19,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_e
19
19
 
20
20
  class RabbitAirFanEntity(RabbitAirBaseEntity, FanEntity):
21
21
  _attr_supported_features: Incomplete
22
- _enable_turn_on_off_backwards_compatibility: bool
23
22
  _attr_preset_modes: Incomplete
24
23
  _attr_speed_count: Incomplete
25
24
  def __init__(self, coordinator: RabbitAirDataUpdateCoordinator, entry: ConfigEntry) -> None: ...
@@ -1,4 +1,4 @@
1
- from . import entity_registry as entity_registry, websocket_api as websocket_api
1
+ from . import backup as backup, entity_registry as entity_registry, websocket_api as websocket_api
2
2
  from .const import CONF_DB_INTEGRITY_CHECK as CONF_DB_INTEGRITY_CHECK, DOMAIN as DOMAIN, INTEGRATION_PLATFORM_COMPILE_STATISTICS as INTEGRATION_PLATFORM_COMPILE_STATISTICS, INTEGRATION_PLATFORM_METHODS as INTEGRATION_PLATFORM_METHODS, SQLITE_URL_PREFIX as SQLITE_URL_PREFIX, SupportedDialect as SupportedDialect
3
3
  from .core import Recorder as Recorder
4
4
  from .services import async_register_services as async_register_services
@@ -13,7 +13,7 @@ from sqlalchemy.dialects import sqlite
13
13
  from sqlalchemy.engine.interfaces import Dialect as Dialect
14
14
  from sqlalchemy.orm import DeclarativeBase, Mapped as Mapped
15
15
  from sqlalchemy.types import TypeDecorator as TypeDecorator
16
- from typing import Any, Self
16
+ from typing import Any, Final, Self
17
17
 
18
18
  class Base(DeclarativeBase): ...
19
19
  class LegacyBase(DeclarativeBase): ...
@@ -44,7 +44,8 @@ METADATA_ID_LAST_UPDATED_INDEX_TS: str
44
44
  EVENTS_CONTEXT_ID_BIN_INDEX: str
45
45
  STATES_CONTEXT_ID_BIN_INDEX: str
46
46
  LEGACY_STATES_EVENT_ID_INDEX: str
47
- LEGACY_STATES_ENTITY_ID_LAST_UPDATED_INDEX: str
47
+ LEGACY_STATES_ENTITY_ID_LAST_UPDATED_TS_INDEX: str
48
+ LEGACY_MAX_LENGTH_EVENT_CONTEXT_ID: Final[int]
48
49
  CONTEXT_ID_BIN_MAX_LENGTH: int
49
50
  MYSQL_COLLATE: str
50
51
  MYSQL_DEFAULT_CHARSET: str
@@ -110,6 +111,12 @@ class Events(Base):
110
111
  def from_event(event: Event) -> Events: ...
111
112
  def to_native(self, validate_entity_id: bool = True) -> Event | None: ...
112
113
 
114
+ class LegacyEvents(LegacyBase):
115
+ __table_args__: Incomplete
116
+ __tablename__ = TABLE_EVENTS
117
+ event_id: Mapped[int]
118
+ context_id: Mapped[str | None]
119
+
113
120
  class EventData(Base):
114
121
  __table_args__: Incomplete
115
122
  __tablename__ = TABLE_EVENT_DATA
@@ -163,6 +170,14 @@ class States(Base):
163
170
  def from_event(event: Event[EventStateChangedData]) -> States: ...
164
171
  def to_native(self, validate_entity_id: bool = True) -> State | None: ...
165
172
 
173
+ class LegacyStates(LegacyBase):
174
+ __table_args__: Incomplete
175
+ __tablename__ = TABLE_STATES
176
+ state_id: Mapped[int]
177
+ entity_id: Mapped[str | None]
178
+ last_updated_ts: Mapped[float | None]
179
+ context_id: Mapped[str | None]
180
+
166
181
  class StateAttributes(Base):
167
182
  __table_args__: Incomplete
168
183
  __tablename__ = TABLE_STATE_ATTRIBUTES
@@ -199,9 +214,9 @@ class StatisticsBase:
199
214
  sum: Mapped[float | None]
200
215
  duration: timedelta
201
216
  @classmethod
202
- def from_stats(cls, metadata_id: int, stats: StatisticData) -> Self: ...
217
+ def from_stats(cls, metadata_id: int, stats: StatisticData, now_timestamp: float | None = None) -> Self: ...
203
218
  @classmethod
204
- def from_stats_ts(cls, metadata_id: int, stats: StatisticDataTimestamp) -> Self: ...
219
+ def from_stats_ts(cls, metadata_id: int, stats: StatisticDataTimestamp, now_timestamp: float | None = None) -> Self: ...
205
220
 
206
221
  class Statistics(Base, StatisticsBase):
207
222
  duration: Incomplete
@@ -1,6 +1,6 @@
1
- from ..db_schema import RecorderRuns as RecorderRuns, StateAttributes as StateAttributes, States as States
1
+ from ..db_schema import StateAttributes as StateAttributes, States as States
2
2
  from ..filters import Filters as Filters
3
- from ..models import process_timestamp as process_timestamp, process_timestamp_to_utc_isoformat as process_timestamp_to_utc_isoformat
3
+ from ..models import process_timestamp_to_utc_isoformat as process_timestamp_to_utc_isoformat
4
4
  from ..models.legacy import LegacyLazyState as LegacyLazyState, legacy_row_to_compressed_state as legacy_row_to_compressed_state
5
5
  from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element, session_scope as session_scope
6
6
  from .const import LAST_CHANGED_KEY as LAST_CHANGED_KEY, NEED_ATTRIBUTE_DOMAINS as NEED_ATTRIBUTE_DOMAINS, SIGNIFICANT_DOMAINS as SIGNIFICANT_DOMAINS, SIGNIFICANT_DOMAINS_ENTITY_ID_LIKE as SIGNIFICANT_DOMAINS_ENTITY_ID_LIKE, STATE_KEY as STATE_KEY
@@ -42,7 +42,7 @@ def _state_changed_during_period_stmt(start_time: datetime, end_time: datetime |
42
42
  def state_changes_during_period(hass: HomeAssistant, start_time: datetime, end_time: datetime | None = None, entity_id: str | None = None, no_attributes: bool = False, descending: bool = False, limit: int | None = None, include_start_time_state: bool = True) -> dict[str, list[State]]: ...
43
43
  def _get_last_state_changes_stmt(number_of_states: int, entity_id: str) -> StatementLambdaElement: ...
44
44
  def get_last_state_changes(hass: HomeAssistant, number_of_states: int, entity_id: str) -> dict[str, list[State]]: ...
45
- def _get_states_for_entities_stmt(run_start: datetime, utc_point_in_time: datetime, entity_ids: list[str], no_attributes: bool) -> StatementLambdaElement: ...
46
- def _get_rows_with_session(hass: HomeAssistant, session: Session, utc_point_in_time: datetime, entity_ids: list[str], run: RecorderRuns | None = None, no_attributes: bool = False) -> Iterable[Row]: ...
45
+ def _get_states_for_entities_stmt(run_start_ts: float, utc_point_in_time: datetime, entity_ids: list[str], no_attributes: bool) -> StatementLambdaElement: ...
46
+ def _get_rows_with_session(hass: HomeAssistant, session: Session, utc_point_in_time: datetime, entity_ids: list[str], *, no_attributes: bool = False) -> Iterable[Row]: ...
47
47
  def _get_single_entity_states_stmt(utc_point_in_time: datetime, entity_id: str, no_attributes: bool = False) -> StatementLambdaElement: ...
48
48
  def _sorted_states_to_dict(hass: HomeAssistant, session: Session, states: Iterable[Row], start_time: datetime, entity_ids: list[str], include_start_time_state: bool = True, minimal_response: bool = False, no_attributes: bool = False, compressed_state_format: bool = False) -> dict[str, list[State | dict[str, Any]]]: ...
@@ -1,7 +1,7 @@
1
1
  from ..const import LAST_REPORTED_SCHEMA_VERSION as LAST_REPORTED_SCHEMA_VERSION
2
- from ..db_schema import SHARED_ATTR_OR_LEGACY_ATTRIBUTES as SHARED_ATTR_OR_LEGACY_ATTRIBUTES, StateAttributes as StateAttributes, States as States
2
+ from ..db_schema import SHARED_ATTR_OR_LEGACY_ATTRIBUTES as SHARED_ATTR_OR_LEGACY_ATTRIBUTES, StateAttributes as StateAttributes, States as States, StatesMeta as StatesMeta
3
3
  from ..filters import Filters as Filters
4
- from ..models import LazyState as LazyState, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, extract_metadata_ids as extract_metadata_ids, process_timestamp as process_timestamp, row_to_compressed_state as row_to_compressed_state
4
+ from ..models import LazyState as LazyState, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, extract_metadata_ids as extract_metadata_ids, row_to_compressed_state as row_to_compressed_state
5
5
  from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element, session_scope as session_scope
6
6
  from .const import LAST_CHANGED_KEY as LAST_CHANGED_KEY, NEED_ATTRIBUTE_DOMAINS as NEED_ATTRIBUTE_DOMAINS, SIGNIFICANT_DOMAINS as SIGNIFICANT_DOMAINS, STATE_KEY as STATE_KEY
7
7
  from _typeshed import Incomplete
@@ -29,8 +29,8 @@ def state_changes_during_period(hass: HomeAssistant, start_time: datetime, end_t
29
29
  def _get_last_state_changes_single_stmt(metadata_id: int) -> Select: ...
30
30
  def _get_last_state_changes_multiple_stmt(number_of_states: int, metadata_id: int, include_last_reported: bool) -> Select: ...
31
31
  def get_last_state_changes(hass: HomeAssistant, number_of_states: int, entity_id: str) -> dict[str, list[State]]: ...
32
- def _get_start_time_state_for_entities_stmt(run_start_ts: float, epoch_time: float, metadata_ids: list[int], no_attributes: bool, include_last_changed: bool) -> Select: ...
33
- def _get_run_start_ts_for_utc_point_in_time(hass: HomeAssistant, utc_point_in_time: datetime) -> float | None: ...
34
- def _get_start_time_state_stmt(run_start_ts: float, epoch_time: float, single_metadata_id: int | None, metadata_ids: list[int], no_attributes: bool, include_last_changed: bool) -> Select: ...
32
+ def _get_start_time_state_for_entities_stmt(epoch_time: float, metadata_ids: list[int], no_attributes: bool, include_last_changed: bool) -> Select: ...
33
+ def _get_oldest_possible_ts(hass: HomeAssistant, utc_point_in_time: datetime) -> float | None: ...
34
+ def _get_start_time_state_stmt(epoch_time: float, single_metadata_id: int | None, metadata_ids: list[int], no_attributes: bool, include_last_changed: bool) -> Select: ...
35
35
  def _get_single_entity_start_time_stmt(epoch_time: float, metadata_id: int, no_attributes: bool, include_last_changed: bool, include_last_reported: bool) -> Select: ...
36
36
  def _sorted_states_to_dict(states: Iterable[Row], start_time_ts: float | None, entity_ids: list[str], entity_id_to_metadata_id: dict[str, int | None], minimal_response: bool = False, compressed_state_format: bool = False, descending: bool = False, no_attributes: bool = False) -> dict[str, list[State | dict[str, Any]]]: ...
@@ -2,7 +2,7 @@ import abc
2
2
  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_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
- 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_INDEX as LEGACY_STATES_ENTITY_ID_LAST_UPDATED_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
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
6
  from .models import 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
@@ -17,6 +17,7 @@ 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
19
  from sqlalchemy.engine import CursorResult as CursorResult, Engine as Engine
20
+ from sqlalchemy.orm import DeclarativeBase as DeclarativeBase
20
21
  from sqlalchemy.orm.session import Session as Session
21
22
  from sqlalchemy.schema import AddConstraint
22
23
  from sqlalchemy.sql.lambdas import StatementLambdaElement as StatementLambdaElement
@@ -42,18 +43,22 @@ _POSTGRESQL_COLUMN_TYPES: Incomplete
42
43
  _SQLITE_COLUMN_TYPES: Incomplete
43
44
  _COLUMN_TYPES_FOR_DIALECT: dict[SupportedDialect | None, _ColumnTypesForDialect]
44
45
 
46
+ def _unindexable_legacy_column(instance: Recorder, base: type[DeclarativeBase], err: Exception) -> bool: ...
45
47
  def raise_if_exception_missing_str(ex: Exception, match_substrs: Iterable[str]) -> None: ...
46
- def _get_schema_version(session: Session) -> int | None: ...
47
- def get_schema_version(session_maker: Callable[[], Session]) -> int | None: ...
48
+ def _get_initial_schema_version(session: Session) -> int | None: ...
49
+ def get_initial_schema_version(session_maker: Callable[[], Session]) -> int | None: ...
50
+ def _get_current_schema_version(session: Session) -> int | None: ...
51
+ def get_current_schema_version(session_maker: Callable[[], Session]) -> int | None: ...
48
52
 
49
53
  @dataclass(frozen=True, kw_only=True)
50
54
  class SchemaValidationStatus:
51
55
  current_version: int
56
+ initial_version: int
52
57
  migration_needed: bool
53
58
  non_live_data_migration_needed: bool
54
59
  schema_errors: set[str]
55
60
  start_version: int
56
- def __init__(self, *, current_version, migration_needed, non_live_data_migration_needed, schema_errors, start_version) -> None: ...
61
+ def __init__(self, *, current_version, initial_version, migration_needed, non_live_data_migration_needed, schema_errors, start_version) -> None: ...
57
62
 
58
63
  def _schema_is_current(current_version: int) -> bool: ...
59
64
  def validate_db_schema(hass: HomeAssistant, instance: Recorder, session_maker: Callable[[], Session]) -> SchemaValidationStatus | None: ...
@@ -64,10 +69,10 @@ def _migrate_schema(instance: Recorder, hass: HomeAssistant, engine: Engine, ses
64
69
  def migrate_schema_non_live(instance: Recorder, hass: HomeAssistant, engine: Engine, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> SchemaValidationStatus: ...
65
70
  def migrate_schema_live(instance: Recorder, hass: HomeAssistant, engine: Engine, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> SchemaValidationStatus: ...
66
71
  def _get_migration_changes(session: Session) -> dict[str, int]: ...
67
- def non_live_data_migration_needed(instance: Recorder, session_maker: Callable[[], Session], schema_version: int) -> bool: ...
72
+ def non_live_data_migration_needed(instance: Recorder, session_maker: Callable[[], Session], *, initial_schema_version: int, start_schema_version: int) -> bool: ...
68
73
  def migrate_data_non_live(instance: Recorder, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> None: ...
69
74
  def migrate_data_live(instance: Recorder, session_maker: Callable[[], Session], schema_status: SchemaValidationStatus) -> None: ...
70
- def _create_index(session_maker: Callable[[], Session], table_name: str, index_name: str) -> None: ...
75
+ def _create_index(instance: Recorder, session_maker: Callable[[], Session], table_name: str, index_name: str, *, base: type[DeclarativeBase] = ...) -> None: ...
71
76
  def _execute_or_collect_error(session_maker: Callable[[], Session], query: str, errors: list[str]) -> bool: ...
72
77
  def _drop_index(session_maker: Callable[[], Session], table_name: str, index_name: str, quiet: bool | None = None) -> None: ...
73
78
  def _add_columns(session_maker: Callable[[], Session], table_name: str, columns_def: list[str]) -> None: ...
@@ -238,6 +243,9 @@ class _SchemaVersion46Migrator(_SchemaVersionMigrator, target_version=46):
238
243
  class _SchemaVersion47Migrator(_SchemaVersionMigrator, target_version=47):
239
244
  def _apply_update(self) -> None: ...
240
245
 
246
+ class _SchemaVersion48Migrator(_SchemaVersionMigrator, target_version=48):
247
+ def _apply_update(self) -> None: ...
248
+
241
249
  def _migrate_statistics_columns_to_timestamp_removing_duplicates(hass: HomeAssistant, instance: Recorder, session_maker: Callable[[], Session], engine: Engine) -> None: ...
242
250
  def _correct_table_character_set_and_collation(table: str, session_maker: Callable[[], Session]) -> None: ...
243
251
  def _wipe_old_string_time_columns(instance: Recorder, engine: Engine, session: Session) -> None: ...
@@ -269,13 +277,15 @@ class DataMigrationStatus:
269
277
  def __init__(self, *, needs_migrate, migration_done) -> None: ...
270
278
 
271
279
  class BaseMigration(ABC, metaclass=abc.ABCMeta):
272
- index_to_drop: tuple[str, str] | None
280
+ index_to_drop: tuple[str, str, type[DeclarativeBase]] | None
273
281
  required_schema_version: int
282
+ max_initial_schema_version: int
274
283
  migration_version: int
275
284
  migration_id: str
276
- schema_version: Incomplete
285
+ initial_schema_version: Incomplete
286
+ start_schema_version: Incomplete
277
287
  migration_changes: Incomplete
278
- def __init__(self, schema_version: int, migration_changes: dict[str, int]) -> None: ...
288
+ def __init__(self, *, initial_schema_version: int, start_schema_version: int, migration_changes: dict[str, int]) -> None: ...
279
289
  @abstractmethod
280
290
  def migrate_data(self, instance: Recorder) -> bool: ...
281
291
  def _migrate_data(self, instance: Recorder) -> bool: ...
@@ -285,10 +295,12 @@ class BaseMigration(ABC, metaclass=abc.ABCMeta):
285
295
  @abstractmethod
286
296
  def needs_migrate_impl(self, instance: Recorder, session: Session) -> DataMigrationStatus: ...
287
297
  def needs_migrate(self, instance: Recorder, session: Session) -> bool: ...
298
+ def _has_needed_index(self, session: Session) -> bool | None: ...
288
299
 
289
300
  class BaseOffLineMigration(BaseMigration, metaclass=abc.ABCMeta):
290
301
  def migrate_all(self, instance: Recorder, session_maker: Callable[[], Session]) -> None: ...
291
302
  def migrate_data(self, instance: Recorder) -> bool: ...
303
+ def _ensure_index_exists(self, instance: Recorder) -> None: ...
292
304
 
293
305
  class BaseRunTimeMigration(BaseMigration, metaclass=abc.ABCMeta):
294
306
  task = MigrationTask
@@ -302,6 +314,7 @@ class BaseMigrationWithQuery(BaseMigration, metaclass=abc.ABCMeta):
302
314
 
303
315
  class StatesContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
304
316
  required_schema_version = CONTEXT_ID_AS_BINARY_SCHEMA_VERSION
317
+ max_initial_schema_version: Incomplete
305
318
  migration_id: str
306
319
  migration_version: int
307
320
  index_to_drop: Incomplete
@@ -310,30 +323,30 @@ class StatesContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
310
323
 
311
324
  class EventsContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
312
325
  required_schema_version = CONTEXT_ID_AS_BINARY_SCHEMA_VERSION
326
+ max_initial_schema_version: Incomplete
313
327
  migration_id: str
314
328
  migration_version: int
315
329
  index_to_drop: Incomplete
316
330
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
317
331
  def needs_migrate_query(self) -> StatementLambdaElement: ...
318
332
 
319
- class EventTypeIDMigration(BaseMigrationWithQuery, BaseRunTimeMigration):
333
+ class EventTypeIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
320
334
  required_schema_version = EVENT_TYPE_IDS_SCHEMA_VERSION
335
+ max_initial_schema_version: Incomplete
321
336
  migration_id: str
322
- task = CommitBeforeMigrationTask
323
337
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
324
- def migration_done(self, instance: Recorder, session: Session) -> None: ...
325
338
  def needs_migrate_query(self) -> StatementLambdaElement: ...
326
339
 
327
- class EntityIDMigration(BaseMigrationWithQuery, BaseRunTimeMigration):
340
+ class EntityIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
328
341
  required_schema_version = STATES_META_SCHEMA_VERSION
342
+ max_initial_schema_version: Incomplete
329
343
  migration_id: str
330
- task = CommitBeforeMigrationTask
331
344
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
332
- def migration_done(self, instance: Recorder, session: Session) -> None: ...
333
345
  def needs_migrate_query(self) -> StatementLambdaElement: ...
334
346
 
335
347
  class EventIDPostMigration(BaseRunTimeMigration):
336
348
  migration_id: str
349
+ max_initial_schema_version: Incomplete
337
350
  task = MigrationTask
338
351
  migration_version: int
339
352
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
@@ -341,15 +354,15 @@ class EventIDPostMigration(BaseRunTimeMigration):
341
354
  def _legacy_event_id_foreign_key_exists(instance: Recorder) -> bool: ...
342
355
  def needs_migrate_impl(self, instance: Recorder, session: Session) -> DataMigrationStatus: ...
343
356
 
344
- class EntityIDPostMigration(BaseMigrationWithQuery, BaseRunTimeMigration):
357
+ class EntityIDPostMigration(BaseMigrationWithQuery, BaseOffLineMigration):
345
358
  migration_id: str
346
- task = MigrationTask
359
+ max_initial_schema_version: Incomplete
347
360
  index_to_drop: Incomplete
348
361
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
349
362
  def needs_migrate_query(self) -> StatementLambdaElement: ...
350
363
 
351
- NON_LIVE_DATA_MIGRATORS: Incomplete
352
- LIVE_DATA_MIGRATORS: Incomplete
364
+ NON_LIVE_DATA_MIGRATORS: tuple[type[BaseOffLineMigration], ...]
365
+ LIVE_DATA_MIGRATORS: tuple[type[BaseRunTimeMigration], ...]
353
366
 
354
367
  def _mark_migration_done(session: Session, migration: type[BaseMigration]) -> None: ...
355
368
  def rebuild_sqlite_table(session_maker: Callable[[], Session], engine: Engine, table: type[Base]) -> bool: ...
@@ -26,6 +26,9 @@ class LazyState(State):
26
26
  def _last_reported_ts(self) -> float | None: ...
27
27
  def last_reported(self) -> datetime: ...
28
28
  def last_updated(self) -> datetime: ...
29
+ def last_updated_timestamp(self) -> float: ...
30
+ def last_changed_timestamp(self) -> float: ...
31
+ def last_reported_timestamp(self) -> float: ...
29
32
  def as_dict(self) -> dict[str, Any]: ...
30
33
 
31
34
  def row_to_compressed_state(row: Row, attr_cache: dict[str, dict[str, Any]], start_time_ts: float | None, entity_id: str, state: str, last_updated_ts: float | None, no_attributes: bool) -> dict[str, Any]: ...