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
@@ -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
@@ -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: ...
@@ -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: ...
@@ -269,13 +274,15 @@ class DataMigrationStatus:
269
274
  def __init__(self, *, needs_migrate, migration_done) -> None: ...
270
275
 
271
276
  class BaseMigration(ABC, metaclass=abc.ABCMeta):
272
- index_to_drop: tuple[str, str] | None
277
+ index_to_drop: tuple[str, str, type[DeclarativeBase]] | None
273
278
  required_schema_version: int
279
+ max_initial_schema_version: int
274
280
  migration_version: int
275
281
  migration_id: str
276
- schema_version: Incomplete
282
+ initial_schema_version: Incomplete
283
+ start_schema_version: Incomplete
277
284
  migration_changes: Incomplete
278
- def __init__(self, schema_version: int, migration_changes: dict[str, int]) -> None: ...
285
+ def __init__(self, *, initial_schema_version: int, start_schema_version: int, migration_changes: dict[str, int]) -> None: ...
279
286
  @abstractmethod
280
287
  def migrate_data(self, instance: Recorder) -> bool: ...
281
288
  def _migrate_data(self, instance: Recorder) -> bool: ...
@@ -285,10 +292,12 @@ class BaseMigration(ABC, metaclass=abc.ABCMeta):
285
292
  @abstractmethod
286
293
  def needs_migrate_impl(self, instance: Recorder, session: Session) -> DataMigrationStatus: ...
287
294
  def needs_migrate(self, instance: Recorder, session: Session) -> bool: ...
295
+ def _has_needed_index(self, session: Session) -> bool | None: ...
288
296
 
289
297
  class BaseOffLineMigration(BaseMigration, metaclass=abc.ABCMeta):
290
298
  def migrate_all(self, instance: Recorder, session_maker: Callable[[], Session]) -> None: ...
291
299
  def migrate_data(self, instance: Recorder) -> bool: ...
300
+ def _ensure_index_exists(self, instance: Recorder) -> None: ...
292
301
 
293
302
  class BaseRunTimeMigration(BaseMigration, metaclass=abc.ABCMeta):
294
303
  task = MigrationTask
@@ -302,6 +311,7 @@ class BaseMigrationWithQuery(BaseMigration, metaclass=abc.ABCMeta):
302
311
 
303
312
  class StatesContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
304
313
  required_schema_version = CONTEXT_ID_AS_BINARY_SCHEMA_VERSION
314
+ max_initial_schema_version: Incomplete
305
315
  migration_id: str
306
316
  migration_version: int
307
317
  index_to_drop: Incomplete
@@ -310,30 +320,30 @@ class StatesContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
310
320
 
311
321
  class EventsContextIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
312
322
  required_schema_version = CONTEXT_ID_AS_BINARY_SCHEMA_VERSION
323
+ max_initial_schema_version: Incomplete
313
324
  migration_id: str
314
325
  migration_version: int
315
326
  index_to_drop: Incomplete
316
327
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
317
328
  def needs_migrate_query(self) -> StatementLambdaElement: ...
318
329
 
319
- class EventTypeIDMigration(BaseMigrationWithQuery, BaseRunTimeMigration):
330
+ class EventTypeIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
320
331
  required_schema_version = EVENT_TYPE_IDS_SCHEMA_VERSION
332
+ max_initial_schema_version: Incomplete
321
333
  migration_id: str
322
- task = CommitBeforeMigrationTask
323
334
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
324
- def migration_done(self, instance: Recorder, session: Session) -> None: ...
325
335
  def needs_migrate_query(self) -> StatementLambdaElement: ...
326
336
 
327
- class EntityIDMigration(BaseMigrationWithQuery, BaseRunTimeMigration):
337
+ class EntityIDMigration(BaseMigrationWithQuery, BaseOffLineMigration):
328
338
  required_schema_version = STATES_META_SCHEMA_VERSION
339
+ max_initial_schema_version: Incomplete
329
340
  migration_id: str
330
- task = CommitBeforeMigrationTask
331
341
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
332
- def migration_done(self, instance: Recorder, session: Session) -> None: ...
333
342
  def needs_migrate_query(self) -> StatementLambdaElement: ...
334
343
 
335
344
  class EventIDPostMigration(BaseRunTimeMigration):
336
345
  migration_id: str
346
+ max_initial_schema_version: Incomplete
337
347
  task = MigrationTask
338
348
  migration_version: int
339
349
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
@@ -341,15 +351,15 @@ class EventIDPostMigration(BaseRunTimeMigration):
341
351
  def _legacy_event_id_foreign_key_exists(instance: Recorder) -> bool: ...
342
352
  def needs_migrate_impl(self, instance: Recorder, session: Session) -> DataMigrationStatus: ...
343
353
 
344
- class EntityIDPostMigration(BaseMigrationWithQuery, BaseRunTimeMigration):
354
+ class EntityIDPostMigration(BaseMigrationWithQuery, BaseOffLineMigration):
345
355
  migration_id: str
346
- task = MigrationTask
356
+ max_initial_schema_version: Incomplete
347
357
  index_to_drop: Incomplete
348
358
  def migrate_data_impl(self, instance: Recorder) -> DataMigrationStatus: ...
349
359
  def needs_migrate_query(self) -> StatementLambdaElement: ...
350
360
 
351
- NON_LIVE_DATA_MIGRATORS: Incomplete
352
- LIVE_DATA_MIGRATORS: Incomplete
361
+ NON_LIVE_DATA_MIGRATORS: tuple[type[BaseOffLineMigration], ...]
362
+ LIVE_DATA_MIGRATORS: tuple[type[BaseRunTimeMigration], ...]
353
363
 
354
364
  def _mark_migration_done(session: Session, migration: type[BaseMigration]) -> None: ...
355
365
  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]: ...
@@ -10,12 +10,10 @@ def get_shared_event_datas(hashes: list[int]) -> StatementLambdaElement: ...
10
10
  def find_event_type_ids(event_types: Iterable[str]) -> StatementLambdaElement: ...
11
11
  def find_all_states_metadata_ids() -> StatementLambdaElement: ...
12
12
  def find_states_metadata_ids(entity_ids: Iterable[str]) -> StatementLambdaElement: ...
13
- def _state_attrs_exist(attr: int | None) -> Select: ...
14
13
  def attributes_ids_exist_in_states_with_fast_in_distinct(attributes_ids: Iterable[int]) -> StatementLambdaElement: ...
15
- def attributes_ids_exist_in_states(attr1: int, attr2: int | None, attr3: int | None, attr4: int | None, attr5: int | None, attr6: int | None, attr7: int | None, attr8: int | None, attr9: int | None, attr10: int | None, attr11: int | None, attr12: int | None, attr13: int | None, attr14: int | None, attr15: int | None, attr16: int | None, attr17: int | None, attr18: int | None, attr19: int | None, attr20: int | None, attr21: int | None, attr22: int | None, attr23: int | None, attr24: int | None, attr25: int | None, attr26: int | None, attr27: int | None, attr28: int | None, attr29: int | None, attr30: int | None, attr31: int | None, attr32: int | None, attr33: int | None, attr34: int | None, attr35: int | None, attr36: int | None, attr37: int | None, attr38: int | None, attr39: int | None, attr40: int | None, attr41: int | None, attr42: int | None, attr43: int | None, attr44: int | None, attr45: int | None, attr46: int | None, attr47: int | None, attr48: int | None, attr49: int | None, attr50: int | None, attr51: int | None, attr52: int | None, attr53: int | None, attr54: int | None, attr55: int | None, attr56: int | None, attr57: int | None, attr58: int | None, attr59: int | None, attr60: int | None, attr61: int | None, attr62: int | None, attr63: int | None, attr64: int | None, attr65: int | None, attr66: int | None, attr67: int | None, attr68: int | None, attr69: int | None, attr70: int | None, attr71: int | None, attr72: int | None, attr73: int | None, attr74: int | None, attr75: int | None, attr76: int | None, attr77: int | None, attr78: int | None, attr79: int | None, attr80: int | None, attr81: int | None, attr82: int | None, attr83: int | None, attr84: int | None, attr85: int | None, attr86: int | None, attr87: int | None, attr88: int | None, attr89: int | None, attr90: int | None, attr91: int | None, attr92: int | None, attr93: int | None, attr94: int | None, attr95: int | None, attr96: int | None, attr97: int | None, attr98: int | None, attr99: int | None, attr100: int | None) -> StatementLambdaElement: ...
14
+ def attributes_ids_exist_in_states(attributes_ids: Iterable[int]) -> StatementLambdaElement: ...
16
15
  def data_ids_exist_in_events_with_fast_in_distinct(data_ids: Iterable[int]) -> StatementLambdaElement: ...
17
- def _event_data_id_exist(data_id: int | None) -> Select: ...
18
- def data_ids_exist_in_events(id1: int, id2: int | None, id3: int | None, id4: int | None, id5: int | None, id6: int | None, id7: int | None, id8: int | None, id9: int | None, id10: int | None, id11: int | None, id12: int | None, id13: int | None, id14: int | None, id15: int | None, id16: int | None, id17: int | None, id18: int | None, id19: int | None, id20: int | None, id21: int | None, id22: int | None, id23: int | None, id24: int | None, id25: int | None, id26: int | None, id27: int | None, id28: int | None, id29: int | None, id30: int | None, id31: int | None, id32: int | None, id33: int | None, id34: int | None, id35: int | None, id36: int | None, id37: int | None, id38: int | None, id39: int | None, id40: int | None, id41: int | None, id42: int | None, id43: int | None, id44: int | None, id45: int | None, id46: int | None, id47: int | None, id48: int | None, id49: int | None, id50: int | None, id51: int | None, id52: int | None, id53: int | None, id54: int | None, id55: int | None, id56: int | None, id57: int | None, id58: int | None, id59: int | None, id60: int | None, id61: int | None, id62: int | None, id63: int | None, id64: int | None, id65: int | None, id66: int | None, id67: int | None, id68: int | None, id69: int | None, id70: int | None, id71: int | None, id72: int | None, id73: int | None, id74: int | None, id75: int | None, id76: int | None, id77: int | None, id78: int | None, id79: int | None, id80: int | None, id81: int | None, id82: int | None, id83: int | None, id84: int | None, id85: int | None, id86: int | None, id87: int | None, id88: int | None, id89: int | None, id90: int | None, id91: int | None, id92: int | None, id93: int | None, id94: int | None, id95: int | None, id96: int | None, id97: int | None, id98: int | None, id99: int | None, id100: int | None) -> StatementLambdaElement: ...
16
+ def data_ids_exist_in_events(data_ids: Iterable[int]) -> StatementLambdaElement: ...
19
17
  def disconnect_states_rows(state_ids: Iterable[int]) -> StatementLambdaElement: ...
20
18
  def delete_states_rows(state_ids: Iterable[int]) -> StatementLambdaElement: ...
21
19
  def delete_event_data_rows(data_ids: Iterable[int]) -> StatementLambdaElement: ...
@@ -26,6 +24,7 @@ def delete_event_rows(event_ids: Iterable[int]) -> StatementLambdaElement: ...
26
24
  def delete_recorder_runs_rows(purge_before: datetime, current_run_id: int) -> StatementLambdaElement: ...
27
25
  def find_events_to_purge(purge_before: float, max_bind_vars: int) -> StatementLambdaElement: ...
28
26
  def find_states_to_purge(purge_before: float, max_bind_vars: int) -> StatementLambdaElement: ...
27
+ def find_oldest_state() -> StatementLambdaElement: ...
29
28
  def find_short_term_statistics_to_purge(purge_before: datetime, max_bind_vars: int) -> StatementLambdaElement: ...
30
29
  def find_statistics_runs_to_purge(purge_before: datetime, max_bind_vars: int) -> StatementLambdaElement: ...
31
30
  def find_latest_statistics_runs_run_id() -> StatementLambdaElement: ...
@@ -1,7 +1,7 @@
1
1
  import dataclasses
2
2
  from . import Recorder as Recorder
3
3
  from .const import DOMAIN as DOMAIN, EVENT_RECORDER_5MIN_STATISTICS_GENERATED as EVENT_RECORDER_5MIN_STATISTICS_GENERATED, EVENT_RECORDER_HOURLY_STATISTICS_GENERATED as EVENT_RECORDER_HOURLY_STATISTICS_GENERATED, INTEGRATION_PLATFORM_COMPILE_STATISTICS as INTEGRATION_PLATFORM_COMPILE_STATISTICS, INTEGRATION_PLATFORM_LIST_STATISTIC_IDS as INTEGRATION_PLATFORM_LIST_STATISTIC_IDS, INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES as INTEGRATION_PLATFORM_UPDATE_STATISTICS_ISSUES, INTEGRATION_PLATFORM_VALIDATE_STATISTICS as INTEGRATION_PLATFORM_VALIDATE_STATISTICS, SupportedDialect as SupportedDialect
4
- from .db_schema import STATISTICS_TABLES as STATISTICS_TABLES, Statistics as Statistics, StatisticsBase as StatisticsBase, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm
4
+ from .db_schema import STATISTICS_TABLES as STATISTICS_TABLES, Statistics as Statistics, StatisticsBase as StatisticsBase, StatisticsMeta as StatisticsMeta, StatisticsRuns as StatisticsRuns, StatisticsShortTerm as StatisticsShortTerm
5
5
  from .models import StatisticData as StatisticData, StatisticDataTimestamp as StatisticDataTimestamp, StatisticMetaData as StatisticMetaData, StatisticResult as StatisticResult, datetime_to_timestamp_or_none as datetime_to_timestamp_or_none, process_timestamp as process_timestamp
6
6
  from .util import execute as execute, execute_stmt_lambda_element as execute_stmt_lambda_element, filter_unique_constraint_integrity_error as filter_unique_constraint_integrity_error, get_instance as get_instance, retryable_database_job as retryable_database_job, session_scope as session_scope
7
7
  from _typeshed import Incomplete
@@ -87,7 +87,7 @@ def compile_statistics(instance: Recorder, start: datetime, fire_events: bool) -
87
87
  def _get_first_id_stmt(start: datetime) -> StatementLambdaElement: ...
88
88
  def _compile_statistics(instance: Recorder, session: Session, start: datetime, fire_events: bool) -> set[str]: ...
89
89
  def _adjust_sum_statistics(session: Session, table: type[StatisticsBase], metadata_id: int, start_time: datetime, adj: float) -> None: ...
90
- def _insert_statistics(session: Session, table: type[StatisticsBase], metadata_id: int, statistic: StatisticData) -> StatisticsBase | None: ...
90
+ def _insert_statistics(session: Session, table: type[StatisticsBase], metadata_id: int, statistic: StatisticData, now_timestamp: float) -> StatisticsBase | None: ...
91
91
  def _update_statistics(session: Session, table: type[StatisticsBase], stat_id: int, statistic: StatisticData) -> None: ...
92
92
  def get_metadata_with_session(instance: Recorder, session: Session, *, statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None) -> dict[str, tuple[int, StatisticMetaData]]: ...
93
93
  def get_metadata(hass: HomeAssistant, *, statistic_ids: set[str] | None = None, statistic_type: Literal['mean', 'sum'] | None = None, statistic_source: str | None = None) -> dict[str, tuple[int, StatisticMetaData]]: ...
@@ -15,7 +15,6 @@ from typing import Any
15
15
  CACHE_SIZE: int
16
16
 
17
17
  class EventTypeManager(BaseLRUTableManager[EventTypes]):
18
- active: bool
19
18
  _non_existent_event_types: Incomplete
20
19
  def __init__(self, recorder: Recorder) -> None: ...
21
20
  def load(self, events: list[Event], session: Session) -> None: ...
@@ -1,22 +1,12 @@
1
1
  from ..db_schema import RecorderRuns as RecorderRuns
2
- from ..models import process_timestamp as process_timestamp
3
2
  from _typeshed import Incomplete
4
- from dataclasses import dataclass
5
3
  from datetime import datetime
6
4
  from sqlalchemy.orm.session import Session as Session
7
5
 
8
- def _find_recorder_run_for_start_time(run_history: _RecorderRunsHistory, start: datetime) -> RecorderRuns | None: ...
9
-
10
- @dataclass(frozen=True)
11
- class _RecorderRunsHistory:
12
- run_timestamps: list[int]
13
- runs_by_timestamp: dict[int, RecorderRuns]
14
- def __init__(self, run_timestamps, runs_by_timestamp) -> None: ...
15
-
16
6
  class RecorderRunsManager:
17
7
  _recording_start: Incomplete
18
8
  _current_run_info: Incomplete
19
- _run_history: Incomplete
9
+ _first_run: Incomplete
20
10
  def __init__(self) -> None: ...
21
11
  @property
22
12
  def recording_start(self) -> datetime: ...
@@ -26,7 +16,6 @@ class RecorderRunsManager:
26
16
  def current(self) -> RecorderRuns: ...
27
17
  @property
28
18
  def active(self) -> bool: ...
29
- def get(self, start: datetime) -> RecorderRuns | None: ...
30
19
  def start(self, session: Session) -> None: ...
31
20
  def reset(self) -> None: ...
32
21
  def end(self, session: Session) -> None: ...
@@ -1,11 +1,17 @@
1
1
  from ..db_schema import States as States
2
+ from ..queries import find_oldest_state as find_oldest_state
3
+ from ..util import execute_stmt_lambda_element as execute_stmt_lambda_element
2
4
  from _typeshed import Incomplete
5
+ from sqlalchemy.orm.session import Session as Session
3
6
 
4
7
  class StatesManager:
5
8
  _pending: Incomplete
6
9
  _last_committed_id: Incomplete
7
10
  _last_reported: Incomplete
11
+ _oldest_ts: Incomplete
8
12
  def __init__(self) -> None: ...
13
+ @property
14
+ def oldest_ts(self) -> float | None: ...
9
15
  def pop_pending(self, entity_id: str) -> States | None: ...
10
16
  def pop_committed(self, entity_id: str) -> int | None: ...
11
17
  def add_pending(self, entity_id: str, state: States) -> None: ...
@@ -13,5 +19,6 @@ class StatesManager:
13
19
  def get_pending_last_reported_timestamp(self) -> dict[int, float]: ...
14
20
  def post_commit_pending(self) -> None: ...
15
21
  def reset(self) -> None: ...
22
+ def load_from_db(self, session: Session) -> None: ...
16
23
  def evict_purged_state_ids(self, purged_state_ids: set[int]) -> None: ...
17
24
  def evict_purged_entity_ids(self, purged_entity_ids: set[str]) -> None: ...
@@ -4,7 +4,6 @@ from enum import IntFlag
4
4
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
5
  from homeassistant.const import ATTR_COMMAND as ATTR_COMMAND, SERVICE_TOGGLE as SERVICE_TOGGLE, SERVICE_TURN_OFF as SERVICE_TURN_OFF, SERVICE_TURN_ON as SERVICE_TURN_ON, STATE_ON as STATE_ON
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
- from homeassistant.helpers.deprecation import DeprecatedConstantEnum as DeprecatedConstantEnum, 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
8
7
  from homeassistant.helpers.entity import ToggleEntity as ToggleEntity, ToggleEntityDescription as ToggleEntityDescription
9
8
  from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
10
9
  from homeassistant.helpers.typing import ConfigType as ConfigType
@@ -43,9 +42,6 @@ class RemoteEntityFeature(IntFlag):
43
42
  DELETE_COMMAND = 2
44
43
  ACTIVITY = 4
45
44
 
46
- _DEPRECATED_SUPPORT_LEARN_COMMAND: Incomplete
47
- _DEPRECATED_SUPPORT_DELETE_COMMAND: Incomplete
48
- _DEPRECATED_SUPPORT_ACTIVITY: Incomplete
49
45
  REMOTE_SERVICE_ACTIVITY_SCHEMA: Incomplete
50
46
 
51
47
  def is_on(hass: HomeAssistant, entity_id: str) -> bool: ...
@@ -65,8 +61,6 @@ class RemoteEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
65
61
  _attr_current_activity: str | None
66
62
  _attr_supported_features: RemoteEntityFeature
67
63
  def supported_features(self) -> RemoteEntityFeature: ...
68
- @property
69
- def supported_features_compat(self) -> RemoteEntityFeature: ...
70
64
  def current_activity(self) -> str | None: ...
71
65
  def activity_list(self) -> list[str] | None: ...
72
66
  @property
@@ -77,7 +71,3 @@ class RemoteEntity(ToggleEntity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_)
77
71
  async def async_learn_command(self, **kwargs: Any) -> None: ...
78
72
  def delete_command(self, **kwargs: Any) -> None: ...
79
73
  async def async_delete_command(self, **kwargs: Any) -> None: ...
80
-
81
- __getattr__: Incomplete
82
- __dir__: Incomplete
83
- __all__: Incomplete
@@ -7,6 +7,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEnti
7
7
  from homeassistant.helpers.typing import StateType as StateType
8
8
  from renault_api.kamereon.models import KamereonVehicleBatteryStatusData
9
9
 
10
+ PARALLEL_UPDATES: int
11
+
10
12
  @dataclass(frozen=True, kw_only=True)
11
13
  class RenaultBinarySensorEntityDescription(BinarySensorEntityDescription, RenaultDataEntityDescription):
12
14
  on_key: str
@@ -7,6 +7,8 @@ from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
8
8
  from typing import Any
9
9
 
10
+ PARALLEL_UPDATES: int
11
+
10
12
  @dataclass(frozen=True, kw_only=True)
11
13
  class RenaultButtonEntityDescription(ButtonEntityDescription):
12
14
  async_press: Callable[[RenaultButtonEntity], Coroutine[Any, Any, Any]]
@@ -7,10 +7,11 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as Da
7
7
  from renault_api.kamereon.models import KamereonVehicleDataAttributes
8
8
  from typing import TypeVar
9
9
 
10
- T = TypeVar('T', bound=KamereonVehicleDataAttributes | None)
10
+ T = TypeVar('T', bound=KamereonVehicleDataAttributes)
11
11
  _PARALLEL_SEMAPHORE: Incomplete
12
12
 
13
13
  class RenaultDataUpdateCoordinator(DataUpdateCoordinator[T]):
14
+ update_method: Callable[[], Awaitable[T]]
14
15
  access_denied: bool
15
16
  not_supported: bool
16
17
  _has_already_worked: bool
@@ -6,6 +6,8 @@ from homeassistant.core import HomeAssistant as HomeAssistant
6
6
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
7
7
  from renault_api.kamereon.models import KamereonVehicleLocationData
8
8
 
9
+ PARALLEL_UPDATES: int
10
+
9
11
  @dataclass(frozen=True, kw_only=True)
10
12
  class RenaultTrackerEntityDescription(TrackerEntityDescription, RenaultDataEntityDescription):
11
13
  def __init__(self, coordinator, *, 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=...) -> None: ...
@@ -7,6 +7,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEnti
7
7
  from homeassistant.helpers.typing import StateType as StateType
8
8
  from renault_api.kamereon.models import KamereonVehicleBatteryStatusData
9
9
 
10
+ PARALLEL_UPDATES: int
11
+
10
12
  @dataclass(frozen=True, kw_only=True)
11
13
  class RenaultSelectEntityDescription(SelectEntityDescription, RenaultDataEntityDescription):
12
14
  data_key: str