homeassistant-stubs 2025.3.3__py3-none-any.whl → 2025.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. homeassistant-stubs/bootstrap.pyi +3 -2
  2. homeassistant-stubs/components/accuweather/const.pyi +3 -1
  3. homeassistant-stubs/components/accuweather/sensor.pyi +1 -1
  4. homeassistant-stubs/components/anova/config_flow.pyi +4 -1
  5. homeassistant-stubs/components/anthemav/media_player.pyi +2 -0
  6. homeassistant-stubs/components/arwn/sensor.pyi +3 -2
  7. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +14 -5
  8. homeassistant-stubs/components/assist_satellite/const.pyi +3 -0
  9. homeassistant-stubs/components/assist_satellite/entity.pyi +6 -4
  10. homeassistant-stubs/components/azure_storage/__init__.pyi +1 -1
  11. homeassistant-stubs/components/azure_storage/backup.pyi +1 -1
  12. homeassistant-stubs/components/azure_storage/config_flow.pyi +7 -0
  13. homeassistant-stubs/components/backup/__init__.pyi +2 -2
  14. homeassistant-stubs/components/backup/agent.pyi +1 -1
  15. homeassistant-stubs/components/backup/backup.pyi +1 -1
  16. homeassistant-stubs/components/backup/config_flow.pyi +7 -0
  17. homeassistant-stubs/components/backup/coordinator.pyi +28 -0
  18. homeassistant-stubs/components/backup/diagnostics.pyi +7 -0
  19. homeassistant-stubs/components/backup/entity.pyi +13 -0
  20. homeassistant-stubs/components/backup/http.pyi +1 -0
  21. homeassistant-stubs/components/backup/manager.pyi +8 -3
  22. homeassistant-stubs/components/backup/sensor.pyi +23 -0
  23. homeassistant-stubs/components/bosch_alarm/__init__.pyi +12 -0
  24. homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +31 -0
  25. homeassistant-stubs/components/bosch_alarm/config_flow.pyi +20 -0
  26. homeassistant-stubs/components/bosch_alarm/const.pyi +4 -0
  27. homeassistant-stubs/components/bring/diagnostics.pyi +5 -0
  28. homeassistant-stubs/components/brother/__init__.pyi +1 -0
  29. homeassistant-stubs/components/brother/coordinator.pyi +1 -0
  30. homeassistant-stubs/components/cloud/backup.pyi +3 -3
  31. homeassistant-stubs/components/cloud/http_api.pyi +6 -3
  32. homeassistant-stubs/components/cloud/tts.pyi +2 -2
  33. homeassistant-stubs/components/comelit/__init__.pyi +11 -0
  34. homeassistant-stubs/components/comelit/alarm_control_panel.pyi +44 -0
  35. homeassistant-stubs/components/comelit/binary_sensor.pyi +22 -0
  36. homeassistant-stubs/components/comelit/climate.pyi +60 -0
  37. homeassistant-stubs/components/comelit/config_flow.pyi +28 -0
  38. homeassistant-stubs/components/comelit/const.pyi +7 -0
  39. homeassistant-stubs/components/comelit/coordinator.pyi +38 -0
  40. homeassistant-stubs/components/comelit/cover.pyi +39 -0
  41. homeassistant-stubs/components/comelit/diagnostics.pyi +10 -0
  42. homeassistant-stubs/components/comelit/humidifier.pyi +61 -0
  43. homeassistant-stubs/components/comelit/light.pyi +28 -0
  44. homeassistant-stubs/components/comelit/sensor.pyi +45 -0
  45. homeassistant-stubs/components/comelit/switch.pyi +27 -0
  46. homeassistant-stubs/components/cover/reproduce_state.pyi +17 -6
  47. homeassistant-stubs/components/demo/valve.pyi +30 -0
  48. homeassistant-stubs/components/discovergy/__init__.pyi +1 -1
  49. homeassistant-stubs/components/energy/data.pyi +1 -0
  50. homeassistant-stubs/components/enigma2/config_flow.pyi +1 -0
  51. homeassistant-stubs/components/esphome/__init__.pyi +1 -1
  52. homeassistant-stubs/components/esphome/assist_satellite.pyi +2 -0
  53. homeassistant-stubs/components/esphome/config_flow.pyi +1 -0
  54. homeassistant-stubs/components/esphome/const.pyi +1 -0
  55. homeassistant-stubs/components/esphome/diagnostics.pyi +0 -1
  56. homeassistant-stubs/components/esphome/event.pyi +2 -0
  57. homeassistant-stubs/components/esphome/manager.pyi +1 -1
  58. homeassistant-stubs/components/fritzbox/climate.pyi +1 -1
  59. homeassistant-stubs/components/frontend/__init__.pyi +9 -10
  60. homeassistant-stubs/components/frontend/storage.pyi +2 -1
  61. homeassistant-stubs/components/gios/__init__.pyi +1 -0
  62. homeassistant-stubs/components/gios/config_flow.pyi +1 -0
  63. homeassistant-stubs/components/gios/coordinator.pyi +2 -2
  64. homeassistant-stubs/components/google/calendar.pyi +3 -2
  65. homeassistant-stubs/components/google_drive/backup.pyi +2 -2
  66. homeassistant-stubs/components/habitica/const.pyi +25 -0
  67. homeassistant-stubs/components/habitica/services.pyi +6 -2
  68. homeassistant-stubs/components/heos/const.pyi +1 -0
  69. homeassistant-stubs/components/heos/coordinator.pyi +5 -5
  70. homeassistant-stubs/components/heos/media_player.pyi +18 -8
  71. homeassistant-stubs/components/home_connect/__init__.pyi +6 -17
  72. homeassistant-stubs/components/home_connect/button.pyi +0 -2
  73. homeassistant-stubs/components/home_connect/const.pyi +1 -6
  74. homeassistant-stubs/components/home_connect/coordinator.pyi +4 -2
  75. homeassistant-stubs/components/home_connect/entity.pyi +7 -2
  76. homeassistant-stubs/components/home_connect/light.pyi +1 -1
  77. homeassistant-stubs/components/home_connect/number.pyi +4 -3
  78. homeassistant-stubs/components/home_connect/select.pyi +7 -3
  79. homeassistant-stubs/components/home_connect/sensor.pyi +3 -1
  80. homeassistant-stubs/components/home_connect/services.pyi +35 -0
  81. homeassistant-stubs/components/home_connect/switch.pyi +2 -1
  82. homeassistant-stubs/components/home_connect/time.pyi +6 -1
  83. homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +15 -0
  84. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +2 -1
  85. homeassistant-stubs/components/homeassistant_hardware/update.pyi +68 -0
  86. homeassistant-stubs/components/homeassistant_hardware/util.pyi +6 -1
  87. homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +7 -1
  88. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +1 -1
  89. homeassistant-stubs/components/homeassistant_sky_connect/const.pyi +10 -0
  90. homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +29 -0
  91. homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +1 -1
  92. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
  93. homeassistant-stubs/components/homeassistant_yellow/const.pyi +4 -0
  94. homeassistant-stubs/components/homeassistant_yellow/update.pyi +29 -0
  95. homeassistant-stubs/components/homee/binary_sensor.pyi +21 -0
  96. homeassistant-stubs/components/homee/button.pyi +1 -0
  97. homeassistant-stubs/components/homee/cover.pyi +1 -0
  98. homeassistant-stubs/components/homee/light.pyi +1 -0
  99. homeassistant-stubs/components/homee/lock.pyi +25 -0
  100. homeassistant-stubs/components/homee/number.pyi +1 -0
  101. homeassistant-stubs/components/homee/select.pyi +23 -0
  102. homeassistant-stubs/components/homee/sensor.pyi +2 -0
  103. homeassistant-stubs/components/homee/switch.pyi +2 -0
  104. homeassistant-stubs/components/homee/valve.pyi +1 -0
  105. homeassistant-stubs/components/homekit/__init__.pyi +3 -1
  106. homeassistant-stubs/components/homekit/accessories.pyi +1 -0
  107. homeassistant-stubs/components/homekit/type_switches.pyi +6 -0
  108. homeassistant-stubs/components/huawei_lte/__init__.pyi +1 -1
  109. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +7 -7
  110. homeassistant-stubs/components/incomfort/config_flow.pyi +1 -0
  111. homeassistant-stubs/components/iron_os/coordinator.pyi +2 -0
  112. homeassistant-stubs/components/iron_os/number.pyi +2 -0
  113. homeassistant-stubs/components/iron_os/select.pyi +3 -0
  114. homeassistant-stubs/components/jewish_calendar/__init__.pyi +9 -2
  115. homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +4 -4
  116. homeassistant-stubs/components/jewish_calendar/const.pyi +3 -0
  117. homeassistant-stubs/components/jewish_calendar/entity.pyi +2 -2
  118. homeassistant-stubs/components/jewish_calendar/sensor.pyi +5 -6
  119. homeassistant-stubs/components/jewish_calendar/service.pyi +10 -0
  120. homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -0
  121. homeassistant-stubs/components/linkplay/entity.pyi +0 -1
  122. homeassistant-stubs/components/linkplay/media_player.pyi +3 -2
  123. homeassistant-stubs/components/linkplay/utils.pyi +0 -32
  124. homeassistant-stubs/components/lovelace/__init__.pyi +3 -1
  125. homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
  126. homeassistant-stubs/components/mastodon/config_flow.pyi +2 -1
  127. homeassistant-stubs/components/mastodon/const.pyi +0 -7
  128. homeassistant-stubs/components/mastodon/coordinator.pyi +5 -5
  129. homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -1
  130. homeassistant-stubs/components/mastodon/entity.pyi +1 -1
  131. homeassistant-stubs/components/mastodon/notify.pyi +3 -2
  132. homeassistant-stubs/components/mastodon/sensor.pyi +2 -3
  133. homeassistant-stubs/components/mastodon/services.pyi +1 -0
  134. homeassistant-stubs/components/mastodon/utils.pyi +3 -2
  135. homeassistant-stubs/components/mcp/coordinator.pyi +2 -9
  136. homeassistant-stubs/components/mcp_server/config_flow.pyi +1 -1
  137. homeassistant-stubs/components/mcp_server/const.pyi +1 -2
  138. homeassistant-stubs/components/mcp_server/server.pyi +1 -0
  139. homeassistant-stubs/components/modbus/__init__.pyi +1 -1
  140. homeassistant-stubs/components/modbus/climate.pyi +6 -2
  141. homeassistant-stubs/components/modbus/const.pyi +10 -0
  142. homeassistant-stubs/components/mqtt/config_flow.pyi +95 -7
  143. homeassistant-stubs/components/mqtt/const.pyi +65 -0
  144. homeassistant-stubs/components/mqtt/cover.pyi +2 -0
  145. homeassistant-stubs/components/mqtt/entity.pyi +4 -4
  146. homeassistant-stubs/components/mqtt/lawn_mower.pyi +1 -2
  147. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -48
  148. homeassistant-stubs/components/mqtt/light/schema_json.pyi +1 -14
  149. homeassistant-stubs/components/mqtt/light/schema_template.pyi +3 -14
  150. homeassistant-stubs/components/mqtt/models.pyi +25 -1
  151. homeassistant-stubs/components/mqtt/sensor.pyi +6 -5
  152. homeassistant-stubs/components/mqtt/update.pyi +1 -1
  153. homeassistant-stubs/components/mqtt/util.pyi +2 -0
  154. homeassistant-stubs/components/mysensors/__init__.pyi +1 -1
  155. homeassistant-stubs/components/mysensors/binary_sensor.pyi +0 -1
  156. homeassistant-stubs/components/mysensors/climate.pyi +0 -1
  157. homeassistant-stubs/components/mysensors/const.pyi +0 -1
  158. homeassistant-stubs/components/mysensors/cover.pyi +1 -2
  159. homeassistant-stubs/components/mysensors/device_tracker.pyi +0 -1
  160. homeassistant-stubs/components/mysensors/gateway.pyi +1 -1
  161. homeassistant-stubs/components/mysensors/helpers.pyi +1 -3
  162. homeassistant-stubs/components/mysensors/light.pyi +4 -5
  163. homeassistant-stubs/components/mysensors/remote.pyi +0 -1
  164. homeassistant-stubs/components/mysensors/sensor.pyi +0 -1
  165. homeassistant-stubs/components/mysensors/switch.pyi +1 -2
  166. homeassistant-stubs/components/mysensors/text.pyi +0 -1
  167. homeassistant-stubs/components/nam/button.pyi +2 -0
  168. homeassistant-stubs/components/nam/const.pyi +1 -0
  169. homeassistant-stubs/components/nam/sensor.pyi +2 -2
  170. homeassistant-stubs/components/nest/media_source.pyi +5 -0
  171. homeassistant-stubs/components/nextdns/__init__.pyi +1 -1
  172. homeassistant-stubs/components/nextdns/button.pyi +2 -0
  173. homeassistant-stubs/components/nextdns/config_flow.pyi +1 -0
  174. homeassistant-stubs/components/nextdns/switch.pyi +1 -0
  175. homeassistant-stubs/components/nut/__init__.pyi +1 -0
  176. homeassistant-stubs/components/nut/button.pyi +14 -0
  177. homeassistant-stubs/components/nut/entity.pyi +19 -0
  178. homeassistant-stubs/components/nut/sensor.pyi +8 -13
  179. homeassistant-stubs/components/nut/switch.pyi +18 -0
  180. homeassistant-stubs/components/onboarding/views.pyi +2 -1
  181. homeassistant-stubs/components/onedrive/__init__.pyi +4 -0
  182. homeassistant-stubs/components/onedrive/backup.pyi +1 -1
  183. homeassistant-stubs/components/onedrive/services.pyi +15 -0
  184. homeassistant-stubs/components/openai_conversation/__init__.pyi +5 -1
  185. homeassistant-stubs/components/openai_conversation/config_flow.pyi +5 -2
  186. homeassistant-stubs/components/openai_conversation/const.pyi +22 -11
  187. homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -7
  188. homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +1 -0
  189. homeassistant-stubs/components/overkiz/water_heater/atlantic_domestic_hot_water_production_v2_io_component.pyi +41 -0
  190. homeassistant-stubs/components/purpleair/__init__.pyi +5 -10
  191. homeassistant-stubs/components/purpleair/const.pyi +6 -4
  192. homeassistant-stubs/components/purpleair/coordinator.pyi +3 -2
  193. homeassistant-stubs/components/purpleair/diagnostics.pyi +2 -4
  194. homeassistant-stubs/components/purpleair/entity.pyi +2 -3
  195. homeassistant-stubs/components/purpleair/sensor.pyi +4 -5
  196. homeassistant-stubs/components/pyload/__init__.pyi +12 -0
  197. homeassistant-stubs/components/pyload/button.pyi +32 -0
  198. homeassistant-stubs/components/pyload/config_flow.pyi +23 -0
  199. homeassistant-stubs/components/pyload/const.pyi +6 -0
  200. homeassistant-stubs/components/pyload/coordinator.pyi +34 -0
  201. homeassistant-stubs/components/pyload/diagnostics.pyi +10 -0
  202. homeassistant-stubs/components/pyload/entity.pyi +13 -0
  203. homeassistant-stubs/components/pyload/sensor.pyi +33 -0
  204. homeassistant-stubs/components/pyload/switch.pyi +37 -0
  205. homeassistant-stubs/components/qbus/climate.pyi +41 -0
  206. homeassistant-stubs/components/qbus/light.pyi +3 -3
  207. homeassistant-stubs/components/recorder/const.pyi +1 -0
  208. homeassistant-stubs/components/recorder/core.pyi +1 -2
  209. homeassistant-stubs/components/recorder/db_schema.pyi +3 -1
  210. homeassistant-stubs/components/recorder/migration.pyi +16 -2
  211. homeassistant-stubs/components/recorder/models/__init__.pyi +2 -2
  212. homeassistant-stubs/components/recorder/models/statistics.pyi +10 -2
  213. homeassistant-stubs/components/recorder/statistics.pyi +27 -9
  214. homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +5 -3
  215. homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
  216. homeassistant-stubs/components/remote_calendar/__init__.pyi +11 -0
  217. homeassistant-stubs/components/remote_calendar/calendar.pyi +26 -0
  218. homeassistant-stubs/components/remote_calendar/config_flow.pyi +13 -0
  219. homeassistant-stubs/components/remote_calendar/const.pyi +2 -0
  220. homeassistant-stubs/components/remote_calendar/coordinator.pyi +20 -0
  221. homeassistant-stubs/components/remote_calendar/diagnostics.pyi +5 -0
  222. homeassistant-stubs/components/renault/config_flow.pyi +1 -0
  223. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  224. homeassistant-stubs/components/reolink/binary_sensor.pyi +17 -1
  225. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  226. homeassistant-stubs/components/reolink/const.pyi +1 -0
  227. homeassistant-stubs/components/reolink/host.pyi +4 -4
  228. homeassistant-stubs/components/reolink/number.pyi +21 -1
  229. homeassistant-stubs/components/reolink/select.pyi +17 -1
  230. homeassistant-stubs/components/reolink/update.pyi +2 -1
  231. homeassistant-stubs/components/reolink/util.pyi +7 -0
  232. homeassistant-stubs/components/roborock/__init__.pyi +5 -3
  233. homeassistant-stubs/components/roborock/binary_sensor.pyi +4 -1
  234. homeassistant-stubs/components/roborock/button.pyi +11 -1
  235. homeassistant-stubs/components/roborock/config_flow.pyi +7 -3
  236. homeassistant-stubs/components/roborock/const.pyi +7 -1
  237. homeassistant-stubs/components/roborock/coordinator.pyi +18 -3
  238. homeassistant-stubs/components/roborock/entity.pyi +3 -1
  239. homeassistant-stubs/components/roborock/image.pyi +2 -7
  240. homeassistant-stubs/components/roborock/models.pyi +7 -0
  241. homeassistant-stubs/components/roborock/number.pyi +1 -0
  242. homeassistant-stubs/components/roborock/select.pyi +7 -5
  243. homeassistant-stubs/components/roborock/sensor.pyi +14 -1
  244. homeassistant-stubs/components/roborock/switch.pyi +2 -0
  245. homeassistant-stubs/components/roborock/time.pyi +1 -0
  246. homeassistant-stubs/components/roborock/vacuum.pyi +1 -1
  247. homeassistant-stubs/components/sensor/const.pyi +2 -0
  248. homeassistant-stubs/components/sensor/recorder.pyi +15 -3
  249. homeassistant-stubs/components/shelly/__init__.pyi +2 -2
  250. homeassistant-stubs/components/shelly/bluetooth/__init__.pyi +4 -2
  251. homeassistant-stubs/components/shelly/button.pyi +22 -7
  252. homeassistant-stubs/components/shelly/climate.pyi +1 -1
  253. homeassistant-stubs/components/shelly/config_flow.pyi +5 -5
  254. homeassistant-stubs/components/shelly/const.pyi +0 -1
  255. homeassistant-stubs/components/shelly/coordinator.pyi +5 -1
  256. homeassistant-stubs/components/shelly/diagnostics.pyi +1 -2
  257. homeassistant-stubs/components/shelly/entity.pyi +1 -3
  258. homeassistant-stubs/components/shelly/event.pyi +1 -1
  259. homeassistant-stubs/components/shelly/number.pyi +1 -1
  260. homeassistant-stubs/components/shelly/sensor.pyi +2 -2
  261. homeassistant-stubs/components/shelly/switch.pyi +14 -14
  262. homeassistant-stubs/components/shelly/update.pyi +1 -1
  263. homeassistant-stubs/components/shelly/utils.pyi +6 -2
  264. homeassistant-stubs/components/skybell/config_flow.pyi +3 -0
  265. homeassistant-stubs/components/smlight/__init__.pyi +0 -2
  266. homeassistant-stubs/components/smlight/sensor.pyi +5 -2
  267. homeassistant-stubs/components/smlight/update.pyi +0 -1
  268. homeassistant-stubs/components/squeezebox/browse_media.pyi +6 -11
  269. homeassistant-stubs/components/squeezebox/button.pyi +31 -0
  270. homeassistant-stubs/components/squeezebox/entity.pyi +8 -2
  271. homeassistant-stubs/components/squeezebox/media_player.pyi +3 -5
  272. homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -7
  273. homeassistant-stubs/components/synology_dsm/backup.pyi +3 -4
  274. homeassistant-stubs/components/synology_dsm/binary_sensor.pyi +2 -5
  275. homeassistant-stubs/components/synology_dsm/button.pyi +2 -3
  276. homeassistant-stubs/components/synology_dsm/camera.pyi +2 -4
  277. homeassistant-stubs/components/synology_dsm/config_flow.pyi +3 -2
  278. homeassistant-stubs/components/synology_dsm/coordinator.pyi +15 -5
  279. homeassistant-stubs/components/synology_dsm/diagnostics.pyi +3 -4
  280. homeassistant-stubs/components/synology_dsm/media_source.pyi +3 -1
  281. homeassistant-stubs/components/synology_dsm/repairs.pyi +2 -3
  282. homeassistant-stubs/components/synology_dsm/sensor.pyi +3 -5
  283. homeassistant-stubs/components/synology_dsm/service.pyi +1 -1
  284. homeassistant-stubs/components/synology_dsm/switch.pyi +2 -4
  285. homeassistant-stubs/components/synology_dsm/update.pyi +2 -5
  286. homeassistant-stubs/components/tibber/coordinator.pyi +1 -1
  287. homeassistant-stubs/components/todo/intent.pyi +8 -0
  288. homeassistant-stubs/components/trafikverket_ferry/config_flow.pyi +1 -0
  289. homeassistant-stubs/components/trafikverket_weatherstation/config_flow.pyi +3 -0
  290. homeassistant-stubs/components/tts/__init__.pyi +66 -51
  291. homeassistant-stubs/components/tts/entity.pyi +54 -0
  292. homeassistant-stubs/components/tts/media_source.pyi +1 -1
  293. homeassistant-stubs/components/update/__init__.pyi +2 -2
  294. homeassistant-stubs/components/usb/__init__.pyi +1 -5
  295. homeassistant-stubs/components/usb/utils.pyi +2 -0
  296. homeassistant-stubs/components/vodafone_station/__init__.pyi +11 -0
  297. homeassistant-stubs/components/vodafone_station/button.pyi +31 -0
  298. homeassistant-stubs/components/vodafone_station/config_flow.pyi +29 -0
  299. homeassistant-stubs/components/vodafone_station/const.pyi +9 -0
  300. homeassistant-stubs/components/vodafone_station/coordinator.pyi +43 -0
  301. homeassistant-stubs/components/vodafone_station/device_tracker.pyi +30 -0
  302. homeassistant-stubs/components/vodafone_station/diagnostics.pyi +10 -0
  303. homeassistant-stubs/components/vodafone_station/helpers.pyi +8 -0
  304. homeassistant-stubs/components/vodafone_station/sensor.pyi +38 -0
  305. homeassistant-stubs/components/zwave_js/__init__.pyi +5 -9
  306. homeassistant-stubs/components/zwave_js/api.pyi +15 -0
  307. homeassistant-stubs/components/zwave_js/config_flow.pyi +0 -1
  308. homeassistant-stubs/config_entries.pyi +2 -5
  309. homeassistant-stubs/helpers/backup.pyi +4 -1
  310. homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +14 -0
  311. homeassistant-stubs/helpers/config_validation.pyi +5 -2
  312. homeassistant-stubs/helpers/frame.pyi +14 -5
  313. homeassistant-stubs/helpers/intent.pyi +13 -4
  314. homeassistant-stubs/helpers/llm.pyi +7 -1
  315. homeassistant-stubs/helpers/script.pyi +1 -1
  316. homeassistant-stubs/helpers/selector.pyi +1 -0
  317. homeassistant-stubs/helpers/template.pyi +14 -1
  318. homeassistant-stubs/loader.pyi +18 -8
  319. homeassistant-stubs/scripts/check_config.pyi +0 -1
  320. homeassistant-stubs/util/logging.pyi +18 -1
  321. homeassistant-stubs/util/unit_conversion.pyi +3 -0
  322. homeassistant-stubs/util/unit_system.pyi +12 -10
  323. homeassistant-stubs/util/yaml/__init__.pyi +3 -4
  324. homeassistant-stubs/util/yaml/dumper.pyi +2 -8
  325. homeassistant-stubs/util/yaml/input.pyi +2 -9
  326. homeassistant-stubs/util/yaml/loader.pyi +4 -72
  327. homeassistant-stubs/util/yaml/objects.pyi +2 -26
  328. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/METADATA +2 -2
  329. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/RECORD +331 -270
  330. homeassistant-stubs/components/mcp_server/llm_api.pyi +0 -15
  331. homeassistant-stubs/components/synology_dsm/models.pyi +0 -10
  332. homeassistant-stubs/util/yaml/const.pyi +0 -1
  333. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/WHEEL +0 -0
  334. {homeassistant_stubs-2025.3.3.dist-info → homeassistant_stubs-2025.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,8 +1,7 @@
1
+ import datetime as dt
1
2
  from .entity import JewishCalendarConfigEntry as JewishCalendarConfigEntry, JewishCalendarEntity as JewishCalendarEntity
2
3
  from _typeshed import Incomplete
3
- from datetime import date as Date
4
- from hdate import HDate
5
- from hdate.zmanim import Zmanim
4
+ from hdate import HDateInfo, Zmanim
6
5
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription
7
6
  from homeassistant.const import EntityCategory as EntityCategory, SUN_EVENT_SUNSET as SUN_EVENT_SUNSET
8
7
  from homeassistant.core import HomeAssistant as HomeAssistant
@@ -22,12 +21,12 @@ class JewishCalendarSensor(JewishCalendarEntity, SensorEntity):
22
21
  def __init__(self, config_entry: JewishCalendarConfigEntry, description: SensorEntityDescription) -> None: ...
23
22
  _attr_native_value: Incomplete
24
23
  async def async_update(self) -> None: ...
25
- def make_zmanim(self, date: Date) -> Zmanim: ...
24
+ def make_zmanim(self, date: dt.date) -> Zmanim: ...
26
25
  @property
27
26
  def extra_state_attributes(self) -> dict[str, str]: ...
28
27
  _attr_options: Incomplete
29
- def get_state(self, daytime_date: HDate, after_shkia_date: HDate, after_tzais_date: HDate) -> Any | None: ...
28
+ def get_state(self, daytime_date: HDateInfo, after_shkia_date: HDateInfo, after_tzais_date: HDateInfo) -> Any | None: ...
30
29
 
31
30
  class JewishCalendarTimeSensor(JewishCalendarSensor):
32
31
  _attr_device_class: Incomplete
33
- def get_state(self, daytime_date: HDate, after_shkia_date: HDate, after_tzais_date: HDate) -> Any | None: ...
32
+ def get_state(self, daytime_date: HDateInfo, after_shkia_date: HDateInfo, after_tzais_date: HDateInfo) -> Any | None: ...
@@ -0,0 +1,10 @@
1
+ from .const import ATTR_DATE as ATTR_DATE, ATTR_NUSACH as ATTR_NUSACH, DOMAIN as DOMAIN, SERVICE_COUNT_OMER as SERVICE_COUNT_OMER
2
+ from _typeshed import Incomplete
3
+ from homeassistant.const import CONF_LANGUAGE as CONF_LANGUAGE
4
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
5
+ from homeassistant.helpers.selector import LanguageSelector as LanguageSelector, LanguageSelectorConfig as LanguageSelectorConfig
6
+
7
+ SUPPORTED_LANGUAGES: Incomplete
8
+ OMER_SCHEMA: Incomplete
9
+
10
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -11,6 +11,7 @@ from typing import final
11
11
 
12
12
  _LOGGER: Incomplete
13
13
  DATA_COMPONENT: HassKey[EntityComponent[LawnMowerEntity]]
14
+ ENTITY_ID_FORMAT: Incomplete
14
15
  PLATFORM_SCHEMA: Incomplete
15
16
  PLATFORM_SCHEMA_BASE: Incomplete
16
17
  SCAN_INTERVAL: Incomplete
@@ -1,5 +1,4 @@
1
1
  from . import DOMAIN as DOMAIN, LinkPlayRequestException as LinkPlayRequestException
2
- from .utils import MANUFACTURER_GENERIC as MANUFACTURER_GENERIC, get_info_from_project as get_info_from_project
3
2
  from _typeshed import Incomplete
4
3
  from collections.abc import Callable as Callable, Coroutine
5
4
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
@@ -21,23 +21,24 @@ SOURCE_MAP: dict[PlayingMode, str]
21
21
  SOURCE_MAP_INV: dict[str, PlayingMode]
22
22
  REPEAT_MAP: dict[LoopMode, RepeatMode]
23
23
  REPEAT_MAP_INV: dict[RepeatMode, LoopMode]
24
- EQUALIZER_MAP: dict[EqualizerMode, str]
25
24
  EQUALIZER_MAP_INV: dict[str, EqualizerMode]
26
25
  DEFAULT_FEATURES: MediaPlayerEntityFeature
27
26
  SEEKABLE_FEATURES: MediaPlayerEntityFeature
28
27
  SERVICE_PLAY_PRESET: str
29
28
  ATTR_PRESET_NUMBER: str
30
29
  SERVICE_PLAY_PRESET_SCHEMA: Incomplete
30
+ RETRY_POLL_MAXIMUM: int
31
31
 
32
32
  async def async_setup_entry(hass: HomeAssistant, entry: LinkPlayConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
33
33
 
34
34
  class LinkPlayMediaPlayerEntity(LinkPlayBaseEntity, MediaPlayerEntity):
35
- _attr_sound_mode_list: Incomplete
36
35
  _attr_device_class: Incomplete
37
36
  _attr_media_content_type: Incomplete
38
37
  _attr_name: Incomplete
39
38
  _attr_unique_id: Incomplete
39
+ _retry_count: int
40
40
  _attr_source_list: Incomplete
41
+ _attr_sound_mode_list: Incomplete
41
42
  def __init__(self, bridge: LinkPlayBridge) -> None: ...
42
43
  _attr_available: bool
43
44
  @exception_wrap
@@ -2,37 +2,5 @@ from .const import DATA_SESSION as DATA_SESSION, DOMAIN as DOMAIN
2
2
  from aiohttp import ClientSession as ClientSession
3
3
  from homeassistant.const import EVENT_HOMEASSISTANT_CLOSE as EVENT_HOMEASSISTANT_CLOSE
4
4
  from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
5
- from typing import Final
6
5
 
7
- MANUFACTURER_ARTSOUND: Final[str]
8
- MANUFACTURER_ARYLIC: Final[str]
9
- MANUFACTURER_IEAST: Final[str]
10
- MANUFACTURER_WIIM: Final[str]
11
- MANUFACTURER_GGMM: Final[str]
12
- MANUFACTURER_MEDION: Final[str]
13
- MANUFACTURER_GENERIC: Final[str]
14
- MODELS_ARTSOUND_SMART_ZONE4: Final[str]
15
- MODELS_ARTSOUND_SMART_HYDE: Final[str]
16
- MODELS_ARYLIC_S50: Final[str]
17
- MODELS_ARYLIC_S50_PRO: Final[str]
18
- MODELS_ARYLIC_A30: Final[str]
19
- MODELS_ARYLIC_A50: Final[str]
20
- MODELS_ARYLIC_A50S: Final[str]
21
- MODELS_ARYLIC_UP2STREAM_AMP: Final[str]
22
- MODELS_ARYLIC_UP2STREAM_AMP_2P1: Final[str]
23
- MODELS_ARYLIC_UP2STREAM_AMP_V3: Final[str]
24
- MODELS_ARYLIC_UP2STREAM_AMP_V4: Final[str]
25
- MODELS_ARYLIC_UP2STREAM_PRO: Final[str]
26
- MODELS_ARYLIC_UP2STREAM_PRO_V3: Final[str]
27
- MODELS_ARYLIC_S10P: Final[str]
28
- MODELS_ARYLIC_UP2STREAM_PLATE_AMP: Final[str]
29
- MODELS_IEAST_AUDIOCAST_M5: Final[str]
30
- MODELS_WIIM_AMP: Final[str]
31
- MODELS_WIIM_MINI: Final[str]
32
- MODELS_GGMM_GGMM_E2: Final[str]
33
- MODELS_MEDION_MD_43970: Final[str]
34
- MODELS_GENERIC: Final[str]
35
- PROJECTID_LOOKUP: Final[dict[str, tuple[str, str]]]
36
-
37
- def get_info_from_project(project: str) -> tuple[str, str]: ...
38
6
  async def async_get_client_session(hass: HomeAssistant) -> ClientSession: ...
@@ -3,7 +3,7 @@ from .const import CONF_ALLOW_SINGLE_WORD as CONF_ALLOW_SINGLE_WORD, CONF_ICON a
3
3
  from .system_health import system_health_info as system_health_info
4
4
  from _typeshed import Incomplete
5
5
  from dataclasses import dataclass
6
- from homeassistant.components import frontend as frontend, websocket_api as websocket_api
6
+ from homeassistant.components import frontend as frontend, onboarding as onboarding, websocket_api as websocket_api
7
7
  from homeassistant.config import async_hass_config_yaml as async_hass_config_yaml, async_process_component_and_handle_errors as async_process_component_and_handle_errors
8
8
  from homeassistant.const import CONF_FILENAME as CONF_FILENAME, CONF_MODE as CONF_MODE, CONF_RESOURCES as CONF_RESOURCES
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
@@ -11,6 +11,7 @@ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
11
  from homeassistant.helpers import collection as collection
12
12
  from homeassistant.helpers.frame import report_usage as report_usage
13
13
  from homeassistant.helpers.service import async_register_admin_service as async_register_admin_service
14
+ from homeassistant.helpers.translation import async_get_translations as async_get_translations
14
15
  from homeassistant.helpers.typing import ConfigType as ConfigType
15
16
  from homeassistant.loader import async_get_integration as async_get_integration
16
17
  from homeassistant.util import slugify as slugify
@@ -37,3 +38,4 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
37
38
  async def create_yaml_resource_col(hass: HomeAssistant, yaml_resources: list[ConfigType] | None) -> resources.ResourceYAMLCollection: ...
38
39
  @callback
39
40
  def _register_panel(hass: HomeAssistant, url_path: str | None, mode: str, config: dict, update: bool) -> None: ...
41
+ async def _create_map_dashboard(hass: HomeAssistant, dashboards_collection: dashboard.DashboardsCollection) -> None: ...
@@ -9,7 +9,7 @@ from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
9
9
  from homeassistant.helpers import discovery as discovery
10
10
  from homeassistant.helpers.typing import ConfigType as ConfigType
11
11
  from homeassistant.util import slugify as slugify
12
- from mastodon.Mastodon import Mastodon as Mastodon
12
+ from mastodon.Mastodon import Account as Account, Instance as Instance, InstanceV2 as InstanceV2, Mastodon as Mastodon
13
13
 
14
14
  PLATFORMS: list[Platform]
15
15
  CONFIG_SCHEMA: Incomplete
@@ -18,4 +18,4 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
18
18
  async def async_setup_entry(hass: HomeAssistant, entry: MastodonConfigEntry) -> bool: ...
19
19
  async def async_unload_entry(hass: HomeAssistant, entry: MastodonConfigEntry) -> bool: ...
20
20
  async def async_migrate_entry(hass: HomeAssistant, entry: MastodonConfigEntry) -> bool: ...
21
- def setup_mastodon(entry: MastodonConfigEntry) -> tuple[Mastodon, dict, dict]: ...
21
+ def setup_mastodon(entry: MastodonConfigEntry) -> tuple[Mastodon, InstanceV2 | Instance, Account]: ...
@@ -5,6 +5,7 @@ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowRes
5
5
  from homeassistant.const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, CONF_CLIENT_ID as CONF_CLIENT_ID, CONF_CLIENT_SECRET as CONF_CLIENT_SECRET
6
6
  from homeassistant.helpers.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
7
7
  from homeassistant.util import slugify as slugify
8
+ from mastodon.Mastodon import Account as Account, Instance as Instance
8
9
  from typing import Any
9
10
 
10
11
  STEP_USER_DATA_SCHEMA: Incomplete
@@ -14,6 +15,6 @@ def base_url_from_url(url: str) -> str: ...
14
15
  class MastodonConfigFlow(ConfigFlow, domain=DOMAIN):
15
16
  VERSION: int
16
17
  MINOR_VERSION: int
17
- def check_connection(self, base_url: str, client_id: str, client_secret: str, access_token: str) -> tuple[dict[str, str] | None, dict[str, str] | None, dict[str, str]]: ...
18
+ def check_connection(self, base_url: str, client_id: str, client_secret: str, access_token: str) -> tuple[Instance | None, Account | None, dict[str, str]]: ...
18
19
  def show_user_form(self, user_input: dict[str, Any] | None = None, errors: dict[str, str] | None = None, description_placeholders: dict[str, str] | None = None, step_id: str = 'user') -> ConfigFlowResult: ...
19
20
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -7,13 +7,6 @@ CONF_BASE_URL: Final[str]
7
7
  DATA_HASS_CONFIG: str
8
8
  DEFAULT_URL: Final[str]
9
9
  DEFAULT_NAME: Final[str]
10
- INSTANCE_VERSION: Final[str]
11
- INSTANCE_URI: Final[str]
12
- INSTANCE_DOMAIN: Final[str]
13
- ACCOUNT_USERNAME: Final[str]
14
- ACCOUNT_FOLLOWERS_COUNT: Final[str]
15
- ACCOUNT_FOLLOWING_COUNT: Final[str]
16
- ACCOUNT_STATUSES_COUNT: Final[str]
17
10
  ATTR_CONFIG_ENTRY_ID: str
18
11
  ATTR_STATUS: str
19
12
  ATTR_VISIBILITY: str
@@ -5,18 +5,18 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant
6
6
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
7
7
  from mastodon import Mastodon as Mastodon
8
- from typing import Any
8
+ from mastodon.Mastodon import Account, Instance as Instance, InstanceV2 as InstanceV2
9
9
 
10
10
  @dataclass
11
11
  class MastodonData:
12
12
  client: Mastodon
13
- instance: dict
14
- account: dict
13
+ instance: InstanceV2 | Instance
14
+ account: Account
15
15
  coordinator: MastodonCoordinator
16
16
  type MastodonConfigEntry = ConfigEntry[MastodonData]
17
17
 
18
- class MastodonCoordinator(DataUpdateCoordinator[dict[str, Any]]):
18
+ class MastodonCoordinator(DataUpdateCoordinator[Account]):
19
19
  config_entry: MastodonConfigEntry
20
20
  client: Incomplete
21
21
  def __init__(self, hass: HomeAssistant, config_entry: MastodonConfigEntry, client: Mastodon) -> None: ...
22
- async def _async_update_data(self) -> dict[str, Any]: ...
22
+ async def _async_update_data(self) -> Account: ...
@@ -1,6 +1,7 @@
1
1
  from .coordinator import MastodonConfigEntry as MastodonConfigEntry
2
2
  from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from mastodon.Mastodon import Account as Account, Instance as Instance
3
4
  from typing import Any
4
5
 
5
6
  async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: MastodonConfigEntry) -> dict[str, Any]: ...
6
- def get_diagnostics(config_entry: MastodonConfigEntry) -> tuple[dict, dict]: ...
7
+ def get_diagnostics(config_entry: MastodonConfigEntry) -> tuple[Instance, Account]: ...
@@ -1,4 +1,4 @@
1
- from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN, INSTANCE_VERSION as INSTANCE_VERSION
1
+ from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN
2
2
  from .coordinator import MastodonConfigEntry as MastodonConfigEntry, MastodonCoordinator as MastodonCoordinator
3
3
  from .utils import construct_mastodon_username as construct_mastodon_username
4
4
  from _typeshed import Incomplete
@@ -6,7 +6,8 @@ from homeassistant.const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, CONF_CLI
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
8
8
  from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
9
- from mastodon import Mastodon as Mastodon
9
+ from mastodon import Mastodon
10
+ from mastodon.Mastodon import MediaAttachment as MediaAttachment
10
11
  from typing import Any
11
12
 
12
13
  ATTR_MEDIA: str
@@ -20,4 +21,4 @@ class MastodonNotificationService(BaseNotificationService):
20
21
  client: Incomplete
21
22
  def __init__(self, hass: HomeAssistant, client: Mastodon) -> None: ...
22
23
  def send_message(self, message: str = '', **kwargs: Any) -> None: ...
23
- def _upload_media(self, media_path: Any = None) -> Any: ...
24
+ def _upload_media(self, media_path: Any = None) -> MediaAttachment: ...
@@ -1,4 +1,3 @@
1
- from .const import ACCOUNT_FOLLOWERS_COUNT as ACCOUNT_FOLLOWERS_COUNT, ACCOUNT_FOLLOWING_COUNT as ACCOUNT_FOLLOWING_COUNT, ACCOUNT_STATUSES_COUNT as ACCOUNT_STATUSES_COUNT
2
1
  from .coordinator import MastodonConfigEntry as MastodonConfigEntry
3
2
  from .entity import MastodonEntity as MastodonEntity
4
3
  from _typeshed import Incomplete
@@ -8,13 +7,13 @@ from homeassistant.components.sensor import SensorEntity as SensorEntity, Sensor
8
7
  from homeassistant.core import HomeAssistant as HomeAssistant
9
8
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
10
9
  from homeassistant.helpers.typing import StateType as StateType
11
- from typing import Any
10
+ from mastodon.Mastodon import Account as Account
12
11
 
13
12
  PARALLEL_UPDATES: int
14
13
 
15
14
  @dataclass(frozen=True, kw_only=True)
16
15
  class MastodonSensorEntityDescription(SensorEntityDescription):
17
- value_fn: Callable[[dict[str, Any]], StateType]
16
+ value_fn: Callable[[Account], StateType]
18
17
 
19
18
  ENTITY_DESCRIPTIONS: Incomplete
20
19
 
@@ -7,6 +7,7 @@ from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse
8
8
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
9
9
  from mastodon import Mastodon as Mastodon
10
+ from mastodon.Mastodon import MediaAttachment as MediaAttachment
10
11
 
11
12
  class StatusVisibility(StrEnum):
12
13
  PUBLIC = 'public'
@@ -1,7 +1,8 @@
1
- from .const import ACCOUNT_USERNAME as ACCOUNT_USERNAME, DEFAULT_NAME as DEFAULT_NAME, INSTANCE_DOMAIN as INSTANCE_DOMAIN, INSTANCE_URI as INSTANCE_URI
1
+ from .const import DEFAULT_NAME as DEFAULT_NAME
2
2
  from mastodon import Mastodon
3
+ from mastodon.Mastodon import Account as Account, Instance as Instance, InstanceV2
3
4
  from typing import Any
4
5
 
5
6
  def create_mastodon_client(base_url: str, client_id: str, client_secret: str, access_token: str) -> Mastodon: ...
6
- def construct_mastodon_username(instance: dict[str, str] | None, account: dict[str, str] | None) -> str: ...
7
+ def construct_mastodon_username(instance: InstanceV2 | Instance | None, account: Account | None) -> str: ...
7
8
  def get_media_type(media_path: Any = None) -> Any: ...
@@ -1,4 +1,3 @@
1
- import asyncio
2
1
  import voluptuous as vol
3
2
  from .const import DOMAIN as DOMAIN
4
3
  from _typeshed import Incomplete
@@ -24,17 +23,11 @@ class ModelContextProtocolTool(llm.Tool):
24
23
  name: Incomplete
25
24
  description: Incomplete
26
25
  parameters: Incomplete
27
- session: Incomplete
28
- def __init__(self, name: str, description: str | None, parameters: vol.Schema, session: ClientSession) -> None: ...
26
+ server_url: Incomplete
27
+ def __init__(self, name: str, description: str | None, parameters: vol.Schema, server_url: str) -> None: ...
29
28
  async def async_call(self, hass: HomeAssistant, tool_input: llm.ToolInput, llm_context: llm.LLMContext) -> JsonObjectType: ...
30
29
 
31
30
  class ModelContextProtocolCoordinator(DataUpdateCoordinator[list[llm.Tool]]):
32
31
  config_entry: ConfigEntry
33
- _session: ClientSession | None
34
- _setup_error: Exception | None
35
- _stop: Incomplete
36
32
  def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None: ...
37
- async def _async_setup(self) -> None: ...
38
- async def _connect(self, connected: asyncio.Event, stop: asyncio.Event) -> None: ...
39
- async def close(self) -> None: ...
40
33
  async def _async_update_data(self) -> list[llm.Tool]: ...
@@ -1,4 +1,4 @@
1
- from .const import DOMAIN as DOMAIN, LLM_API as LLM_API, LLM_API_NAME as LLM_API_NAME
1
+ from .const import DOMAIN as DOMAIN
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
4
4
  from homeassistant.const import CONF_LLM_HASS_API as CONF_LLM_HASS_API
@@ -1,4 +1,3 @@
1
1
  DOMAIN: str
2
2
  TITLE: str
3
- LLM_API: str
4
- LLM_API_NAME: str
3
+ STATELESS_LLM_API: str
@@ -1,3 +1,4 @@
1
+ from .const import STATELESS_LLM_API as STATELESS_LLM_API
1
2
  from _typeshed import Incomplete
2
3
  from collections.abc import Callable as Callable
3
4
  from homeassistant.core import HomeAssistant as HomeAssistant
@@ -1,4 +1,4 @@
1
- from .const import CALL_TYPE_COIL as CALL_TYPE_COIL, CALL_TYPE_DISCRETE as CALL_TYPE_DISCRETE, CALL_TYPE_REGISTER_HOLDING as CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT as CALL_TYPE_REGISTER_INPUT, CALL_TYPE_X_COILS as CALL_TYPE_X_COILS, CALL_TYPE_X_REGISTER_HOLDINGS as CALL_TYPE_X_REGISTER_HOLDINGS, CONF_BAUDRATE as CONF_BAUDRATE, CONF_BYTESIZE as CONF_BYTESIZE, CONF_CLIMATES as CONF_CLIMATES, CONF_DATA_TYPE as CONF_DATA_TYPE, CONF_DEVICE_ADDRESS as CONF_DEVICE_ADDRESS, CONF_FANS as CONF_FANS, CONF_FAN_MODE_AUTO as CONF_FAN_MODE_AUTO, CONF_FAN_MODE_DIFFUSE as CONF_FAN_MODE_DIFFUSE, CONF_FAN_MODE_FOCUS as CONF_FAN_MODE_FOCUS, CONF_FAN_MODE_HIGH as CONF_FAN_MODE_HIGH, CONF_FAN_MODE_LOW as CONF_FAN_MODE_LOW, CONF_FAN_MODE_MEDIUM as CONF_FAN_MODE_MEDIUM, CONF_FAN_MODE_MIDDLE as CONF_FAN_MODE_MIDDLE, CONF_FAN_MODE_OFF as CONF_FAN_MODE_OFF, CONF_FAN_MODE_ON as CONF_FAN_MODE_ON, CONF_FAN_MODE_REGISTER as CONF_FAN_MODE_REGISTER, CONF_FAN_MODE_TOP as CONF_FAN_MODE_TOP, CONF_FAN_MODE_VALUES as CONF_FAN_MODE_VALUES, CONF_HVAC_MODE_AUTO as CONF_HVAC_MODE_AUTO, CONF_HVAC_MODE_COOL as CONF_HVAC_MODE_COOL, CONF_HVAC_MODE_DRY as CONF_HVAC_MODE_DRY, CONF_HVAC_MODE_FAN_ONLY as CONF_HVAC_MODE_FAN_ONLY, CONF_HVAC_MODE_HEAT as CONF_HVAC_MODE_HEAT, CONF_HVAC_MODE_HEAT_COOL as CONF_HVAC_MODE_HEAT_COOL, CONF_HVAC_MODE_OFF as CONF_HVAC_MODE_OFF, CONF_HVAC_MODE_REGISTER as CONF_HVAC_MODE_REGISTER, CONF_HVAC_MODE_VALUES as CONF_HVAC_MODE_VALUES, CONF_HVAC_OFF_VALUE as CONF_HVAC_OFF_VALUE, CONF_HVAC_ONOFF_COIL as CONF_HVAC_ONOFF_COIL, CONF_HVAC_ONOFF_REGISTER as CONF_HVAC_ONOFF_REGISTER, CONF_HVAC_ON_VALUE as CONF_HVAC_ON_VALUE, CONF_INPUT_TYPE as CONF_INPUT_TYPE, CONF_MAX_TEMP as CONF_MAX_TEMP, CONF_MAX_VALUE as CONF_MAX_VALUE, CONF_MIN_TEMP as CONF_MIN_TEMP, CONF_MIN_VALUE as CONF_MIN_VALUE, CONF_MSG_WAIT as CONF_MSG_WAIT, CONF_NAN_VALUE as CONF_NAN_VALUE, CONF_PARITY as CONF_PARITY, CONF_PRECISION as CONF_PRECISION, CONF_SCALE as CONF_SCALE, CONF_SLAVE_COUNT as CONF_SLAVE_COUNT, CONF_STATE_CLOSED as CONF_STATE_CLOSED, CONF_STATE_CLOSING as CONF_STATE_CLOSING, CONF_STATE_OFF as CONF_STATE_OFF, CONF_STATE_ON as CONF_STATE_ON, CONF_STATE_OPEN as CONF_STATE_OPEN, CONF_STATE_OPENING as CONF_STATE_OPENING, CONF_STATUS_REGISTER as CONF_STATUS_REGISTER, CONF_STATUS_REGISTER_TYPE as CONF_STATUS_REGISTER_TYPE, CONF_STEP as CONF_STEP, CONF_STOPBITS as CONF_STOPBITS, CONF_SWAP as CONF_SWAP, CONF_SWAP_BYTE as CONF_SWAP_BYTE, CONF_SWAP_WORD as CONF_SWAP_WORD, CONF_SWAP_WORD_BYTE as CONF_SWAP_WORD_BYTE, CONF_SWING_MODE_REGISTER as CONF_SWING_MODE_REGISTER, CONF_SWING_MODE_SWING_BOTH as CONF_SWING_MODE_SWING_BOTH, CONF_SWING_MODE_SWING_HORIZ as CONF_SWING_MODE_SWING_HORIZ, CONF_SWING_MODE_SWING_OFF as CONF_SWING_MODE_SWING_OFF, CONF_SWING_MODE_SWING_ON as CONF_SWING_MODE_SWING_ON, CONF_SWING_MODE_SWING_VERT as CONF_SWING_MODE_SWING_VERT, CONF_SWING_MODE_VALUES as CONF_SWING_MODE_VALUES, CONF_TARGET_TEMP as CONF_TARGET_TEMP, CONF_TARGET_TEMP_WRITE_REGISTERS as CONF_TARGET_TEMP_WRITE_REGISTERS, CONF_VERIFY as CONF_VERIFY, CONF_VIRTUAL_COUNT as CONF_VIRTUAL_COUNT, CONF_WRITE_REGISTERS as CONF_WRITE_REGISTERS, CONF_WRITE_TYPE as CONF_WRITE_TYPE, CONF_ZERO_SUPPRESS as CONF_ZERO_SUPPRESS, DEFAULT_HUB as DEFAULT_HUB, DEFAULT_HVAC_OFF_VALUE as DEFAULT_HVAC_OFF_VALUE, DEFAULT_HVAC_ON_VALUE as DEFAULT_HVAC_ON_VALUE, DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DEFAULT_TEMP_UNIT as DEFAULT_TEMP_UNIT, DataType as DataType, RTUOVERTCP as RTUOVERTCP, SERIAL as SERIAL, TCP as TCP, UDP as UDP
1
+ from .const import CALL_TYPE_COIL as CALL_TYPE_COIL, CALL_TYPE_DISCRETE as CALL_TYPE_DISCRETE, CALL_TYPE_REGISTER_HOLDING as CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_REGISTER_INPUT as CALL_TYPE_REGISTER_INPUT, CALL_TYPE_X_COILS as CALL_TYPE_X_COILS, CALL_TYPE_X_REGISTER_HOLDINGS as CALL_TYPE_X_REGISTER_HOLDINGS, CONF_BAUDRATE as CONF_BAUDRATE, CONF_BYTESIZE as CONF_BYTESIZE, CONF_CLIMATES as CONF_CLIMATES, CONF_DATA_TYPE as CONF_DATA_TYPE, CONF_DEVICE_ADDRESS as CONF_DEVICE_ADDRESS, CONF_FANS as CONF_FANS, CONF_FAN_MODE_AUTO as CONF_FAN_MODE_AUTO, CONF_FAN_MODE_DIFFUSE as CONF_FAN_MODE_DIFFUSE, CONF_FAN_MODE_FOCUS as CONF_FAN_MODE_FOCUS, CONF_FAN_MODE_HIGH as CONF_FAN_MODE_HIGH, CONF_FAN_MODE_LOW as CONF_FAN_MODE_LOW, CONF_FAN_MODE_MEDIUM as CONF_FAN_MODE_MEDIUM, CONF_FAN_MODE_MIDDLE as CONF_FAN_MODE_MIDDLE, CONF_FAN_MODE_OFF as CONF_FAN_MODE_OFF, CONF_FAN_MODE_ON as CONF_FAN_MODE_ON, CONF_FAN_MODE_REGISTER as CONF_FAN_MODE_REGISTER, CONF_FAN_MODE_TOP as CONF_FAN_MODE_TOP, CONF_FAN_MODE_VALUES as CONF_FAN_MODE_VALUES, CONF_HVAC_ACTION_COOLING as CONF_HVAC_ACTION_COOLING, CONF_HVAC_ACTION_DEFROSTING as CONF_HVAC_ACTION_DEFROSTING, CONF_HVAC_ACTION_DRYING as CONF_HVAC_ACTION_DRYING, CONF_HVAC_ACTION_FAN as CONF_HVAC_ACTION_FAN, CONF_HVAC_ACTION_HEATING as CONF_HVAC_ACTION_HEATING, CONF_HVAC_ACTION_IDLE as CONF_HVAC_ACTION_IDLE, CONF_HVAC_ACTION_OFF as CONF_HVAC_ACTION_OFF, CONF_HVAC_ACTION_PREHEATING as CONF_HVAC_ACTION_PREHEATING, CONF_HVAC_ACTION_REGISTER as CONF_HVAC_ACTION_REGISTER, CONF_HVAC_ACTION_VALUES as CONF_HVAC_ACTION_VALUES, CONF_HVAC_MODE_AUTO as CONF_HVAC_MODE_AUTO, CONF_HVAC_MODE_COOL as CONF_HVAC_MODE_COOL, CONF_HVAC_MODE_DRY as CONF_HVAC_MODE_DRY, CONF_HVAC_MODE_FAN_ONLY as CONF_HVAC_MODE_FAN_ONLY, CONF_HVAC_MODE_HEAT as CONF_HVAC_MODE_HEAT, CONF_HVAC_MODE_HEAT_COOL as CONF_HVAC_MODE_HEAT_COOL, CONF_HVAC_MODE_OFF as CONF_HVAC_MODE_OFF, CONF_HVAC_MODE_REGISTER as CONF_HVAC_MODE_REGISTER, CONF_HVAC_MODE_VALUES as CONF_HVAC_MODE_VALUES, CONF_HVAC_OFF_VALUE as CONF_HVAC_OFF_VALUE, CONF_HVAC_ONOFF_COIL as CONF_HVAC_ONOFF_COIL, CONF_HVAC_ONOFF_REGISTER as CONF_HVAC_ONOFF_REGISTER, CONF_HVAC_ON_VALUE as CONF_HVAC_ON_VALUE, CONF_INPUT_TYPE as CONF_INPUT_TYPE, CONF_MAX_TEMP as CONF_MAX_TEMP, CONF_MAX_VALUE as CONF_MAX_VALUE, CONF_MIN_TEMP as CONF_MIN_TEMP, CONF_MIN_VALUE as CONF_MIN_VALUE, CONF_MSG_WAIT as CONF_MSG_WAIT, CONF_NAN_VALUE as CONF_NAN_VALUE, CONF_PARITY as CONF_PARITY, CONF_PRECISION as CONF_PRECISION, CONF_SCALE as CONF_SCALE, CONF_SLAVE_COUNT as CONF_SLAVE_COUNT, CONF_STATE_CLOSED as CONF_STATE_CLOSED, CONF_STATE_CLOSING as CONF_STATE_CLOSING, CONF_STATE_OFF as CONF_STATE_OFF, CONF_STATE_ON as CONF_STATE_ON, CONF_STATE_OPEN as CONF_STATE_OPEN, CONF_STATE_OPENING as CONF_STATE_OPENING, CONF_STATUS_REGISTER as CONF_STATUS_REGISTER, CONF_STATUS_REGISTER_TYPE as CONF_STATUS_REGISTER_TYPE, CONF_STEP as CONF_STEP, CONF_STOPBITS as CONF_STOPBITS, CONF_SWAP as CONF_SWAP, CONF_SWAP_BYTE as CONF_SWAP_BYTE, CONF_SWAP_WORD as CONF_SWAP_WORD, CONF_SWAP_WORD_BYTE as CONF_SWAP_WORD_BYTE, CONF_SWING_MODE_REGISTER as CONF_SWING_MODE_REGISTER, CONF_SWING_MODE_SWING_BOTH as CONF_SWING_MODE_SWING_BOTH, CONF_SWING_MODE_SWING_HORIZ as CONF_SWING_MODE_SWING_HORIZ, CONF_SWING_MODE_SWING_OFF as CONF_SWING_MODE_SWING_OFF, CONF_SWING_MODE_SWING_ON as CONF_SWING_MODE_SWING_ON, CONF_SWING_MODE_SWING_VERT as CONF_SWING_MODE_SWING_VERT, CONF_SWING_MODE_VALUES as CONF_SWING_MODE_VALUES, CONF_TARGET_TEMP as CONF_TARGET_TEMP, CONF_TARGET_TEMP_WRITE_REGISTERS as CONF_TARGET_TEMP_WRITE_REGISTERS, CONF_VERIFY as CONF_VERIFY, CONF_VIRTUAL_COUNT as CONF_VIRTUAL_COUNT, CONF_WRITE_REGISTERS as CONF_WRITE_REGISTERS, CONF_WRITE_TYPE as CONF_WRITE_TYPE, CONF_ZERO_SUPPRESS as CONF_ZERO_SUPPRESS, DEFAULT_HUB as DEFAULT_HUB, DEFAULT_HVAC_OFF_VALUE as DEFAULT_HVAC_OFF_VALUE, DEFAULT_HVAC_ON_VALUE as DEFAULT_HVAC_ON_VALUE, DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DEFAULT_TEMP_UNIT as DEFAULT_TEMP_UNIT, DataType as DataType, RTUOVERTCP as RTUOVERTCP, SERIAL as SERIAL, TCP as TCP, UDP as UDP
2
2
  from .modbus import DATA_MODBUS_HUBS as DATA_MODBUS_HUBS, ModbusHub as ModbusHub, async_modbus_setup as async_modbus_setup
3
3
  from .validators import duplicate_fan_mode_validator as duplicate_fan_mode_validator, duplicate_swing_mode_validator as duplicate_swing_mode_validator, hvac_fixedsize_reglist_validator as hvac_fixedsize_reglist_validator, nan_validator as nan_validator, register_int_list_validator as register_int_list_validator, struct_validator as struct_validator
4
4
  from _typeshed import Incomplete
@@ -1,9 +1,9 @@
1
1
  from . import get_hub as get_hub
2
- from .const import CALL_TYPE_COIL as CALL_TYPE_COIL, CALL_TYPE_REGISTER_HOLDING as CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_WRITE_COIL as CALL_TYPE_WRITE_COIL, CALL_TYPE_WRITE_REGISTER as CALL_TYPE_WRITE_REGISTER, CALL_TYPE_WRITE_REGISTERS as CALL_TYPE_WRITE_REGISTERS, CONF_CLIMATES as CONF_CLIMATES, CONF_FAN_MODE_AUTO as CONF_FAN_MODE_AUTO, CONF_FAN_MODE_DIFFUSE as CONF_FAN_MODE_DIFFUSE, CONF_FAN_MODE_FOCUS as CONF_FAN_MODE_FOCUS, CONF_FAN_MODE_HIGH as CONF_FAN_MODE_HIGH, CONF_FAN_MODE_LOW as CONF_FAN_MODE_LOW, CONF_FAN_MODE_MEDIUM as CONF_FAN_MODE_MEDIUM, CONF_FAN_MODE_MIDDLE as CONF_FAN_MODE_MIDDLE, CONF_FAN_MODE_OFF as CONF_FAN_MODE_OFF, CONF_FAN_MODE_ON as CONF_FAN_MODE_ON, CONF_FAN_MODE_REGISTER as CONF_FAN_MODE_REGISTER, CONF_FAN_MODE_TOP as CONF_FAN_MODE_TOP, CONF_FAN_MODE_VALUES as CONF_FAN_MODE_VALUES, CONF_HVAC_MODE_AUTO as CONF_HVAC_MODE_AUTO, CONF_HVAC_MODE_COOL as CONF_HVAC_MODE_COOL, CONF_HVAC_MODE_DRY as CONF_HVAC_MODE_DRY, CONF_HVAC_MODE_FAN_ONLY as CONF_HVAC_MODE_FAN_ONLY, CONF_HVAC_MODE_HEAT as CONF_HVAC_MODE_HEAT, CONF_HVAC_MODE_HEAT_COOL as CONF_HVAC_MODE_HEAT_COOL, CONF_HVAC_MODE_OFF as CONF_HVAC_MODE_OFF, CONF_HVAC_MODE_REGISTER as CONF_HVAC_MODE_REGISTER, CONF_HVAC_MODE_VALUES as CONF_HVAC_MODE_VALUES, CONF_HVAC_OFF_VALUE as CONF_HVAC_OFF_VALUE, CONF_HVAC_ONOFF_COIL as CONF_HVAC_ONOFF_COIL, CONF_HVAC_ONOFF_REGISTER as CONF_HVAC_ONOFF_REGISTER, CONF_HVAC_ON_VALUE as CONF_HVAC_ON_VALUE, CONF_MAX_TEMP as CONF_MAX_TEMP, CONF_MIN_TEMP as CONF_MIN_TEMP, CONF_STEP as CONF_STEP, CONF_SWING_MODE_REGISTER as CONF_SWING_MODE_REGISTER, CONF_SWING_MODE_SWING_BOTH as CONF_SWING_MODE_SWING_BOTH, CONF_SWING_MODE_SWING_HORIZ as CONF_SWING_MODE_SWING_HORIZ, CONF_SWING_MODE_SWING_OFF as CONF_SWING_MODE_SWING_OFF, CONF_SWING_MODE_SWING_ON as CONF_SWING_MODE_SWING_ON, CONF_SWING_MODE_SWING_VERT as CONF_SWING_MODE_SWING_VERT, CONF_SWING_MODE_VALUES as CONF_SWING_MODE_VALUES, CONF_TARGET_TEMP as CONF_TARGET_TEMP, CONF_TARGET_TEMP_WRITE_REGISTERS as CONF_TARGET_TEMP_WRITE_REGISTERS, CONF_WRITE_REGISTERS as CONF_WRITE_REGISTERS, DataType as DataType
2
+ from .const import CALL_TYPE_COIL as CALL_TYPE_COIL, CALL_TYPE_REGISTER_HOLDING as CALL_TYPE_REGISTER_HOLDING, CALL_TYPE_WRITE_COIL as CALL_TYPE_WRITE_COIL, CALL_TYPE_WRITE_REGISTER as CALL_TYPE_WRITE_REGISTER, CALL_TYPE_WRITE_REGISTERS as CALL_TYPE_WRITE_REGISTERS, CONF_CLIMATES as CONF_CLIMATES, CONF_FAN_MODE_AUTO as CONF_FAN_MODE_AUTO, CONF_FAN_MODE_DIFFUSE as CONF_FAN_MODE_DIFFUSE, CONF_FAN_MODE_FOCUS as CONF_FAN_MODE_FOCUS, CONF_FAN_MODE_HIGH as CONF_FAN_MODE_HIGH, CONF_FAN_MODE_LOW as CONF_FAN_MODE_LOW, CONF_FAN_MODE_MEDIUM as CONF_FAN_MODE_MEDIUM, CONF_FAN_MODE_MIDDLE as CONF_FAN_MODE_MIDDLE, CONF_FAN_MODE_OFF as CONF_FAN_MODE_OFF, CONF_FAN_MODE_ON as CONF_FAN_MODE_ON, CONF_FAN_MODE_REGISTER as CONF_FAN_MODE_REGISTER, CONF_FAN_MODE_TOP as CONF_FAN_MODE_TOP, CONF_FAN_MODE_VALUES as CONF_FAN_MODE_VALUES, CONF_HVAC_ACTION_COOLING as CONF_HVAC_ACTION_COOLING, CONF_HVAC_ACTION_DEFROSTING as CONF_HVAC_ACTION_DEFROSTING, CONF_HVAC_ACTION_DRYING as CONF_HVAC_ACTION_DRYING, CONF_HVAC_ACTION_FAN as CONF_HVAC_ACTION_FAN, CONF_HVAC_ACTION_HEATING as CONF_HVAC_ACTION_HEATING, CONF_HVAC_ACTION_IDLE as CONF_HVAC_ACTION_IDLE, CONF_HVAC_ACTION_OFF as CONF_HVAC_ACTION_OFF, CONF_HVAC_ACTION_PREHEATING as CONF_HVAC_ACTION_PREHEATING, CONF_HVAC_ACTION_REGISTER as CONF_HVAC_ACTION_REGISTER, CONF_HVAC_ACTION_VALUES as CONF_HVAC_ACTION_VALUES, CONF_HVAC_MODE_AUTO as CONF_HVAC_MODE_AUTO, CONF_HVAC_MODE_COOL as CONF_HVAC_MODE_COOL, CONF_HVAC_MODE_DRY as CONF_HVAC_MODE_DRY, CONF_HVAC_MODE_FAN_ONLY as CONF_HVAC_MODE_FAN_ONLY, CONF_HVAC_MODE_HEAT as CONF_HVAC_MODE_HEAT, CONF_HVAC_MODE_HEAT_COOL as CONF_HVAC_MODE_HEAT_COOL, CONF_HVAC_MODE_OFF as CONF_HVAC_MODE_OFF, CONF_HVAC_MODE_REGISTER as CONF_HVAC_MODE_REGISTER, CONF_HVAC_MODE_VALUES as CONF_HVAC_MODE_VALUES, CONF_HVAC_OFF_VALUE as CONF_HVAC_OFF_VALUE, CONF_HVAC_ONOFF_COIL as CONF_HVAC_ONOFF_COIL, CONF_HVAC_ONOFF_REGISTER as CONF_HVAC_ONOFF_REGISTER, CONF_HVAC_ON_VALUE as CONF_HVAC_ON_VALUE, CONF_INPUT_TYPE as CONF_INPUT_TYPE, CONF_MAX_TEMP as CONF_MAX_TEMP, CONF_MIN_TEMP as CONF_MIN_TEMP, CONF_STEP as CONF_STEP, CONF_SWING_MODE_REGISTER as CONF_SWING_MODE_REGISTER, CONF_SWING_MODE_SWING_BOTH as CONF_SWING_MODE_SWING_BOTH, CONF_SWING_MODE_SWING_HORIZ as CONF_SWING_MODE_SWING_HORIZ, CONF_SWING_MODE_SWING_OFF as CONF_SWING_MODE_SWING_OFF, CONF_SWING_MODE_SWING_ON as CONF_SWING_MODE_SWING_ON, CONF_SWING_MODE_SWING_VERT as CONF_SWING_MODE_SWING_VERT, CONF_SWING_MODE_VALUES as CONF_SWING_MODE_VALUES, CONF_TARGET_TEMP as CONF_TARGET_TEMP, CONF_TARGET_TEMP_WRITE_REGISTERS as CONF_TARGET_TEMP_WRITE_REGISTERS, CONF_WRITE_REGISTERS as CONF_WRITE_REGISTERS, DataType as DataType
3
3
  from .entity import BaseStructPlatform as BaseStructPlatform
4
4
  from .modbus import ModbusHub as ModbusHub
5
5
  from _typeshed import Incomplete
6
- from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, FAN_AUTO as FAN_AUTO, FAN_DIFFUSE as FAN_DIFFUSE, FAN_FOCUS as FAN_FOCUS, FAN_HIGH as FAN_HIGH, FAN_LOW as FAN_LOW, FAN_MEDIUM as FAN_MEDIUM, FAN_MIDDLE as FAN_MIDDLE, FAN_OFF as FAN_OFF, FAN_ON as FAN_ON, FAN_TOP as FAN_TOP, HVACMode as HVACMode, SWING_BOTH as SWING_BOTH, SWING_HORIZONTAL as SWING_HORIZONTAL, SWING_OFF as SWING_OFF, SWING_ON as SWING_ON, SWING_VERTICAL as SWING_VERTICAL
6
+ from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, FAN_AUTO as FAN_AUTO, FAN_DIFFUSE as FAN_DIFFUSE, FAN_FOCUS as FAN_FOCUS, FAN_HIGH as FAN_HIGH, FAN_LOW as FAN_LOW, FAN_MEDIUM as FAN_MEDIUM, FAN_MIDDLE as FAN_MIDDLE, FAN_OFF as FAN_OFF, FAN_ON as FAN_ON, FAN_TOP as FAN_TOP, HVACAction as HVACAction, HVACMode as HVACMode, SWING_BOTH as SWING_BOTH, SWING_HORIZONTAL as SWING_HORIZONTAL, SWING_OFF as SWING_OFF, SWING_ON as SWING_ON, SWING_VERTICAL as SWING_VERTICAL
7
7
  from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, CONF_ADDRESS as CONF_ADDRESS, CONF_NAME as CONF_NAME, CONF_TEMPERATURE_UNIT as CONF_TEMPERATURE_UNIT, PRECISION_TENTHS as PRECISION_TENTHS, PRECISION_WHOLE as PRECISION_WHOLE, STATE_UNKNOWN as STATE_UNKNOWN, UnitOfTemperature as UnitOfTemperature
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
@@ -34,6 +34,10 @@ class ModbusThermostat(BaseStructPlatform, RestoreEntity, ClimateEntity):
34
34
  _attr_hvac_mode: Incomplete
35
35
  _hvac_mode_mapping: list[tuple[int, HVACMode]]
36
36
  _hvac_mode_write_registers: Incomplete
37
+ _hvac_action_register: Incomplete
38
+ _hvac_action_type: Incomplete
39
+ _attr_hvac_action: Incomplete
40
+ _hvac_action_mapping: list[tuple[int, HVACAction]]
37
41
  _fan_mode_register: Incomplete
38
42
  _attr_fan_modes: Incomplete
39
43
  _attr_fan_mode: Incomplete
@@ -52,6 +52,16 @@ CONF_HVAC_ONOFF_REGISTER: str
52
52
  CONF_HVAC_ON_VALUE: str
53
53
  CONF_HVAC_OFF_VALUE: str
54
54
  CONF_HVAC_ONOFF_COIL: str
55
+ CONF_HVAC_ACTION_REGISTER: str
56
+ CONF_HVAC_ACTION_COOLING: str
57
+ CONF_HVAC_ACTION_DEFROSTING: str
58
+ CONF_HVAC_ACTION_DRYING: str
59
+ CONF_HVAC_ACTION_FAN: str
60
+ CONF_HVAC_ACTION_HEATING: str
61
+ CONF_HVAC_ACTION_IDLE: str
62
+ CONF_HVAC_ACTION_OFF: str
63
+ CONF_HVAC_ACTION_PREHEATING: str
64
+ CONF_HVAC_ACTION_VALUES: str
55
65
  CONF_HVAC_MODE_OFF: str
56
66
  CONF_HVAC_MODE_HEAT: str
57
67
  CONF_HVAC_MODE_COOL: str
@@ -1,20 +1,26 @@
1
1
  import asyncio
2
+ import voluptuous as vol
2
3
  from .addon import get_addon_manager as get_addon_manager
3
4
  from .client import MqttClientSetup as MqttClientSetup
4
- from .const import ATTR_PAYLOAD as ATTR_PAYLOAD, ATTR_QOS as ATTR_QOS, ATTR_RETAIN as ATTR_RETAIN, ATTR_TOPIC as ATTR_TOPIC, CONFIG_ENTRY_MINOR_VERSION as CONFIG_ENTRY_MINOR_VERSION, CONFIG_ENTRY_VERSION as CONFIG_ENTRY_VERSION, CONF_BIRTH_MESSAGE as CONF_BIRTH_MESSAGE, CONF_BROKER as CONF_BROKER, CONF_CERTIFICATE as CONF_CERTIFICATE, CONF_CLIENT_CERT as CONF_CLIENT_CERT, CONF_CLIENT_KEY as CONF_CLIENT_KEY, CONF_DISCOVERY_PREFIX as CONF_DISCOVERY_PREFIX, CONF_KEEPALIVE as CONF_KEEPALIVE, CONF_TLS_INSECURE as CONF_TLS_INSECURE, CONF_TRANSPORT as CONF_TRANSPORT, CONF_WILL_MESSAGE as CONF_WILL_MESSAGE, CONF_WS_HEADERS as CONF_WS_HEADERS, CONF_WS_PATH as CONF_WS_PATH, DEFAULT_BIRTH as DEFAULT_BIRTH, DEFAULT_DISCOVERY as DEFAULT_DISCOVERY, DEFAULT_ENCODING as DEFAULT_ENCODING, DEFAULT_KEEPALIVE as DEFAULT_KEEPALIVE, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_PREFIX as DEFAULT_PREFIX, DEFAULT_PROTOCOL as DEFAULT_PROTOCOL, DEFAULT_TRANSPORT as DEFAULT_TRANSPORT, DEFAULT_WILL as DEFAULT_WILL, DEFAULT_WS_PATH as DEFAULT_WS_PATH, DOMAIN as DOMAIN, SUPPORTED_PROTOCOLS as SUPPORTED_PROTOCOLS, TRANSPORT_TCP as TRANSPORT_TCP, TRANSPORT_WEBSOCKETS as TRANSPORT_WEBSOCKETS
5
- from .util import async_create_certificate_temp_files as async_create_certificate_temp_files, get_file_path as get_file_path, valid_birth_will as valid_birth_will, valid_publish_topic as valid_publish_topic
5
+ from .const import ATTR_PAYLOAD as ATTR_PAYLOAD, ATTR_QOS as ATTR_QOS, ATTR_RETAIN as ATTR_RETAIN, ATTR_TOPIC as ATTR_TOPIC, CONFIG_ENTRY_MINOR_VERSION as CONFIG_ENTRY_MINOR_VERSION, CONFIG_ENTRY_VERSION as CONFIG_ENTRY_VERSION, CONF_AVAILABILITY_TEMPLATE as CONF_AVAILABILITY_TEMPLATE, CONF_AVAILABILITY_TOPIC as CONF_AVAILABILITY_TOPIC, CONF_BIRTH_MESSAGE as CONF_BIRTH_MESSAGE, CONF_BROKER as CONF_BROKER, CONF_CERTIFICATE as CONF_CERTIFICATE, CONF_CLIENT_CERT as CONF_CLIENT_CERT, CONF_CLIENT_KEY as CONF_CLIENT_KEY, CONF_COMMAND_TEMPLATE as CONF_COMMAND_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_DISCOVERY_PREFIX as CONF_DISCOVERY_PREFIX, CONF_ENTITY_PICTURE as CONF_ENTITY_PICTURE, CONF_EXPIRE_AFTER as CONF_EXPIRE_AFTER, CONF_KEEPALIVE as CONF_KEEPALIVE, CONF_LAST_RESET_VALUE_TEMPLATE as CONF_LAST_RESET_VALUE_TEMPLATE, CONF_OPTIONS as CONF_OPTIONS, CONF_PAYLOAD_AVAILABLE as CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE as CONF_PAYLOAD_NOT_AVAILABLE, CONF_QOS as CONF_QOS, CONF_RETAIN as CONF_RETAIN, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_SUGGESTED_DISPLAY_PRECISION as CONF_SUGGESTED_DISPLAY_PRECISION, CONF_TLS_INSECURE as CONF_TLS_INSECURE, CONF_TRANSPORT as CONF_TRANSPORT, CONF_WILL_MESSAGE as CONF_WILL_MESSAGE, CONF_WS_HEADERS as CONF_WS_HEADERS, CONF_WS_PATH as CONF_WS_PATH, DEFAULT_BIRTH as DEFAULT_BIRTH, DEFAULT_DISCOVERY as DEFAULT_DISCOVERY, DEFAULT_ENCODING as DEFAULT_ENCODING, DEFAULT_KEEPALIVE as DEFAULT_KEEPALIVE, DEFAULT_PAYLOAD_AVAILABLE as DEFAULT_PAYLOAD_AVAILABLE, DEFAULT_PAYLOAD_NOT_AVAILABLE as DEFAULT_PAYLOAD_NOT_AVAILABLE, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_PREFIX as DEFAULT_PREFIX, DEFAULT_PROTOCOL as DEFAULT_PROTOCOL, DEFAULT_QOS as DEFAULT_QOS, DEFAULT_TRANSPORT as DEFAULT_TRANSPORT, DEFAULT_WILL as DEFAULT_WILL, DEFAULT_WS_PATH as DEFAULT_WS_PATH, DOMAIN as DOMAIN, Platform as Platform, SUPPORTED_PROTOCOLS as SUPPORTED_PROTOCOLS, TRANSPORT_TCP as TRANSPORT_TCP, TRANSPORT_WEBSOCKETS as TRANSPORT_WEBSOCKETS
6
+ from .models import MqttAvailabilityData as MqttAvailabilityData, MqttDeviceData as MqttDeviceData, MqttSubentryData as MqttSubentryData
7
+ from .util import async_create_certificate_temp_files as async_create_certificate_temp_files, get_file_path as get_file_path, learn_more_url as learn_more_url, valid_birth_will as valid_birth_will, valid_publish_topic as valid_publish_topic, valid_subscribe_topic as valid_subscribe_topic, valid_subscribe_topic_template as valid_subscribe_topic_template
6
8
  from _typeshed import Incomplete
7
9
  from collections import OrderedDict
8
10
  from collections.abc import Callable as Callable, Mapping
11
+ from dataclasses import dataclass
12
+ from enum import IntEnum
9
13
  from homeassistant.components.file_upload import process_uploaded_file as process_uploaded_file
10
14
  from homeassistant.components.hassio import AddonError as AddonError, AddonManager as AddonManager, AddonState as AddonState
11
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow, SOURCE_RECONFIGURE as SOURCE_RECONFIGURE
12
- from homeassistant.const import CONF_CLIENT_ID as CONF_CLIENT_ID, CONF_DISCOVERY as CONF_DISCOVERY, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PAYLOAD as CONF_PAYLOAD, CONF_PORT as CONF_PORT, CONF_PROTOCOL as CONF_PROTOCOL, CONF_USERNAME as CONF_USERNAME
15
+ from homeassistant.components.sensor import CONF_STATE_CLASS as CONF_STATE_CLASS, DEVICE_CLASS_UNITS as DEVICE_CLASS_UNITS, SensorDeviceClass as SensorDeviceClass, SensorStateClass as SensorStateClass
16
+ from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass
17
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryFlow as ConfigSubentryFlow, OptionsFlow as OptionsFlow, SOURCE_RECONFIGURE as SOURCE_RECONFIGURE, SubentryFlowResult as SubentryFlowResult
18
+ from homeassistant.const import ATTR_CONFIGURATION_URL as ATTR_CONFIGURATION_URL, ATTR_HW_VERSION as ATTR_HW_VERSION, ATTR_MODEL as ATTR_MODEL, ATTR_MODEL_ID as ATTR_MODEL_ID, ATTR_NAME as ATTR_NAME, ATTR_SW_VERSION as ATTR_SW_VERSION, CONF_CLIENT_ID as CONF_CLIENT_ID, CONF_DEVICE as CONF_DEVICE, CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_DISCOVERY as CONF_DISCOVERY, CONF_HOST as CONF_HOST, CONF_NAME as CONF_NAME, CONF_OPTIMISTIC as CONF_OPTIMISTIC, CONF_PASSWORD as CONF_PASSWORD, CONF_PAYLOAD as CONF_PAYLOAD, CONF_PLATFORM as CONF_PLATFORM, CONF_PORT as CONF_PORT, CONF_PROTOCOL as CONF_PROTOCOL, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_USERNAME as CONF_USERNAME, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE
13
19
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
14
- from homeassistant.data_entry_flow import AbortFlow as AbortFlow
20
+ from homeassistant.data_entry_flow import AbortFlow as AbortFlow, SectionConfig as SectionConfig, section as section
15
21
  from homeassistant.helpers.hassio import is_hassio as is_hassio
16
22
  from homeassistant.helpers.json import json_dumps as json_dumps
17
- from homeassistant.helpers.selector import BooleanSelector as BooleanSelector, FileSelector as FileSelector, FileSelectorConfig as FileSelectorConfig, NumberSelector as NumberSelector, NumberSelectorConfig as NumberSelectorConfig, NumberSelectorMode as NumberSelectorMode, SelectOptionDict as SelectOptionDict, SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, SelectSelectorMode as SelectSelectorMode, TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
23
+ from homeassistant.helpers.selector import BooleanSelector as BooleanSelector, FileSelector as FileSelector, FileSelectorConfig as FileSelectorConfig, NumberSelector as NumberSelector, NumberSelectorConfig as NumberSelectorConfig, NumberSelectorMode as NumberSelectorMode, SelectOptionDict as SelectOptionDict, SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, SelectSelectorMode as SelectSelectorMode, Selector as Selector, TemplateSelector as TemplateSelector, TemplateSelectorConfig as TemplateSelectorConfig, TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
18
24
  from homeassistant.helpers.service_info.hassio import HassioServiceInfo as HassioServiceInfo
19
25
  from homeassistant.util.json import JSON_DECODE_EXCEPTIONS as JSON_DECODE_EXCEPTIONS, json_loads as json_loads
20
26
  from types import MappingProxyType
@@ -23,6 +29,7 @@ from typing import Any
23
29
  _LOGGER: Incomplete
24
30
  ADDON_SETUP_TIMEOUT: int
25
31
  ADDON_SETUP_TIMEOUT_ROUNDS: int
32
+ CONF_CLIENT_KEY_PASSWORD: str
26
33
  MQTT_TIMEOUT: int
27
34
  ADVANCED_OPTIONS: str
28
35
  SET_CA_CERT: str
@@ -43,11 +50,55 @@ BROKER_VERIFICATION_SELECTOR: Incomplete
43
50
  CA_CERT_UPLOAD_SELECTOR: Incomplete
44
51
  CERT_UPLOAD_SELECTOR: Incomplete
45
52
  KEY_UPLOAD_SELECTOR: Incomplete
53
+ SUBENTRY_PLATFORMS: Incomplete
54
+ SUBENTRY_PLATFORM_SELECTOR: Incomplete
55
+ TEMPLATE_SELECTOR: Incomplete
56
+ SUBENTRY_AVAILABILITY_SCHEMA: Incomplete
57
+ SENSOR_DEVICE_CLASS_SELECTOR: Incomplete
58
+ SENSOR_STATE_CLASS_SELECTOR: Incomplete
59
+ OPTIONS_SELECTOR: Incomplete
60
+ SUGGESTED_DISPLAY_PRECISION_SELECTOR: Incomplete
61
+ EXPIRE_AFTER_SELECTOR: Incomplete
62
+ SWITCH_DEVICE_CLASS_SELECTOR: Incomplete
63
+
64
+ @callback
65
+ def validate_sensor_platform_config(config: dict[str, Any]) -> dict[str, str]: ...
66
+
67
+ @dataclass(frozen=True)
68
+ class PlatformField:
69
+ selector: Selector[Any] | Callable[..., Selector[Any]]
70
+ required: bool
71
+ validator: Callable[..., Any]
72
+ error: str | None = ...
73
+ default: str | int | vol.Undefined = ...
74
+ exclude_from_reconfig: bool = ...
75
+ conditions: tuple[dict[str, Any], ...] | None = ...
76
+ custom_filtering: bool = ...
77
+ section: str | None = ...
78
+
79
+ @callback
80
+ def unit_of_measurement_selector(user_data: dict[str, Any | None]) -> Selector: ...
81
+
82
+ COMMON_ENTITY_FIELDS: Incomplete
83
+ PLATFORM_ENTITY_FIELDS: Incomplete
84
+ PLATFORM_MQTT_FIELDS: Incomplete
85
+ ENTITY_CONFIG_VALIDATOR: dict[str, Callable[[dict[str, Any]], dict[str, str]] | None]
86
+ MQTT_DEVICE_PLATFORM_FIELDS: Incomplete
46
87
  REAUTH_SCHEMA: Incomplete
47
88
  PWD_NOT_CHANGED: str
48
89
 
49
90
  @callback
50
91
  def update_password_from_user_input(entry_password: str | None, user_input: dict[str, Any]) -> dict[str, Any]: ...
92
+ @callback
93
+ def validate_field(field: str, validator: Callable[..., Any], user_input: dict[str, Any] | None, errors: dict[str, str], error: str) -> None: ...
94
+ @callback
95
+ def _check_conditions(platform_field: PlatformField, component_data: dict[str, Any] | None = None) -> bool: ...
96
+ @callback
97
+ def calculate_merged_config(merged_user_input: dict[str, Any], data_schema_fields: dict[str, PlatformField], component_data: dict[str, Any]) -> dict[str, Any]: ...
98
+ @callback
99
+ def validate_user_input(user_input: dict[str, Any], data_schema_fields: dict[str, PlatformField], *, component_data: dict[str, Any] | None = None, config_validator: Callable[[dict[str, Any]], dict[str, str]] | None = None) -> tuple[dict[str, Any], dict[str, str]]: ...
100
+ @callback
101
+ def data_schema_from_fields(data_schema_fields: dict[str, PlatformField], reconfig: bool, component_data: dict[str, Any] | None = None, user_input: dict[str, Any] | None = None, device_data: MqttDeviceData | None = None) -> vol.Schema: ...
51
102
 
52
103
  class FlowHandler(ConfigFlow, domain=DOMAIN):
53
104
  VERSION = CONFIG_ENTRY_VERSION
@@ -57,6 +108,9 @@ class FlowHandler(ConfigFlow, domain=DOMAIN):
57
108
  install_task: asyncio.Task | None
58
109
  start_task: asyncio.Task | None
59
110
  def __init__(self) -> None: ...
111
+ @classmethod
112
+ @callback
113
+ def async_get_supported_subentry_types(cls, config_entry: ConfigEntry) -> dict[str, type[ConfigSubentryFlow]]: ...
60
114
  @staticmethod
61
115
  @callback
62
116
  def async_get_options_flow(config_entry: ConfigEntry) -> MQTTOptionsFlowHandler: ...
@@ -81,7 +135,41 @@ class MQTTOptionsFlowHandler(OptionsFlow):
81
135
  async def async_step_init(self, user_input: None = None) -> ConfigFlowResult: ...
82
136
  async def async_step_options(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
83
137
 
84
- async def _get_uploaded_file(hass: HomeAssistant, id: str) -> str: ...
138
+ class MQTTSubentryFlowHandler(ConfigSubentryFlow):
139
+ _subentry_data: MqttSubentryData
140
+ _component_id: str | None
141
+ @callback
142
+ def update_component_fields(self, data_schema_fields: dict[str, PlatformField], merged_user_input: dict[str, Any]) -> None: ...
143
+ @callback
144
+ def generate_names(self) -> tuple[str, str]: ...
145
+ @callback
146
+ def get_suggested_values_from_component(self, data_schema: vol.Schema) -> dict[str, Any]: ...
147
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
148
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
149
+ async def async_step_device(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
150
+ async def async_step_entity(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
151
+ def _show_update_or_delete_form(self, step_id: str) -> SubentryFlowResult: ...
152
+ async def async_step_update_entity(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
153
+ async def async_step_delete_entity(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
154
+ async def async_step_entity_platform_config(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
155
+ async def async_step_mqtt_platform_config(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
156
+ @callback
157
+ def _async_create_subentry(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
158
+ async def async_step_availability(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
159
+ async def async_step_summary_menu(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
160
+ async def async_step_save_changes(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
161
+
162
+ @callback
163
+ def async_is_pem_data(data: bytes) -> bool: ...
164
+
165
+ class PEMType(IntEnum):
166
+ CERTIFICATE = 1
167
+ PRIVATE_KEY = 2
168
+
169
+ @callback
170
+ def async_convert_to_pem(data: bytes, pem_type: PEMType, password: str | None = None) -> str | None: ...
171
+ async def _get_uploaded_file(hass: HomeAssistant, id: str) -> bytes: ...
172
+ def _validate_pki_file(file_id: str | None, pem_data: str | None, errors: dict[str, str], error: str) -> bool: ...
85
173
  async def async_get_broker_settings(flow: ConfigFlow | OptionsFlow, fields: OrderedDict[Any, Any], entry_config: MappingProxyType[str, Any] | None, user_input: dict[str, Any] | None, validated_user_input: dict[str, Any], errors: dict[str, str]) -> bool: ...
86
174
  def try_connection(user_input: dict[str, Any]) -> bool: ...
87
175
  def check_certicate_chain() -> str | None: ...