homeassistant-stubs 2025.7.4__py3-none-any.whl → 2025.8.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.

Potentially problematic release.


This version of homeassistant-stubs might be problematic. Click here for more details.

Files changed (490) hide show
  1. homeassistant-stubs/bootstrap.pyi +1 -1
  2. homeassistant-stubs/components/airnow/__init__.pyi +0 -1
  3. homeassistant-stubs/components/airnow/config_flow.pyi +2 -2
  4. homeassistant-stubs/components/airos/__init__.pyi +9 -0
  5. homeassistant-stubs/components/airos/config_flow.pyi +14 -0
  6. homeassistant-stubs/components/airos/const.pyi +5 -0
  7. homeassistant-stubs/components/airos/coordinator.pyi +16 -0
  8. homeassistant-stubs/components/airos/diagnostics.pyi +13 -0
  9. homeassistant-stubs/components/airos/entity.pyi +11 -0
  10. homeassistant-stubs/components/airos/sensor.pyi +29 -0
  11. homeassistant-stubs/components/airq/const.pyi +0 -1
  12. homeassistant-stubs/components/airq/sensor.pyi +2 -2
  13. homeassistant-stubs/components/airthings/__init__.pyi +1 -3
  14. homeassistant-stubs/components/airthings/coordinator.pyi +3 -1
  15. homeassistant-stubs/components/airthings/sensor.pyi +1 -1
  16. homeassistant-stubs/components/alexa_devices/__init__.pyi +6 -0
  17. homeassistant-stubs/components/alexa_devices/config_flow.pyi +10 -0
  18. homeassistant-stubs/components/alexa_devices/coordinator.pyi +4 -3
  19. homeassistant-stubs/components/alexa_devices/services.pyi +24 -0
  20. homeassistant-stubs/components/amberelectric/__init__.pyi +7 -1
  21. homeassistant-stubs/components/amberelectric/const.pyi +8 -1
  22. homeassistant-stubs/components/amberelectric/coordinator.pyi +1 -2
  23. homeassistant-stubs/components/amberelectric/helpers.pyi +6 -0
  24. homeassistant-stubs/components/amberelectric/sensor.pyi +2 -2
  25. homeassistant-stubs/components/amberelectric/services.pyi +15 -0
  26. homeassistant-stubs/components/analytics/__init__.pyi +1 -0
  27. homeassistant-stubs/components/analytics/analytics.pyi +3 -0
  28. homeassistant-stubs/components/analytics/http.pyi +10 -0
  29. homeassistant-stubs/components/analytics_insights/__init__.pyi +0 -1
  30. homeassistant-stubs/components/analytics_insights/config_flow.pyi +2 -2
  31. homeassistant-stubs/components/androidtv_remote/__init__.pyi +2 -6
  32. homeassistant-stubs/components/androidtv_remote/config_flow.pyi +6 -6
  33. homeassistant-stubs/components/androidtv_remote/diagnostics.pyi +1 -1
  34. homeassistant-stubs/components/androidtv_remote/entity.pyi +2 -2
  35. homeassistant-stubs/components/androidtv_remote/helpers.pyi +3 -1
  36. homeassistant-stubs/components/androidtv_remote/media_player.pyi +4 -4
  37. homeassistant-stubs/components/androidtv_remote/remote.pyi +1 -1
  38. homeassistant-stubs/components/assist_pipeline/__init__.pyi +2 -2
  39. homeassistant-stubs/components/assist_pipeline/const.pyi +0 -1
  40. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +2 -5
  41. homeassistant-stubs/components/asuswrt/router.pyi +3 -1
  42. homeassistant-stubs/components/awair/const.pyi +1 -0
  43. homeassistant-stubs/components/awair/sensor.pyi +1 -1
  44. homeassistant-stubs/components/backup/__init__.pyi +6 -2
  45. homeassistant-stubs/components/backup/coordinator.pyi +0 -1
  46. homeassistant-stubs/components/backup/manager.pyi +6 -3
  47. homeassistant-stubs/components/backup/onboarding.pyi +1 -1
  48. homeassistant-stubs/components/backup/services.pyi +7 -0
  49. homeassistant-stubs/components/backup/websocket.pyi +4 -1
  50. homeassistant-stubs/components/blue_current/__init__.pyi +5 -5
  51. homeassistant-stubs/components/blue_current/const.pyi +11 -0
  52. homeassistant-stubs/components/blue_current/switch.pyi +40 -0
  53. homeassistant-stubs/components/bosch_alarm/__init__.pyi +1 -1
  54. homeassistant-stubs/components/bosch_alarm/services.pyi +3 -2
  55. homeassistant-stubs/components/bring/__init__.pyi +5 -0
  56. homeassistant-stubs/components/bring/const.pyi +4 -0
  57. homeassistant-stubs/components/bring/services.pyi +14 -0
  58. homeassistant-stubs/components/cloud/backup.pyi +3 -3
  59. homeassistant-stubs/components/cloud/repairs.pyi +3 -3
  60. homeassistant-stubs/components/cloud/subscription.pyi +2 -1
  61. homeassistant-stubs/components/cloud/tts.pyi +2 -1
  62. homeassistant-stubs/components/command_line/sensor.pyi +0 -2
  63. homeassistant-stubs/components/demo/vacuum.pyi +0 -3
  64. homeassistant-stubs/components/derivative/__init__.pyi +5 -1
  65. homeassistant-stubs/components/derivative/config_flow.pyi +2 -0
  66. homeassistant-stubs/components/derivative/sensor.pyi +7 -4
  67. homeassistant-stubs/components/devolo_home_control/config_flow.pyi +3 -7
  68. homeassistant-stubs/components/devolo_home_control/entity.pyi +0 -1
  69. homeassistant-stubs/components/devolo_home_network/coordinator.pyi +2 -2
  70. homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +2 -2
  71. homeassistant-stubs/components/devolo_home_network/entity.pyi +1 -1
  72. homeassistant-stubs/components/devolo_home_network/sensor.pyi +1 -1
  73. homeassistant-stubs/components/discovergy/__init__.pyi +1 -0
  74. homeassistant-stubs/components/discovergy/coordinator.pyi +1 -0
  75. homeassistant-stubs/components/dnsip/__init__.pyi +0 -1
  76. homeassistant-stubs/components/dnsip/config_flow.pyi +2 -2
  77. homeassistant-stubs/components/downloader/services.pyi +1 -0
  78. homeassistant-stubs/components/ecovacs/binary_sensor.pyi +13 -3
  79. homeassistant-stubs/components/ecovacs/sensor.pyi +13 -0
  80. homeassistant-stubs/components/ecovacs/vacuum.pyi +1 -7
  81. homeassistant-stubs/components/eheimdigital/config_flow.pyi +2 -1
  82. homeassistant-stubs/components/elevenlabs/config_flow.pyi +1 -1
  83. homeassistant-stubs/components/elevenlabs/const.pyi +0 -2
  84. homeassistant-stubs/components/elevenlabs/tts.pyi +2 -3
  85. homeassistant-stubs/components/enphase_envoy/__init__.pyi +0 -2
  86. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +2 -2
  87. homeassistant-stubs/components/esphome/config_flow.pyi +2 -0
  88. homeassistant-stubs/components/esphome/encryption_key_storage.pyi +29 -0
  89. homeassistant-stubs/components/esphome/entity.pyi +3 -1
  90. homeassistant-stubs/components/esphome/entry_data.pyi +14 -6
  91. homeassistant-stubs/components/esphome/manager.pyi +3 -1
  92. homeassistant-stubs/components/feedreader/__init__.pyi +0 -1
  93. homeassistant-stubs/components/feedreader/config_flow.pyi +3 -3
  94. homeassistant-stubs/components/forecast_solar/__init__.pyi +0 -1
  95. homeassistant-stubs/components/forecast_solar/config_flow.pyi +2 -2
  96. homeassistant-stubs/components/fritz/__init__.pyi +0 -1
  97. homeassistant-stubs/components/fritz/config_flow.pyi +2 -2
  98. homeassistant-stubs/components/fritzbox_callmonitor/__init__.pyi +0 -1
  99. homeassistant-stubs/components/fritzbox_callmonitor/config_flow.pyi +2 -2
  100. homeassistant-stubs/components/frontend/__init__.pyi +1 -0
  101. homeassistant-stubs/components/generic_hygrostat/__init__.pyi +3 -1
  102. homeassistant-stubs/components/generic_hygrostat/config_flow.pyi +1 -0
  103. homeassistant-stubs/components/generic_hygrostat/humidifier.pyi +3 -3
  104. homeassistant-stubs/components/generic_thermostat/__init__.pyi +5 -1
  105. homeassistant-stubs/components/generic_thermostat/climate.pyi +3 -3
  106. homeassistant-stubs/components/generic_thermostat/config_flow.pyi +1 -0
  107. homeassistant-stubs/components/geo_location/trigger.pyi +0 -1
  108. homeassistant-stubs/components/gios/const.pyi +2 -0
  109. homeassistant-stubs/components/gios/sensor.pyi +1 -1
  110. homeassistant-stubs/components/google_assistant_sdk/application_credentials.pyi +1 -0
  111. homeassistant-stubs/components/google_cloud/const.pyi +1 -0
  112. homeassistant-stubs/components/google_cloud/stt.pyi +3 -2
  113. homeassistant-stubs/components/guardian/__init__.pyi +1 -1
  114. homeassistant-stubs/components/guardian/services.pyi +2 -1
  115. homeassistant-stubs/components/habitica/button.pyi +3 -4
  116. homeassistant-stubs/components/habitica/coordinator.pyi +2 -3
  117. homeassistant-stubs/components/habitica/entity.pyi +1 -1
  118. homeassistant-stubs/components/habitica/sensor.pyi +3 -18
  119. homeassistant-stubs/components/habitica/switch.pyi +4 -3
  120. homeassistant-stubs/components/habitica/util.pyi +2 -1
  121. homeassistant-stubs/components/heos/__init__.pyi +1 -1
  122. homeassistant-stubs/components/heos/config_flow.pyi +3 -0
  123. homeassistant-stubs/components/heos/services.pyi +3 -2
  124. homeassistant-stubs/components/here_travel_time/__init__.pyi +3 -1
  125. homeassistant-stubs/components/here_travel_time/config_flow.pyi +3 -2
  126. homeassistant-stubs/components/here_travel_time/const.pyi +1 -0
  127. homeassistant-stubs/components/here_travel_time/coordinator.pyi +1 -1
  128. homeassistant-stubs/components/here_travel_time/model.pyi +2 -1
  129. homeassistant-stubs/components/history_stats/__init__.pyi +5 -1
  130. homeassistant-stubs/components/history_stats/config_flow.pyi +14 -0
  131. homeassistant-stubs/components/history_stats/coordinator.pyi +3 -1
  132. homeassistant-stubs/components/history_stats/data.pyi +2 -1
  133. homeassistant-stubs/components/history_stats/helpers.pyi +1 -1
  134. homeassistant-stubs/components/history_stats/sensor.pyi +7 -4
  135. homeassistant-stubs/components/holiday/__init__.pyi +0 -1
  136. homeassistant-stubs/components/holiday/config_flow.pyi +2 -2
  137. homeassistant-stubs/components/home_connect/__init__.pyi +1 -1
  138. homeassistant-stubs/components/home_connect/services.pyi +3 -2
  139. homeassistant-stubs/components/homeassistant/__init__.pyi +2 -1
  140. homeassistant-stubs/components/homeassistant/triggers/time.pyi +2 -1
  141. homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +2 -1
  142. homeassistant-stubs/components/homee/__init__.pyi +1 -1
  143. homeassistant-stubs/components/homee/config_flow.pyi +5 -0
  144. homeassistant-stubs/components/homekit/__init__.pyi +2 -1
  145. homeassistant-stubs/components/http/__init__.pyi +1 -2
  146. homeassistant-stubs/components/huawei_lte/__init__.pyi +1 -2
  147. homeassistant-stubs/components/huawei_lte/config_flow.pyi +5 -4
  148. homeassistant-stubs/components/huawei_lte/const.pyi +1 -1
  149. homeassistant-stubs/components/huawei_lte/diagnostics.pyi +18 -0
  150. homeassistant-stubs/components/husqvarna_automower/button.pyi +2 -2
  151. homeassistant-stubs/components/husqvarna_automower/calendar.pyi +3 -0
  152. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +15 -13
  153. homeassistant-stubs/components/husqvarna_automower/entity.pyi +2 -6
  154. homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +2 -2
  155. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +5 -0
  156. homeassistant-stubs/components/hydrawise/binary_sensor.pyi +1 -1
  157. homeassistant-stubs/components/hydrawise/const.pyi +1 -0
  158. homeassistant-stubs/components/hydrawise/coordinator.pyi +9 -2
  159. homeassistant-stubs/components/hydrawise/entity.pyi +1 -1
  160. homeassistant-stubs/components/hydrawise/sensor.pyi +1 -1
  161. homeassistant-stubs/components/hydrawise/switch.pyi +1 -1
  162. homeassistant-stubs/components/hydrawise/valve.pyi +1 -1
  163. homeassistant-stubs/components/hyperion/__init__.pyi +0 -1
  164. homeassistant-stubs/components/hyperion/config_flow.pyi +2 -2
  165. homeassistant-stubs/components/imgw_pib/sensor.pyi +7 -1
  166. homeassistant-stubs/components/immich/__init__.pyi +6 -0
  167. homeassistant-stubs/components/immich/media_source.pyi +1 -0
  168. homeassistant-stubs/components/immich/services.pyi +18 -0
  169. homeassistant-stubs/components/input_text/__init__.pyi +1 -1
  170. homeassistant-stubs/components/integration/__init__.pyi +5 -1
  171. homeassistant-stubs/components/integration/config_flow.pyi +1 -0
  172. homeassistant-stubs/components/integration/sensor.pyi +5 -6
  173. homeassistant-stubs/components/iron_os/__init__.pyi +0 -3
  174. homeassistant-stubs/components/iron_os/const.pyi +4 -0
  175. homeassistant-stubs/components/iron_os/coordinator.pyi +1 -1
  176. homeassistant-stubs/components/iron_os/number.pyi +20 -4
  177. homeassistant-stubs/components/iron_os/switch.pyi +2 -0
  178. homeassistant-stubs/components/isy994/__init__.pyi +0 -1
  179. homeassistant-stubs/components/isy994/config_flow.pyi +3 -3
  180. homeassistant-stubs/components/jellyfin/browse_media.pyi +2 -1
  181. homeassistant-stubs/components/jellyfin/media_player.pyi +5 -2
  182. homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +5 -15
  183. homeassistant-stubs/components/jewish_calendar/config_flow.pyi +2 -2
  184. homeassistant-stubs/components/jewish_calendar/entity.pyi +19 -5
  185. homeassistant-stubs/components/jewish_calendar/sensor.pyi +11 -7
  186. homeassistant-stubs/components/knx/__init__.pyi +6 -40
  187. homeassistant-stubs/components/knx/binary_sensor.pyi +3 -2
  188. homeassistant-stubs/components/knx/button.pyi +1 -1
  189. homeassistant-stubs/components/knx/climate.pyi +1 -1
  190. homeassistant-stubs/components/knx/config_flow.pyi +14 -21
  191. homeassistant-stubs/components/knx/const.pyi +1 -1
  192. homeassistant-stubs/components/knx/cover.pyi +3 -2
  193. homeassistant-stubs/components/knx/date.pyi +1 -1
  194. homeassistant-stubs/components/knx/datetime.pyi +1 -1
  195. homeassistant-stubs/components/knx/entity.pyi +1 -1
  196. homeassistant-stubs/components/knx/fan.pyi +1 -1
  197. homeassistant-stubs/components/knx/knx_module.pyi +43 -0
  198. homeassistant-stubs/components/knx/light.pyi +3 -2
  199. homeassistant-stubs/components/knx/notify.pyi +1 -1
  200. homeassistant-stubs/components/knx/number.pyi +1 -1
  201. homeassistant-stubs/components/knx/scene.pyi +1 -1
  202. homeassistant-stubs/components/knx/select.pyi +1 -1
  203. homeassistant-stubs/components/knx/sensor.pyi +1 -1
  204. homeassistant-stubs/components/knx/services.pyi +2 -2
  205. homeassistant-stubs/components/knx/storage/config_store.pyi +4 -0
  206. homeassistant-stubs/components/knx/storage/const.pyi +8 -7
  207. homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +3 -10
  208. homeassistant-stubs/components/knx/storage/knx_selector.pyi +4 -0
  209. homeassistant-stubs/components/knx/storage/migration.pyi +5 -0
  210. homeassistant-stubs/components/knx/storage/util.pyi +16 -0
  211. homeassistant-stubs/components/knx/switch.pyi +3 -2
  212. homeassistant-stubs/components/knx/text.pyi +1 -1
  213. homeassistant-stubs/components/knx/time.pyi +1 -1
  214. homeassistant-stubs/components/knx/weather.pyi +1 -1
  215. homeassistant-stubs/components/knx/websocket.pyi +1 -1
  216. homeassistant-stubs/components/lamarzocco/config_flow.pyi +2 -2
  217. homeassistant-stubs/components/lcn/binary_sensor.pyi +1 -20
  218. homeassistant-stubs/components/lcn/helpers.pyi +1 -0
  219. homeassistant-stubs/components/lcn/light.pyi +2 -1
  220. homeassistant-stubs/components/letpot/coordinator.pyi +3 -4
  221. homeassistant-stubs/components/letpot/switch.pyi +1 -1
  222. homeassistant-stubs/components/letpot/time.pyi +1 -1
  223. homeassistant-stubs/components/lifx/const.pyi +1 -0
  224. homeassistant-stubs/components/lifx/coordinator.pyi +5 -1
  225. homeassistant-stubs/components/lifx/manager.pyi +1 -1
  226. homeassistant-stubs/components/linkplay/select.pyi +35 -0
  227. homeassistant-stubs/components/litterrobot/sensor.pyi +3 -0
  228. homeassistant-stubs/components/matrix/__init__.pyi +1 -1
  229. homeassistant-stubs/components/matrix/services.pyi +3 -2
  230. homeassistant-stubs/components/matter/entity.pyi +2 -2
  231. homeassistant-stubs/components/matter/number.pyi +29 -1
  232. homeassistant-stubs/components/matter/select.pyi +2 -2
  233. homeassistant-stubs/components/matter/vacuum.pyi +2 -1
  234. homeassistant-stubs/components/mcp_server/server.pyi +1 -1
  235. homeassistant-stubs/components/mealie/const.pyi +2 -0
  236. homeassistant-stubs/components/mealie/services.pyi +4 -1
  237. homeassistant-stubs/components/media_player/const.pyi +2 -2
  238. homeassistant-stubs/components/media_source/const.pyi +3 -0
  239. homeassistant-stubs/components/media_source/local_source.pyi +1 -1
  240. homeassistant-stubs/components/media_source/models.pyi +6 -2
  241. homeassistant-stubs/components/met_eireann/__init__.pyi +2 -17
  242. homeassistant-stubs/components/met_eireann/coordinator.pyi +28 -0
  243. homeassistant-stubs/components/met_eireann/weather.pyi +1 -3
  244. homeassistant-stubs/components/miele/__init__.pyi +5 -0
  245. homeassistant-stubs/components/miele/coordinator.pyi +1 -1
  246. homeassistant-stubs/components/miele/entity.pyi +2 -0
  247. homeassistant-stubs/components/miele/sensor.pyi +7 -6
  248. homeassistant-stubs/components/miele/services.pyi +24 -0
  249. homeassistant-stubs/components/miele/vacuum.pyi +0 -2
  250. homeassistant-stubs/components/modem_callerid/sensor.pyi +2 -2
  251. homeassistant-stubs/components/mold_indicator/__init__.pyi +8 -1
  252. homeassistant-stubs/components/mold_indicator/config_flow.pyi +2 -0
  253. homeassistant-stubs/components/mold_indicator/sensor.pyi +2 -2
  254. homeassistant-stubs/components/mqtt/climate.pyi +1 -37
  255. homeassistant-stubs/components/mqtt/config_flow.pyi +38 -6
  256. homeassistant-stubs/components/mqtt/const.pyi +33 -2
  257. homeassistant-stubs/components/mqtt/repairs.pyi +15 -0
  258. homeassistant-stubs/components/mqtt/vacuum.pyi +4 -3
  259. homeassistant-stubs/components/nasweb/const.pyi +1 -0
  260. homeassistant-stubs/components/nasweb/coordinator.pyi +3 -1
  261. homeassistant-stubs/components/nasweb/sensor.pyi +54 -0
  262. homeassistant-stubs/components/netatmo/climate.pyi +1 -1
  263. homeassistant-stubs/components/netatmo/const.pyi +1 -0
  264. homeassistant-stubs/components/nextdns/__init__.pyi +2 -3
  265. homeassistant-stubs/components/nextdns/coordinator.pyi +10 -2
  266. homeassistant-stubs/components/nordpool/const.pyi +1 -0
  267. homeassistant-stubs/components/nordpool/services.pyi +5 -1
  268. homeassistant-stubs/components/number/const.pyi +2 -1
  269. homeassistant-stubs/components/nut/__init__.pyi +0 -1
  270. homeassistant-stubs/components/onewire/__init__.pyi +0 -1
  271. homeassistant-stubs/components/onewire/config_flow.pyi +2 -2
  272. homeassistant-stubs/components/onkyo/__init__.pyi +2 -3
  273. homeassistant-stubs/components/onkyo/config_flow.pyi +9 -6
  274. homeassistant-stubs/components/onkyo/const.pyi +7 -65
  275. homeassistant-stubs/components/onkyo/media_player.pyi +16 -44
  276. homeassistant-stubs/components/onkyo/receiver.pyi +24 -25
  277. homeassistant-stubs/components/onkyo/services.pyi +3 -3
  278. homeassistant-stubs/components/onkyo/util.pyi +3 -0
  279. homeassistant-stubs/components/open_router/__init__.pyi +15 -0
  280. homeassistant-stubs/components/open_router/ai_task.pyi +17 -0
  281. homeassistant-stubs/components/open_router/config_flow.pyi +30 -0
  282. homeassistant-stubs/components/open_router/const.pyi +8 -0
  283. homeassistant-stubs/components/open_router/conversation.pyi +20 -0
  284. homeassistant-stubs/components/open_router/entity.pyi +33 -0
  285. homeassistant-stubs/components/openai_conversation/__init__.pyi +4 -2
  286. homeassistant-stubs/components/openai_conversation/ai_task.pyi +16 -0
  287. homeassistant-stubs/components/openai_conversation/config_flow.pyi +2 -3
  288. homeassistant-stubs/components/openai_conversation/const.pyi +9 -1
  289. homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -22
  290. homeassistant-stubs/components/openai_conversation/entity.pyi +36 -0
  291. homeassistant-stubs/components/opower/__init__.pyi +8 -0
  292. homeassistant-stubs/components/opower/config_flow.pyi +30 -0
  293. homeassistant-stubs/components/opower/const.pyi +4 -0
  294. homeassistant-stubs/components/opower/coordinator.pyi +24 -0
  295. homeassistant-stubs/components/opower/sensor.pyi +35 -0
  296. homeassistant-stubs/components/pegel_online/__init__.pyi +1 -1
  297. homeassistant-stubs/components/pegel_online/sensor.pyi +2 -0
  298. homeassistant-stubs/components/pi_hole/__init__.pyi +6 -2
  299. homeassistant-stubs/components/pi_hole/config_flow.pyi +1 -2
  300. homeassistant-stubs/components/pi_hole/const.pyi +1 -0
  301. homeassistant-stubs/components/pi_hole/sensor.pyi +5 -0
  302. homeassistant-stubs/components/pi_hole/update.pyi +3 -3
  303. homeassistant-stubs/components/ping/__init__.pyi +0 -1
  304. homeassistant-stubs/components/ping/config_flow.pyi +3 -3
  305. homeassistant-stubs/components/plugwise/select.pyi +1 -1
  306. homeassistant-stubs/components/proximity/__init__.pyi +0 -1
  307. homeassistant-stubs/components/proximity/config_flow.pyi +3 -3
  308. homeassistant-stubs/components/purpleair/__init__.pyi +0 -1
  309. homeassistant-stubs/components/purpleair/config_flow.pyi +2 -2
  310. homeassistant-stubs/components/pyload/config_flow.pyi +4 -0
  311. homeassistant-stubs/components/recorder/pool.pyi +2 -1
  312. homeassistant-stubs/components/renault/__init__.pyi +1 -1
  313. homeassistant-stubs/components/renault/services.pyi +3 -2
  314. homeassistant-stubs/components/reolink/__init__.pyi +0 -1
  315. homeassistant-stubs/components/reolink/config_flow.pyi +2 -2
  316. homeassistant-stubs/components/reolink/number.pyi +1 -1
  317. homeassistant-stubs/components/reolink/sensor.pyi +1 -1
  318. homeassistant-stubs/components/rest/sensor.pyi +1 -3
  319. homeassistant-stubs/components/roborock/__init__.pyi +0 -1
  320. homeassistant-stubs/components/roborock/config_flow.pyi +2 -2
  321. homeassistant-stubs/components/roborock/vacuum.pyi +0 -2
  322. homeassistant-stubs/components/roku/__init__.pyi +0 -1
  323. homeassistant-stubs/components/roku/config_flow.pyi +2 -2
  324. homeassistant-stubs/components/russound_rio/const.pyi +2 -0
  325. homeassistant-stubs/components/russound_rio/media_player.pyi +6 -0
  326. homeassistant-stubs/components/scrape/sensor.pyi +1 -2
  327. homeassistant-stubs/components/sensor/const.pyi +2 -1
  328. homeassistant-stubs/components/sensor/device_condition.pyi +1 -0
  329. homeassistant-stubs/components/sensor/device_trigger.pyi +1 -0
  330. homeassistant-stubs/components/shelly/button.pyi +2 -2
  331. homeassistant-stubs/components/shelly/climate.pyi +2 -2
  332. homeassistant-stubs/components/shelly/coordinator.pyi +5 -1
  333. homeassistant-stubs/components/shelly/entity.pyi +3 -0
  334. homeassistant-stubs/components/shelly/event.pyi +2 -2
  335. homeassistant-stubs/components/shelly/sensor.pyi +2 -2
  336. homeassistant-stubs/components/shelly/utils.pyi +2 -2
  337. homeassistant-stubs/components/sleepiq/const.pyi +2 -0
  338. homeassistant-stubs/components/sleepiq/number.pyi +7 -3
  339. homeassistant-stubs/components/sleepiq/select.pyi +15 -2
  340. homeassistant-stubs/components/smhi/coordinator.pyi +3 -0
  341. homeassistant-stubs/components/smhi/entity.pyi +3 -1
  342. homeassistant-stubs/components/smhi/sensor.pyi +30 -0
  343. homeassistant-stubs/components/smhi/weather.pyi +4 -2
  344. homeassistant-stubs/components/sonarr/__init__.pyi +0 -1
  345. homeassistant-stubs/components/sonarr/config_flow.pyi +2 -2
  346. homeassistant-stubs/components/speedtestdotnet/__init__.pyi +0 -1
  347. homeassistant-stubs/components/speedtestdotnet/config_flow.pyi +2 -2
  348. homeassistant-stubs/components/sql/__init__.pyi +0 -1
  349. homeassistant-stubs/components/sql/config_flow.pyi +2 -2
  350. homeassistant-stubs/components/squeezebox/__init__.pyi +3 -2
  351. homeassistant-stubs/components/squeezebox/browse_media.pyi +3 -1
  352. homeassistant-stubs/components/squeezebox/const.pyi +2 -3
  353. homeassistant-stubs/components/squeezebox/coordinator.pyi +2 -2
  354. homeassistant-stubs/components/squeezebox/media_player.pyi +3 -2
  355. homeassistant-stubs/components/statistics/__init__.pyi +3 -1
  356. homeassistant-stubs/components/statistics/config_flow.pyi +1 -0
  357. homeassistant-stubs/components/statistics/sensor.pyi +5 -5
  358. homeassistant-stubs/components/stookwijzer/__init__.pyi +4 -0
  359. homeassistant-stubs/components/stookwijzer/const.pyi +2 -0
  360. homeassistant-stubs/components/stookwijzer/services.pyi +17 -0
  361. homeassistant-stubs/components/switch_as_x/__init__.pyi +2 -2
  362. homeassistant-stubs/components/switch_as_x/entity.pyi +1 -3
  363. homeassistant-stubs/components/switchbot_cloud/__init__.pyi +2 -0
  364. homeassistant-stubs/components/switchbot_cloud/const.pyi +1 -0
  365. homeassistant-stubs/components/switchbot_cloud/fan.pyi +26 -0
  366. homeassistant-stubs/components/switchbot_cloud/light.pyi +40 -0
  367. homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +17 -1
  368. homeassistant-stubs/components/synology_dsm/__init__.pyi +0 -1
  369. homeassistant-stubs/components/synology_dsm/config_flow.pyi +2 -2
  370. homeassistant-stubs/components/tankerkoenig/__init__.pyi +10 -0
  371. homeassistant-stubs/components/tankerkoenig/binary_sensor.pyi +23 -0
  372. homeassistant-stubs/components/tankerkoenig/config_flow.pyi +33 -0
  373. homeassistant-stubs/components/tankerkoenig/const.pyi +13 -0
  374. homeassistant-stubs/components/tankerkoenig/coordinator.pyi +22 -0
  375. homeassistant-stubs/components/tankerkoenig/diagnostics.pyi +10 -0
  376. homeassistant-stubs/components/tankerkoenig/entity.pyi +11 -0
  377. homeassistant-stubs/components/tankerkoenig/sensor.pyi +28 -0
  378. homeassistant-stubs/components/threshold/__init__.pyi +5 -1
  379. homeassistant-stubs/components/threshold/binary_sensor.pyi +3 -4
  380. homeassistant-stubs/components/threshold/config_flow.pyi +1 -0
  381. homeassistant-stubs/components/time_date/config_flow.pyi +1 -2
  382. homeassistant-stubs/components/trafikverket_train/__init__.pyi +0 -1
  383. homeassistant-stubs/components/trafikverket_train/config_flow.pyi +2 -2
  384. homeassistant-stubs/components/trend/__init__.pyi +3 -1
  385. homeassistant-stubs/components/trend/binary_sensor.pyi +3 -4
  386. homeassistant-stubs/components/trend/config_flow.pyi +1 -0
  387. homeassistant-stubs/components/tts/entity.pyi +0 -2
  388. homeassistant-stubs/components/unifi/hub/entity_loader.pyi +3 -2
  389. homeassistant-stubs/components/unifiprotect/__init__.pyi +5 -5
  390. homeassistant-stubs/components/unifiprotect/config_flow.pyi +5 -5
  391. homeassistant-stubs/components/unifiprotect/repairs.pyi +0 -6
  392. homeassistant-stubs/components/unifiprotect/services.pyi +1 -1
  393. homeassistant-stubs/components/uptime_kuma/__init__.pyi +14 -0
  394. homeassistant-stubs/components/uptime_kuma/config_flow.pyi +26 -0
  395. homeassistant-stubs/components/uptime_kuma/const.pyi +7 -0
  396. homeassistant-stubs/components/uptime_kuma/coordinator.pyi +30 -0
  397. homeassistant-stubs/components/uptime_kuma/diagnostics.pyi +9 -0
  398. homeassistant-stubs/components/uptime_kuma/sensor.pyi +46 -0
  399. homeassistant-stubs/components/uptime_kuma/update.pyi +39 -0
  400. homeassistant-stubs/components/vacuum/__init__.pyi +8 -0
  401. homeassistant-stubs/components/velbus/__init__.pyi +1 -1
  402. homeassistant-stubs/components/velbus/const.pyi +0 -1
  403. homeassistant-stubs/components/velbus/services.pyi +4 -4
  404. homeassistant-stubs/components/vodafone_station/__init__.pyi +0 -1
  405. homeassistant-stubs/components/vodafone_station/config_flow.pyi +2 -2
  406. homeassistant-stubs/components/volvo/__init__.pyi +15 -0
  407. homeassistant-stubs/components/volvo/api.pyi +14 -0
  408. homeassistant-stubs/components/volvo/application_credentials.pyi +9 -0
  409. homeassistant-stubs/components/volvo/config_flow.pyi +36 -0
  410. homeassistant-stubs/components/volvo/const.pyi +8 -0
  411. homeassistant-stubs/components/volvo/coordinator.pyi +46 -0
  412. homeassistant-stubs/components/volvo/entity.pyi +33 -0
  413. homeassistant-stubs/components/volvo/sensor.pyi +35 -0
  414. homeassistant-stubs/components/wallbox/__init__.pyi +4 -5
  415. homeassistant-stubs/components/wallbox/coordinator.pyi +8 -2
  416. homeassistant-stubs/components/wallbox/lock.pyi +5 -4
  417. homeassistant-stubs/components/wallbox/number.pyi +6 -5
  418. homeassistant-stubs/components/wallbox/select.pyi +4 -3
  419. homeassistant-stubs/components/wallbox/sensor.pyi +5 -4
  420. homeassistant-stubs/components/wallbox/switch.pyi +5 -4
  421. homeassistant-stubs/components/waqi/__init__.pyi +3 -5
  422. homeassistant-stubs/components/waqi/coordinator.pyi +3 -2
  423. homeassistant-stubs/components/waqi/sensor.pyi +2 -13
  424. homeassistant-stubs/components/webostv/__init__.pyi +0 -1
  425. homeassistant-stubs/components/webostv/config_flow.pyi +3 -3
  426. homeassistant-stubs/components/websocket_api/commands.pyi +4 -0
  427. homeassistant-stubs/components/wiz/fan.pyi +34 -0
  428. homeassistant-stubs/components/wled/__init__.pyi +0 -1
  429. homeassistant-stubs/components/wled/config_flow.pyi +2 -2
  430. homeassistant-stubs/components/workday/__init__.pyi +0 -1
  431. homeassistant-stubs/components/workday/config_flow.pyi +2 -2
  432. homeassistant-stubs/components/yale_smart_alarm/__init__.pyi +0 -1
  433. homeassistant-stubs/components/yale_smart_alarm/config_flow.pyi +2 -2
  434. homeassistant-stubs/components/yalexs_ble/lock.pyi +14 -2
  435. homeassistant-stubs/components/zone/condition.pyi +22 -0
  436. homeassistant-stubs/components/zone/trigger.pyi +2 -1
  437. homeassistant-stubs/components/zwave_js/__init__.pyi +12 -10
  438. homeassistant-stubs/components/zwave_js/api.pyi +36 -35
  439. homeassistant-stubs/components/zwave_js/binary_sensor.pyi +7 -7
  440. homeassistant-stubs/components/zwave_js/button.pyi +5 -5
  441. homeassistant-stubs/components/zwave_js/climate.pyi +5 -5
  442. homeassistant-stubs/components/zwave_js/config_flow.pyi +6 -4
  443. homeassistant-stubs/components/zwave_js/const.pyi +0 -3
  444. homeassistant-stubs/components/zwave_js/cover.pyi +7 -7
  445. homeassistant-stubs/components/zwave_js/device_automation_helpers.pyi +1 -1
  446. homeassistant-stubs/components/zwave_js/diagnostics.pyi +5 -5
  447. homeassistant-stubs/components/zwave_js/event.pyi +4 -4
  448. homeassistant-stubs/components/zwave_js/fan.pyi +6 -6
  449. homeassistant-stubs/components/zwave_js/helpers.pyi +10 -6
  450. homeassistant-stubs/components/zwave_js/humidifier.pyi +4 -4
  451. homeassistant-stubs/components/zwave_js/light.pyi +15 -5
  452. homeassistant-stubs/components/zwave_js/lock.pyi +3 -3
  453. homeassistant-stubs/components/zwave_js/models.pyi +12 -0
  454. homeassistant-stubs/components/zwave_js/number.pyi +6 -6
  455. homeassistant-stubs/components/zwave_js/select.pyi +8 -8
  456. homeassistant-stubs/components/zwave_js/sensor.pyi +10 -10
  457. homeassistant-stubs/components/zwave_js/siren.pyi +4 -4
  458. homeassistant-stubs/components/zwave_js/switch.pyi +7 -7
  459. homeassistant-stubs/components/zwave_js/triggers/event.pyi +1 -2
  460. homeassistant-stubs/components/zwave_js/triggers/trigger_helpers.pyi +1 -1
  461. homeassistant-stubs/components/zwave_js/update.pyi +28 -18
  462. homeassistant-stubs/config.pyi +0 -2
  463. homeassistant-stubs/config_entries.pyi +3 -0
  464. homeassistant-stubs/const.pyi +2 -0
  465. homeassistant-stubs/core.pyi +12 -8
  466. homeassistant-stubs/helpers/condition.pyi +25 -6
  467. homeassistant-stubs/helpers/config_validation.pyi +0 -2
  468. homeassistant-stubs/helpers/device.pyi +2 -0
  469. homeassistant-stubs/helpers/device_registry.pyi +16 -8
  470. homeassistant-stubs/helpers/entity.pyi +3 -1
  471. homeassistant-stubs/helpers/entity_platform.pyi +30 -9
  472. homeassistant-stubs/helpers/frame.pyi +1 -1
  473. homeassistant-stubs/helpers/helper_integration.pyi +2 -1
  474. homeassistant-stubs/helpers/llm.pyi +5 -1
  475. homeassistant-stubs/helpers/schema_config_entry_flow.pyi +1 -0
  476. homeassistant-stubs/helpers/selector.pyi +42 -37
  477. homeassistant-stubs/helpers/service.pyi +9 -26
  478. homeassistant-stubs/helpers/target.pyi +59 -0
  479. homeassistant-stubs/helpers/trigger.pyi +3 -1
  480. homeassistant-stubs/helpers/trigger_template_entity.pyi +5 -1
  481. homeassistant-stubs/loader.pyi +2 -9
  482. homeassistant-stubs/runner.pyi +1 -0
  483. homeassistant-stubs/util/resource.pyi +7 -0
  484. homeassistant-stubs/util/unit_conversion.pyi +1 -1
  485. {homeassistant_stubs-2025.7.4.dist-info → homeassistant_stubs-2025.8.0.dist-info}/METADATA +2 -2
  486. {homeassistant_stubs-2025.7.4.dist-info → homeassistant_stubs-2025.8.0.dist-info}/RECORD +488 -419
  487. homeassistant-stubs/components/backup/basic_websocket.pyi +0 -12
  488. homeassistant-stubs/helpers/backup.pyi +0 -24
  489. {homeassistant_stubs-2025.7.4.dist-info → homeassistant_stubs-2025.8.0.dist-info}/WHEEL +0 -0
  490. {homeassistant_stubs-2025.7.4.dist-info → homeassistant_stubs-2025.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,20 @@
1
+ from . import OpenRouterConfigEntry as OpenRouterConfigEntry
2
+ from .const import DOMAIN as DOMAIN
3
+ from .entity import OpenRouterEntity as OpenRouterEntity
4
+ from _typeshed import Incomplete
5
+ from homeassistant.components import conversation as conversation
6
+ from homeassistant.config_entries import ConfigSubentry as ConfigSubentry
7
+ from homeassistant.const import CONF_LLM_HASS_API as CONF_LLM_HASS_API, CONF_PROMPT as CONF_PROMPT, MATCH_ALL as MATCH_ALL
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
10
+ from typing import Literal
11
+
12
+ async def async_setup_entry(hass: HomeAssistant, config_entry: OpenRouterConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
13
+
14
+ class OpenRouterConversationEntity(OpenRouterEntity, conversation.ConversationEntity):
15
+ _attr_name: Incomplete
16
+ _attr_supported_features: Incomplete
17
+ def __init__(self, entry: OpenRouterConfigEntry, subentry: ConfigSubentry) -> None: ...
18
+ @property
19
+ def supported_languages(self) -> list[str] | Literal['*']: ...
20
+ async def _async_handle_message(self, user_input: conversation.ConversationInput, chat_log: conversation.ChatLog) -> conversation.ConversationResult: ...
@@ -0,0 +1,33 @@
1
+ import voluptuous as vol
2
+ from . import OpenRouterConfigEntry as OpenRouterConfigEntry
3
+ from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
4
+ from _typeshed import Incomplete
5
+ from collections.abc import AsyncGenerator, Callable as Callable
6
+ from homeassistant.components import conversation as conversation
7
+ from homeassistant.config_entries import ConfigSubentry as ConfigSubentry
8
+ from homeassistant.const import CONF_MODEL as CONF_MODEL
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
+ from homeassistant.helpers import llm as llm
11
+ from homeassistant.helpers.entity import Entity as Entity
12
+ from openai.types.chat import ChatCompletionMessage as ChatCompletionMessage, ChatCompletionMessageParam as ChatCompletionMessageParam, ChatCompletionToolParam
13
+ from openai.types.shared_params.response_format_json_schema import JSONSchema as JSONSchema
14
+ from typing import Any
15
+
16
+ MAX_TOOL_ITERATIONS: int
17
+
18
+ def _adjust_schema(schema: dict[str, Any]) -> None: ...
19
+ def _format_structured_output(name: str, schema: vol.Schema, llm_api: llm.APIInstance | None) -> JSONSchema: ...
20
+ def _format_tool(tool: llm.Tool, custom_serializer: Callable[[Any], Any] | None) -> ChatCompletionToolParam: ...
21
+ def _convert_content_to_chat_message(content: conversation.Content) -> ChatCompletionMessageParam | None: ...
22
+ def _decode_tool_arguments(arguments: str) -> Any: ...
23
+ async def _transform_response(message: ChatCompletionMessage) -> AsyncGenerator[conversation.AssistantContentDeltaDict]: ...
24
+
25
+ class OpenRouterEntity(Entity):
26
+ _attr_has_entity_name: bool
27
+ entry: Incomplete
28
+ subentry: Incomplete
29
+ model: Incomplete
30
+ _attr_unique_id: Incomplete
31
+ _attr_device_info: Incomplete
32
+ def __init__(self, entry: OpenRouterConfigEntry, subentry: ConfigSubentry) -> None: ...
33
+ async def _async_handle_chat_log(self, chat_log: conversation.ChatLog, structure_name: str | None = None, structure: vol.Schema | None = None) -> None: ...
@@ -1,5 +1,6 @@
1
1
  import openai
2
- from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_FILENAMES as CONF_FILENAMES, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P
2
+ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_FILENAMES as CONF_FILENAMES, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, DEFAULT_AI_TASK_NAME as DEFAULT_AI_TASK_NAME, DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_AI_TASK_OPTIONS as RECOMMENDED_AI_TASK_OPTIONS, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P
3
+ from .entity import async_prepare_files_for_prompt as async_prepare_files_for_prompt
3
4
  from _typeshed import Incomplete
4
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigSubentry as ConfigSubentry
5
6
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, Platform as Platform
@@ -17,9 +18,10 @@ PLATFORMS: Incomplete
17
18
  CONFIG_SCHEMA: Incomplete
18
19
  type OpenAIConfigEntry = ConfigEntry[openai.AsyncClient]
19
20
 
20
- def encode_file(file_path: str) -> tuple[str, str]: ...
21
21
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
22
22
  async def async_setup_entry(hass: HomeAssistant, entry: OpenAIConfigEntry) -> bool: ...
23
23
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
24
+ async def async_update_options(hass: HomeAssistant, entry: OpenAIConfigEntry) -> None: ...
24
25
  async def async_migrate_integration(hass: HomeAssistant) -> None: ...
25
26
  async def async_migrate_entry(hass: HomeAssistant, entry: OpenAIConfigEntry) -> bool: ...
27
+ def _add_ai_task_subentry(hass: HomeAssistant, entry: OpenAIConfigEntry) -> None: ...
@@ -0,0 +1,16 @@
1
+ from .entity import OpenAIBaseLLMEntity as OpenAIBaseLLMEntity
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components import ai_task as ai_task, conversation as conversation
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
8
+ from homeassistant.util.json import json_loads as json_loads
9
+
10
+ _LOGGER: Incomplete
11
+
12
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
13
+
14
+ class OpenAITaskEntity(ai_task.AITaskEntity, OpenAIBaseLLMEntity):
15
+ _attr_supported_features: Incomplete
16
+ async def _async_generate_data(self, task: ai_task.GenDataTask, chat_log: conversation.ChatLog) -> ai_task.GenDataTaskResult: ...
@@ -1,4 +1,4 @@
1
- from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_RECOMMENDED as CONF_RECOMMENDED, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DEFAULT_CONVERSATION_NAME as DEFAULT_CONVERSATION_NAME, DOMAIN as DOMAIN, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH as RECOMMENDED_WEB_SEARCH, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE, RECOMMENDED_WEB_SEARCH_USER_LOCATION as RECOMMENDED_WEB_SEARCH_USER_LOCATION, UNSUPPORTED_MODELS as UNSUPPORTED_MODELS, WEB_SEARCH_MODELS as WEB_SEARCH_MODELS
1
+ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_CODE_INTERPRETER as CONF_CODE_INTERPRETER, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_RECOMMENDED as CONF_RECOMMENDED, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DEFAULT_AI_TASK_NAME as DEFAULT_AI_TASK_NAME, DEFAULT_CONVERSATION_NAME as DEFAULT_CONVERSATION_NAME, DOMAIN as DOMAIN, RECOMMENDED_AI_TASK_OPTIONS as RECOMMENDED_AI_TASK_OPTIONS, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_CODE_INTERPRETER as RECOMMENDED_CODE_INTERPRETER, RECOMMENDED_CONVERSATION_OPTIONS as RECOMMENDED_CONVERSATION_OPTIONS, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH as RECOMMENDED_WEB_SEARCH, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE, RECOMMENDED_WEB_SEARCH_USER_LOCATION as RECOMMENDED_WEB_SEARCH_USER_LOCATION, UNSUPPORTED_MODELS as UNSUPPORTED_MODELS, UNSUPPORTED_WEB_SEARCH_MODELS as UNSUPPORTED_WEB_SEARCH_MODELS
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.components.zone import ENTITY_ID_HOME as ENTITY_ID_HOME
4
4
  from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigEntryState as ConfigEntryState, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryFlow as ConfigSubentryFlow, SubentryFlowResult as SubentryFlowResult
@@ -12,7 +12,6 @@ from typing import Any
12
12
 
13
13
  _LOGGER: Incomplete
14
14
  STEP_USER_DATA_SCHEMA: Incomplete
15
- RECOMMENDED_OPTIONS: Incomplete
16
15
 
17
16
  async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> None: ...
18
17
 
@@ -24,7 +23,7 @@ class OpenAIConfigFlow(ConfigFlow, domain=DOMAIN):
24
23
  @callback
25
24
  def async_get_supported_subentry_types(cls, config_entry: ConfigEntry) -> dict[str, type[ConfigSubentryFlow]]: ...
26
25
 
27
- class ConversationSubentryFlowHandler(ConfigSubentryFlow):
26
+ class OpenAISubentryFlowHandler(ConfigSubentryFlow):
28
27
  last_rendered_recommended: bool
29
28
  options: dict[str, Any]
30
29
  @property
@@ -1,10 +1,15 @@
1
1
  import logging
2
+ from _typeshed import Incomplete
3
+ from homeassistant.const import CONF_LLM_HASS_API as CONF_LLM_HASS_API
4
+ from homeassistant.helpers import llm as llm
2
5
 
3
6
  DOMAIN: str
4
7
  LOGGER: logging.Logger
5
8
  DEFAULT_CONVERSATION_NAME: str
9
+ DEFAULT_AI_TASK_NAME: str
6
10
  DEFAULT_NAME: str
7
11
  CONF_CHAT_MODEL: str
12
+ CONF_CODE_INTERPRETER: str
8
13
  CONF_FILENAMES: str
9
14
  CONF_MAX_TOKENS: str
10
15
  CONF_PROMPT: str
@@ -19,6 +24,7 @@ CONF_WEB_SEARCH_CITY: str
19
24
  CONF_WEB_SEARCH_REGION: str
20
25
  CONF_WEB_SEARCH_COUNTRY: str
21
26
  CONF_WEB_SEARCH_TIMEZONE: str
27
+ RECOMMENDED_CODE_INTERPRETER: bool
22
28
  RECOMMENDED_CHAT_MODEL: str
23
29
  RECOMMENDED_MAX_TOKENS: int
24
30
  RECOMMENDED_REASONING_EFFORT: str
@@ -28,4 +34,6 @@ RECOMMENDED_WEB_SEARCH: bool
28
34
  RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE: str
29
35
  RECOMMENDED_WEB_SEARCH_USER_LOCATION: bool
30
36
  UNSUPPORTED_MODELS: list[str]
31
- WEB_SEARCH_MODELS: list[str]
37
+ UNSUPPORTED_WEB_SEARCH_MODELS: list[str]
38
+ RECOMMENDED_CONVERSATION_OPTIONS: Incomplete
39
+ RECOMMENDED_AI_TASK_OPTIONS: Incomplete
@@ -1,32 +1,18 @@
1
1
  from . import OpenAIConfigEntry as OpenAIConfigEntry
2
- from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_PROMPT as CONF_PROMPT, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE
2
+ from .const import CONF_PROMPT as CONF_PROMPT, DOMAIN as DOMAIN
3
+ from .entity import OpenAIBaseLLMEntity as OpenAIBaseLLMEntity
3
4
  from _typeshed import Incomplete
4
- from collections.abc import AsyncGenerator, Callable as Callable
5
- from homeassistant.components import assist_pipeline as assist_pipeline, conversation as conversation
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigSubentry as ConfigSubentry
5
+ from homeassistant.components import conversation as conversation
6
+ from homeassistant.config_entries import ConfigSubentry as ConfigSubentry
7
7
  from homeassistant.const import CONF_LLM_HASS_API as CONF_LLM_HASS_API, MATCH_ALL as MATCH_ALL
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
- from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
- from homeassistant.helpers import intent as intent, llm as llm
11
9
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
- from openai._streaming import AsyncStream as AsyncStream
13
- from openai.types.responses import FunctionToolParam, ResponseInputParam as ResponseInputParam, ResponseStreamEvent as ResponseStreamEvent, ToolParam as ToolParam
14
- from typing import Any, Literal
15
-
16
- MAX_TOOL_ITERATIONS: int
10
+ from typing import Literal
17
11
 
18
12
  async def async_setup_entry(hass: HomeAssistant, config_entry: OpenAIConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
19
- def _format_tool(tool: llm.Tool, custom_serializer: Callable[[Any], Any] | None) -> FunctionToolParam: ...
20
- def _convert_content_to_param(content: conversation.Content) -> ResponseInputParam: ...
21
- async def _transform_stream(chat_log: conversation.ChatLog, result: AsyncStream[ResponseStreamEvent], messages: ResponseInputParam) -> AsyncGenerator[conversation.AssistantContentDeltaDict]: ...
22
13
 
23
- class OpenAIConversationEntity(conversation.ConversationEntity, conversation.AbstractConversationAgent):
14
+ class OpenAIConversationEntity(conversation.ConversationEntity, conversation.AbstractConversationAgent, OpenAIBaseLLMEntity):
24
15
  _attr_supports_streaming: bool
25
- entry: Incomplete
26
- subentry: Incomplete
27
- _attr_name: Incomplete
28
- _attr_unique_id: Incomplete
29
- _attr_device_info: Incomplete
30
16
  _attr_supported_features: Incomplete
31
17
  def __init__(self, entry: OpenAIConfigEntry, subentry: ConfigSubentry) -> None: ...
32
18
  @property
@@ -34,5 +20,3 @@ class OpenAIConversationEntity(conversation.ConversationEntity, conversation.Abs
34
20
  async def async_added_to_hass(self) -> None: ...
35
21
  async def async_will_remove_from_hass(self) -> None: ...
36
22
  async def _async_handle_message(self, user_input: conversation.ConversationInput, chat_log: conversation.ChatLog) -> conversation.ConversationResult: ...
37
- async def _async_handle_chat_log(self, chat_log: conversation.ChatLog) -> None: ...
38
- async def _async_entry_update_listener(self, hass: HomeAssistant, entry: ConfigEntry) -> None: ...
@@ -0,0 +1,36 @@
1
+ import voluptuous as vol
2
+ from . import OpenAIConfigEntry as OpenAIConfigEntry
3
+ from .const import CONF_CHAT_MODEL as CONF_CHAT_MODEL, CONF_CODE_INTERPRETER as CONF_CODE_INTERPRETER, CONF_MAX_TOKENS as CONF_MAX_TOKENS, CONF_REASONING_EFFORT as CONF_REASONING_EFFORT, CONF_TEMPERATURE as CONF_TEMPERATURE, CONF_TOP_P as CONF_TOP_P, CONF_WEB_SEARCH as CONF_WEB_SEARCH, CONF_WEB_SEARCH_CITY as CONF_WEB_SEARCH_CITY, CONF_WEB_SEARCH_CONTEXT_SIZE as CONF_WEB_SEARCH_CONTEXT_SIZE, CONF_WEB_SEARCH_COUNTRY as CONF_WEB_SEARCH_COUNTRY, CONF_WEB_SEARCH_REGION as CONF_WEB_SEARCH_REGION, CONF_WEB_SEARCH_TIMEZONE as CONF_WEB_SEARCH_TIMEZONE, CONF_WEB_SEARCH_USER_LOCATION as CONF_WEB_SEARCH_USER_LOCATION, DOMAIN as DOMAIN, LOGGER as LOGGER, RECOMMENDED_CHAT_MODEL as RECOMMENDED_CHAT_MODEL, RECOMMENDED_MAX_TOKENS as RECOMMENDED_MAX_TOKENS, RECOMMENDED_REASONING_EFFORT as RECOMMENDED_REASONING_EFFORT, RECOMMENDED_TEMPERATURE as RECOMMENDED_TEMPERATURE, RECOMMENDED_TOP_P as RECOMMENDED_TOP_P, RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE as RECOMMENDED_WEB_SEARCH_CONTEXT_SIZE
4
+ from _typeshed import Incomplete
5
+ from collections.abc import AsyncGenerator, Callable as Callable
6
+ from homeassistant.components import conversation as conversation
7
+ from homeassistant.config_entries import ConfigSubentry as ConfigSubentry
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
+ from homeassistant.helpers import llm as llm
11
+ from homeassistant.helpers.entity import Entity as Entity
12
+ from homeassistant.util import slugify as slugify
13
+ from openai._streaming import AsyncStream as AsyncStream
14
+ from openai.types.responses import FunctionToolParam, ResponseInputMessageContentListParam as ResponseInputMessageContentListParam, ResponseInputParam as ResponseInputParam, ResponseStreamEvent as ResponseStreamEvent, ToolParam as ToolParam
15
+ from pathlib import Path
16
+ from typing import Any
17
+
18
+ MAX_TOOL_ITERATIONS: int
19
+
20
+ def _adjust_schema(schema: dict[str, Any]) -> None: ...
21
+ def _format_structured_output(schema: vol.Schema, llm_api: llm.APIInstance | None) -> dict[str, Any]: ...
22
+ def _format_tool(tool: llm.Tool, custom_serializer: Callable[[Any], Any] | None) -> FunctionToolParam: ...
23
+ def _convert_content_to_param(content: conversation.Content) -> ResponseInputParam: ...
24
+ async def _transform_stream(chat_log: conversation.ChatLog, result: AsyncStream[ResponseStreamEvent], messages: ResponseInputParam) -> AsyncGenerator[conversation.AssistantContentDeltaDict]: ...
25
+
26
+ class OpenAIBaseLLMEntity(Entity):
27
+ _attr_has_entity_name: bool
28
+ _attr_name: Incomplete
29
+ entry: Incomplete
30
+ subentry: Incomplete
31
+ _attr_unique_id: Incomplete
32
+ _attr_device_info: Incomplete
33
+ def __init__(self, entry: OpenAIConfigEntry, subentry: ConfigSubentry) -> None: ...
34
+ async def _async_handle_chat_log(self, chat_log: conversation.ChatLog, structure_name: str | None = None, structure: vol.Schema | None = None) -> None: ...
35
+
36
+ async def async_prepare_files_for_prompt(hass: HomeAssistant, files: list[Path]) -> ResponseInputMessageContentListParam: ...
@@ -0,0 +1,8 @@
1
+ from .coordinator import OpowerConfigEntry as OpowerConfigEntry, OpowerCoordinator as OpowerCoordinator
2
+ from homeassistant.const import Platform as Platform
3
+ from homeassistant.core import HomeAssistant as HomeAssistant
4
+
5
+ PLATFORMS: list[Platform]
6
+
7
+ async def async_setup_entry(hass: HomeAssistant, entry: OpowerConfigEntry) -> bool: ...
8
+ async def async_unload_entry(hass: HomeAssistant, entry: OpowerConfigEntry) -> bool: ...
@@ -0,0 +1,30 @@
1
+ from .const import CONF_LOGIN_DATA as CONF_LOGIN_DATA, CONF_TOTP_SECRET as CONF_TOTP_SECRET, CONF_UTILITY as CONF_UTILITY, 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, SOURCE_REAUTH as SOURCE_REAUTH
5
+ from homeassistant.const import CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
6
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
+ from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
8
+ from homeassistant.helpers.typing import VolDictType as VolDictType
9
+ from opower import MfaHandlerBase as MfaHandlerBase
10
+ from typing import Any
11
+
12
+ _LOGGER: Incomplete
13
+ CONF_MFA_CODE: str
14
+ CONF_MFA_METHOD: str
15
+
16
+ async def _validate_login(hass: HomeAssistant, data: Mapping[str, Any]) -> None: ...
17
+
18
+ class OpowerConfigFlow(ConfigFlow, domain=DOMAIN):
19
+ VERSION: int
20
+ _data: dict[str, Any]
21
+ mfa_handler: MfaHandlerBase | None
22
+ def __init__(self) -> None: ...
23
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
24
+ async def async_step_credentials(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
25
+ async def async_step_mfa_options(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
26
+ async def async_step_mfa_code(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
27
+ @callback
28
+ def _async_create_opower_entry(self, data: dict[str, Any], **kwargs: Any) -> ConfigFlowResult: ...
29
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
30
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -0,0 +1,4 @@
1
+ DOMAIN: str
2
+ CONF_UTILITY: str
3
+ CONF_TOTP_SECRET: str
4
+ CONF_LOGIN_DATA: str
@@ -0,0 +1,24 @@
1
+ from .const import CONF_LOGIN_DATA as CONF_LOGIN_DATA, CONF_TOTP_SECRET as CONF_TOTP_SECRET, CONF_UTILITY as CONF_UTILITY, DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components.recorder import get_instance as get_instance
4
+ from homeassistant.components.recorder.models import StatisticData as StatisticData, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData
5
+ from homeassistant.components.recorder.statistics import async_add_external_statistics as async_add_external_statistics, get_last_statistics as get_last_statistics, statistics_during_period as statistics_during_period
6
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
+ from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME, UnitOfEnergy as UnitOfEnergy, UnitOfVolume as UnitOfVolume
8
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
9
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
10
+ from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
11
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
12
+ from opower import Account as Account, CostRead as CostRead, Forecast
13
+
14
+ _LOGGER: Incomplete
15
+ type OpowerConfigEntry = ConfigEntry[OpowerCoordinator]
16
+
17
+ class OpowerCoordinator(DataUpdateCoordinator[dict[str, Forecast]]):
18
+ config_entry: OpowerConfigEntry
19
+ api: Incomplete
20
+ def __init__(self, hass: HomeAssistant, config_entry: OpowerConfigEntry) -> None: ...
21
+ async def _async_update_data(self) -> dict[str, Forecast]: ...
22
+ async def _insert_statistics(self) -> None: ...
23
+ async def _async_maybe_migrate_statistics(self, utility_account_id: str, migration_map: dict[str, str], metadata_map: dict[str, StatisticMetaData]) -> bool: ...
24
+ async def _async_get_cost_reads(self, account: Account, time_zone_str: str, start_time: float | None = None) -> list[CostRead]: ...
@@ -0,0 +1,35 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OpowerConfigEntry as OpowerConfigEntry, OpowerCoordinator as OpowerCoordinator
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from datetime import date
7
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
8
+ from homeassistant.const import EntityCategory as EntityCategory, UnitOfEnergy as UnitOfEnergy, UnitOfVolume as UnitOfVolume
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
11
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
+ from homeassistant.helpers.typing import StateType as StateType
13
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
14
+ from opower import Forecast as Forecast
15
+
16
+ PARALLEL_UPDATES: int
17
+
18
+ @dataclass(frozen=True, kw_only=True)
19
+ class OpowerEntityDescription(SensorEntityDescription):
20
+ value_fn: Callable[[Forecast], str | float | date]
21
+
22
+ ELEC_SENSORS: tuple[OpowerEntityDescription, ...]
23
+ GAS_SENSORS: tuple[OpowerEntityDescription, ...]
24
+
25
+ async def async_setup_entry(hass: HomeAssistant, entry: OpowerConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
26
+
27
+ class OpowerSensor(CoordinatorEntity[OpowerCoordinator], SensorEntity):
28
+ _attr_has_entity_name: bool
29
+ entity_description: OpowerEntityDescription
30
+ _attr_unique_id: Incomplete
31
+ _attr_device_info: Incomplete
32
+ utility_account_id: Incomplete
33
+ def __init__(self, coordinator: OpowerCoordinator, description: OpowerEntityDescription, utility_account_id: str, device: DeviceInfo, device_id: str) -> None: ...
34
+ @property
35
+ def native_value(self) -> StateType | date: ...
@@ -1,4 +1,4 @@
1
- from .const import CONF_STATION as CONF_STATION
1
+ from .const import CONF_STATION as CONF_STATION, DOMAIN as DOMAIN
2
2
  from .coordinator import PegelOnlineConfigEntry as PegelOnlineConfigEntry, PegelOnlineDataUpdateCoordinator as PegelOnlineDataUpdateCoordinator
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.const import Platform as Platform
@@ -9,6 +9,8 @@ from homeassistant.const import ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE a
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
11
 
12
+ PARALLEL_UPDATES: int
13
+
12
14
  @dataclass(frozen=True, kw_only=True)
13
15
  class PegelOnlineSensorEntityDescription(SensorEntityDescription):
14
16
  measurement_fn: Callable[[StationMeasurements], CurrentMeasurement | None]
@@ -1,13 +1,14 @@
1
- from .const import CONF_STATISTICS_ONLY as CONF_STATISTICS_ONLY, DOMAIN as DOMAIN, MIN_TIME_BETWEEN_UPDATES as MIN_TIME_BETWEEN_UPDATES
1
+ from .const import CONF_STATISTICS_ONLY as CONF_STATISTICS_ONLY, DOMAIN as DOMAIN, MIN_TIME_BETWEEN_UPDATES as MIN_TIME_BETWEEN_UPDATES, VERSION_6_RESPONSE_TO_5_ERROR as VERSION_6_RESPONSE_TO_5_ERROR
2
2
  from _typeshed import Incomplete
3
3
  from dataclasses import dataclass
4
- from hole import Hole
4
+ from hole import Hole, HoleV5 as HoleV5, HoleV6 as HoleV6
5
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
6
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_HOST as CONF_HOST, CONF_LOCATION as CONF_LOCATION, CONF_NAME as CONF_NAME, CONF_SSL as CONF_SSL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
8
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
9
9
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
10
10
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
11
+ from typing import Any, Literal
11
12
 
12
13
  _LOGGER: Incomplete
13
14
  PLATFORMS: Incomplete
@@ -17,6 +18,9 @@ type PiHoleConfigEntry = ConfigEntry[PiHoleData]
17
18
  class PiHoleData:
18
19
  api: Hole
19
20
  coordinator: DataUpdateCoordinator[None]
21
+ api_version: int
20
22
 
21
23
  async def async_setup_entry(hass: HomeAssistant, entry: PiHoleConfigEntry) -> bool: ...
22
24
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
25
+ def api_by_version(hass: HomeAssistant, entry: dict[str, Any], version: int, password: str | None = None) -> HoleV5 | HoleV6: ...
26
+ async def determine_api_version(hass: HomeAssistant, entry: dict[str, Any]) -> Literal[5, 6]: ...
@@ -1,9 +1,9 @@
1
+ from . import Hole as Hole, api_by_version as api_by_version, determine_api_version as determine_api_version
1
2
  from .const import DEFAULT_LOCATION as DEFAULT_LOCATION, DEFAULT_NAME as DEFAULT_NAME, DEFAULT_SSL as DEFAULT_SSL, DEFAULT_VERIFY_SSL as DEFAULT_VERIFY_SSL, DOMAIN as DOMAIN
2
3
  from _typeshed import Incomplete
3
4
  from collections.abc import Mapping
4
5
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
5
6
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_HOST as CONF_HOST, CONF_LOCATION as CONF_LOCATION, CONF_NAME as CONF_NAME, CONF_PORT as CONF_PORT, CONF_SSL as CONF_SSL, CONF_VERIFY_SSL as CONF_VERIFY_SSL
6
- from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
7
7
  from typing import Any
8
8
 
9
9
  _LOGGER: Incomplete
@@ -13,7 +13,6 @@ class PiHoleFlowHandler(ConfigFlow, domain=DOMAIN):
13
13
  _config: dict
14
14
  def __init__(self) -> None: ...
15
15
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
16
- async def async_step_api_key(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
17
16
  async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
18
17
  async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
19
18
  async def _async_try_connect(self) -> dict[str, str]: ...
@@ -11,3 +11,4 @@ DEFAULT_STATISTICS_ONLY: bool
11
11
  SERVICE_DISABLE: str
12
12
  SERVICE_DISABLE_ATTR_DURATION: str
13
13
  MIN_TIME_BETWEEN_UPDATES: Incomplete
14
+ VERSION_6_RESPONSE_TO_5_ERROR: Incomplete
@@ -1,6 +1,7 @@
1
1
  from . import PiHoleConfigEntry as PiHoleConfigEntry
2
2
  from .entity import PiHoleEntity as PiHoleEntity
3
3
  from _typeshed import Incomplete
4
+ from collections.abc import Mapping
4
5
  from hole import Hole as Hole
5
6
  from homeassistant.components.sensor import SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
6
7
  from homeassistant.const import CONF_NAME as CONF_NAME, PERCENTAGE as PERCENTAGE
@@ -8,8 +9,10 @@ from homeassistant.core import HomeAssistant as HomeAssistant
8
9
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
10
  from homeassistant.helpers.typing import StateType as StateType
10
11
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
12
+ from typing import Any
11
13
 
12
14
  SENSOR_TYPES: tuple[SensorEntityDescription, ...]
15
+ SENSOR_TYPES_V6: tuple[SensorEntityDescription, ...]
13
16
 
14
17
  async def async_setup_entry(hass: HomeAssistant, entry: PiHoleConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
15
18
 
@@ -20,3 +23,5 @@ class PiHoleSensor(PiHoleEntity, SensorEntity):
20
23
  def __init__(self, api: Hole, coordinator: DataUpdateCoordinator[None], name: str, server_unique_id: str, description: SensorEntityDescription) -> None: ...
21
24
  @property
22
25
  def native_value(self) -> StateType: ...
26
+
27
+ def get_nested(data: Mapping[str, Any], key: str) -> float | int: ...
@@ -12,9 +12,9 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as Da
12
12
 
13
13
  @dataclass(frozen=True)
14
14
  class PiHoleUpdateEntityDescription(UpdateEntityDescription):
15
- installed_version: Callable[[dict], str | None] = ...
16
- latest_version: Callable[[dict], str | None] = ...
17
- has_update: Callable[[dict], bool | None] = ...
15
+ installed_version: Callable[[Hole], str | None] = ...
16
+ latest_version: Callable[[Hole], str | None] = ...
17
+ has_update: Callable[[Hole], bool | None] = ...
18
18
  release_base_url: str | None = ...
19
19
  title: str | None = ...
20
20
 
@@ -14,6 +14,5 @@ DATA_PRIVILEGED_KEY: HassKey[bool | None]
14
14
 
15
15
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
16
16
  async def async_setup_entry(hass: HomeAssistant, entry: PingConfigEntry) -> bool: ...
17
- async def async_reload_entry(hass: HomeAssistant, entry: PingConfigEntry) -> None: ...
18
17
  async def async_unload_entry(hass: HomeAssistant, entry: PingConfigEntry) -> bool: ...
19
18
  async def _can_use_icmp_lib_with_privilege() -> bool | None: ...
@@ -1,7 +1,7 @@
1
1
  from .const import CONF_PING_COUNT as CONF_PING_COUNT, DEFAULT_PING_COUNT as DEFAULT_PING_COUNT, DOMAIN as DOMAIN
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.components.device_tracker import CONF_CONSIDER_HOME as CONF_CONSIDER_HOME, DEFAULT_CONSIDER_HOME as DEFAULT_CONSIDER_HOME
4
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlowWithReload as OptionsFlowWithReload
5
5
  from homeassistant.const import CONF_HOST as CONF_HOST
6
6
  from homeassistant.core import callback as callback
7
7
  from homeassistant.helpers import selector as selector
@@ -17,7 +17,7 @@ class PingConfigFlow(ConfigFlow, domain=DOMAIN):
17
17
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
18
18
  @staticmethod
19
19
  @callback
20
- def async_get_options_flow(config_entry: ConfigEntry) -> OptionsFlow: ...
20
+ def async_get_options_flow(config_entry: ConfigEntry) -> OptionsFlowHandler: ...
21
21
 
22
- class OptionsFlowHandler(OptionsFlow):
22
+ class OptionsFlowHandler(OptionsFlowWithReload):
23
23
  async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -26,7 +26,7 @@ class PlugwiseSelectEntity(PlugwiseEntity, SelectEntity):
26
26
  _location: Incomplete
27
27
  def __init__(self, coordinator: PlugwiseDataUpdateCoordinator, device_id: str, entity_description: PlugwiseSelectEntityDescription) -> None: ...
28
28
  @property
29
- def current_option(self) -> str: ...
29
+ def current_option(self) -> str | None: ...
30
30
  @property
31
31
  def options(self) -> list[str]: ...
32
32
  @plugwise_command
@@ -9,4 +9,3 @@ _LOGGER: Incomplete
9
9
 
10
10
  async def async_setup_entry(hass: HomeAssistant, entry: ProximityConfigEntry) -> bool: ...
11
11
  async def async_unload_entry(hass: HomeAssistant, entry: ProximityConfigEntry) -> bool: ...
12
- async def _async_update_listener(hass: HomeAssistant, entry: ProximityConfigEntry) -> None: ...
@@ -1,6 +1,6 @@
1
1
  import voluptuous as vol
2
2
  from .const import CONF_IGNORED_ZONES as CONF_IGNORED_ZONES, CONF_TOLERANCE as CONF_TOLERANCE, CONF_TRACKED_ENTITIES as CONF_TRACKED_ENTITIES, DEFAULT_PROXIMITY_ZONE as DEFAULT_PROXIMITY_ZONE, DEFAULT_TOLERANCE as DEFAULT_TOLERANCE, DOMAIN as DOMAIN
3
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
3
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlowWithReload as OptionsFlowWithReload
4
4
  from homeassistant.const import CONF_ZONE as CONF_ZONE, UnitOfLength as UnitOfLength
5
5
  from homeassistant.core import State as State, callback as callback
6
6
  from homeassistant.helpers.selector import EntitySelector as EntitySelector, EntitySelectorConfig as EntitySelectorConfig, NumberSelector as NumberSelector, NumberSelectorConfig as NumberSelectorConfig
@@ -17,9 +17,9 @@ class ProximityConfigFlow(ConfigFlow, domain=DOMAIN):
17
17
  def _user_form_schema(self, user_input: dict[str, Any] | None = None) -> vol.Schema: ...
18
18
  @staticmethod
19
19
  @callback
20
- def async_get_options_flow(config_entry: ConfigEntry) -> OptionsFlow: ...
20
+ def async_get_options_flow(config_entry: ConfigEntry) -> ProximityOptionsFlow: ...
21
21
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
22
22
 
23
- class ProximityOptionsFlow(OptionsFlow):
23
+ class ProximityOptionsFlow(OptionsFlowWithReload):
24
24
  def _user_form_schema(self, user_input: dict[str, Any]) -> vol.Schema: ...
25
25
  async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -3,5 +3,4 @@ from .coordinator import PurpleAirConfigEntry as PurpleAirConfigEntry, PurpleAir
3
3
  from homeassistant.core import HomeAssistant as HomeAssistant
4
4
 
5
5
  async def async_setup_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> bool: ...
6
- async def async_reload_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> None: ...
7
6
  async def async_unload_entry(hass: HomeAssistant, entry: PurpleAirConfigEntry) -> bool: ...
@@ -5,7 +5,7 @@ from aiopurpleair import API
5
5
  from aiopurpleair.endpoints.sensors import NearbySensorResult as NearbySensorResult
6
6
  from collections.abc import Mapping
7
7
  from dataclasses import dataclass, field
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
8
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlowWithReload as OptionsFlowWithReload
9
9
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, CONF_SHOW_ON_MAP as CONF_SHOW_ON_MAP
10
10
  from homeassistant.core import Event as Event, EventStateChangedData as EventStateChangedData, HomeAssistant as HomeAssistant, callback as callback
11
11
  from homeassistant.helpers import aiohttp_client as aiohttp_client
@@ -54,7 +54,7 @@ class PurpleAirConfigFlow(ConfigFlow, domain=DOMAIN):
54
54
  async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
55
55
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
56
56
 
57
- class PurpleAirOptionsFlowHandler(OptionsFlow):
57
+ class PurpleAirOptionsFlowHandler(OptionsFlowWithReload):
58
58
  _flow_data: dict[str, Any]
59
59
  def __init__(self) -> None: ...
60
60
  @property
@@ -6,6 +6,7 @@ from homeassistant.const import CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PA
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
8
8
  from homeassistant.helpers.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
9
+ from homeassistant.helpers.service_info.hassio import HassioServiceInfo as HassioServiceInfo
9
10
  from typing import Any
10
11
 
11
12
  _LOGGER: Incomplete
@@ -17,7 +18,10 @@ async def validate_input(hass: HomeAssistant, user_input: dict[str, Any]) -> Non
17
18
  class PyLoadConfigFlow(ConfigFlow, domain=DOMAIN):
18
19
  VERSION: int
19
20
  MINOR_VERSION: int
21
+ _hassio_discovery: HassioServiceInfo | None
20
22
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
21
23
  async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
22
24
  async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
23
25
  async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
26
+ async def async_step_hassio(self, discovery_info: HassioServiceInfo) -> ConfigFlowResult: ...
27
+ async def async_step_hassio_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -2,7 +2,7 @@ import threading
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.helpers.frame import ReportBehavior as ReportBehavior, report_usage as report_usage
4
4
  from homeassistant.util.loop import raise_for_blocking_call as raise_for_blocking_call
5
- from sqlalchemy.pool import ConnectionPoolEntry as ConnectionPoolEntry, NullPool, SingletonThreadPool, StaticPool
5
+ from sqlalchemy.pool import ConnectionPoolEntry as ConnectionPoolEntry, NullPool, PoolProxiedConnection as PoolProxiedConnection, SingletonThreadPool, StaticPool
6
6
  from typing import Any
7
7
 
8
8
  _LOGGER: Incomplete
@@ -20,6 +20,7 @@ class RecorderPool(SingletonThreadPool, NullPool):
20
20
  def dispose(self) -> None: ...
21
21
  def _do_get(self) -> ConnectionPoolEntry: ...
22
22
  def _do_get_db_connection_protected(self) -> ConnectionPoolEntry: ...
23
+ def connect(self) -> PoolProxiedConnection: ...
23
24
 
24
25
  class MutexPool(StaticPool):
25
26
  _reference_counter: int
@@ -1,6 +1,6 @@
1
1
  from .const import CONF_LOCALE as CONF_LOCALE, DOMAIN as DOMAIN, PLATFORMS as PLATFORMS
2
2
  from .renault_hub import RenaultHub as RenaultHub
3
- from .services import setup_services as setup_services
3
+ from .services import async_setup_services as async_setup_services
4
4
  from _typeshed import Incomplete
5
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
6
  from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
@@ -2,7 +2,7 @@ from . import RenaultConfigEntry as RenaultConfigEntry
2
2
  from .const import DOMAIN as DOMAIN
3
3
  from .renault_vehicle import RenaultVehicleProxy as RenaultVehicleProxy
4
4
  from _typeshed import Incomplete
5
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
6
6
  from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
7
7
 
8
8
  LOGGER: Incomplete
@@ -29,4 +29,5 @@ async def ac_start(service_call: ServiceCall) -> None: ...
29
29
  async def charge_set_schedules(service_call: ServiceCall) -> None: ...
30
30
  async def ac_set_schedules(service_call: ServiceCall) -> None: ...
31
31
  def get_vehicle_proxy(service_call: ServiceCall) -> RenaultVehicleProxy: ...
32
- def setup_services(hass: HomeAssistant) -> None: ...
32
+ @callback
33
+ def async_setup_services(hass: HomeAssistant) -> None: ...