homeassistant-stubs 2025.4.3__py3-none-any.whl → 2025.5.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 (402) hide show
  1. homeassistant-stubs/components/adax/__init__.pyi +5 -4
  2. homeassistant-stubs/components/adax/climate.pyi +25 -17
  3. homeassistant-stubs/components/adax/const.pyi +2 -0
  4. homeassistant-stubs/components/adax/coordinator.pyi +21 -0
  5. homeassistant-stubs/components/androidtv_remote/media_player.pyi +1 -1
  6. homeassistant-stubs/components/apcupsd/binary_sensor.pyi +1 -1
  7. homeassistant-stubs/components/apcupsd/coordinator.pyi +2 -0
  8. homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
  9. homeassistant-stubs/components/apsystems/coordinator.pyi +1 -0
  10. homeassistant-stubs/components/apsystems/switch.pyi +1 -1
  11. homeassistant-stubs/components/asuswrt/router.pyi +2 -3
  12. homeassistant-stubs/components/automation/__init__.pyi +2 -2
  13. homeassistant-stubs/components/automation/config.pyi +2 -2
  14. homeassistant-stubs/components/automation/const.pyi +0 -4
  15. homeassistant-stubs/components/axis/hub/api.pyi +2 -2
  16. homeassistant-stubs/components/backup/config.pyi +10 -2
  17. homeassistant-stubs/components/backup/onboarding.pyi +30 -0
  18. homeassistant-stubs/components/bluetooth/passive_update_processor.pyi +3 -0
  19. homeassistant-stubs/components/bluetooth/storage.pyi +1 -1
  20. homeassistant-stubs/components/bond/config_flow.pyi +3 -0
  21. homeassistant-stubs/components/bosch_alarm/__init__.pyi +1 -1
  22. homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +2 -11
  23. homeassistant-stubs/components/bosch_alarm/config_flow.pyi +5 -1
  24. homeassistant-stubs/components/bosch_alarm/diagnostics.pyi +11 -0
  25. homeassistant-stubs/components/bosch_alarm/entity.pyi +29 -0
  26. homeassistant-stubs/components/bosch_alarm/sensor.pyi +30 -0
  27. homeassistant-stubs/components/cambridge_audio/media_player.pyi +2 -0
  28. homeassistant-stubs/components/canary/__init__.pyi +1 -5
  29. homeassistant-stubs/components/canary/config_flow.pyi +0 -1
  30. homeassistant-stubs/components/cloud/const.pyi +1 -0
  31. homeassistant-stubs/components/cloud/http_api.pyi +1 -1
  32. homeassistant-stubs/components/cloud/onboarding.pyi +35 -0
  33. homeassistant-stubs/components/cloud/tts.pyi +4 -1
  34. homeassistant-stubs/components/comelit/__init__.pyi +1 -0
  35. homeassistant-stubs/components/comelit/alarm_control_panel.pyi +0 -1
  36. homeassistant-stubs/components/comelit/binary_sensor.pyi +0 -1
  37. homeassistant-stubs/components/comelit/climate.pyi +2 -7
  38. homeassistant-stubs/components/comelit/config_flow.pyi +1 -0
  39. homeassistant-stubs/components/comelit/coordinator.pyi +3 -2
  40. homeassistant-stubs/components/comelit/cover.pyi +2 -7
  41. homeassistant-stubs/components/comelit/entity.pyi +11 -0
  42. homeassistant-stubs/components/comelit/humidifier.pyi +2 -6
  43. homeassistant-stubs/components/comelit/light.pyi +2 -9
  44. homeassistant-stubs/components/comelit/sensor.pyi +2 -7
  45. homeassistant-stubs/components/comelit/switch.pyi +2 -6
  46. homeassistant-stubs/components/comelit/utils.pyi +5 -0
  47. homeassistant-stubs/components/command_line/__init__.pyi +1 -1
  48. homeassistant-stubs/components/command_line/binary_sensor.pyi +2 -2
  49. homeassistant-stubs/components/command_line/cover.pyi +2 -2
  50. homeassistant-stubs/components/command_line/sensor.pyi +2 -2
  51. homeassistant-stubs/components/command_line/switch.pyi +2 -2
  52. homeassistant-stubs/components/config/config_entries.pyi +3 -1
  53. homeassistant-stubs/components/demo/light.pyi +3 -2
  54. homeassistant-stubs/components/demo/media_player.pyi +4 -0
  55. homeassistant-stubs/components/device_tracker/config_entry.pyi +2 -2
  56. homeassistant-stubs/components/devolo_home_control/__init__.pyi +2 -2
  57. homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +1 -2
  58. homeassistant-stubs/components/dhcp/__init__.pyi +6 -13
  59. homeassistant-stubs/components/dhcp/const.pyi +5 -0
  60. homeassistant-stubs/components/dhcp/helpers.pyi +8 -0
  61. homeassistant-stubs/components/dhcp/models.pyi +25 -0
  62. homeassistant-stubs/components/dhcp/websocket_api.pyi +13 -0
  63. homeassistant-stubs/components/ecovacs/image.pyi +1 -0
  64. homeassistant-stubs/components/eheimdigital/number.pyi +38 -0
  65. homeassistant-stubs/components/eheimdigital/sensor.pyi +32 -0
  66. homeassistant-stubs/components/eheimdigital/switch.pyi +26 -0
  67. homeassistant-stubs/components/eheimdigital/time.pyi +37 -0
  68. homeassistant-stubs/components/elevenlabs/tts.pyi +2 -2
  69. homeassistant-stubs/components/energy/sensor.pyi +5 -0
  70. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +3 -1
  71. homeassistant-stubs/components/enphase_envoy/coordinator.pyi +12 -1
  72. homeassistant-stubs/components/esphome/__init__.pyi +5 -4
  73. homeassistant-stubs/components/esphome/alarm_control_panel.pyi +1 -0
  74. homeassistant-stubs/components/esphome/assist_satellite.pyi +7 -6
  75. homeassistant-stubs/components/esphome/binary_sensor.pyi +5 -13
  76. homeassistant-stubs/components/esphome/button.pyi +2 -0
  77. homeassistant-stubs/components/esphome/camera.pyi +2 -0
  78. homeassistant-stubs/components/esphome/climate.pyi +1 -0
  79. homeassistant-stubs/components/esphome/config_flow.pyi +26 -5
  80. homeassistant-stubs/components/esphome/const.pyi +2 -1
  81. homeassistant-stubs/components/esphome/coordinator.pyi +4 -3
  82. homeassistant-stubs/components/esphome/cover.pyi +2 -0
  83. homeassistant-stubs/components/esphome/dashboard.pyi +1 -1
  84. homeassistant-stubs/components/esphome/date.pyi +2 -0
  85. homeassistant-stubs/components/esphome/datetime.pyi +2 -0
  86. homeassistant-stubs/components/esphome/diagnostics.pyi +2 -0
  87. homeassistant-stubs/components/esphome/entity.pyi +12 -9
  88. homeassistant-stubs/components/esphome/event.pyi +2 -0
  89. homeassistant-stubs/components/esphome/fan.pyi +4 -3
  90. homeassistant-stubs/components/esphome/ffmpeg_proxy.pyi +10 -2
  91. homeassistant-stubs/components/esphome/light.pyi +8 -7
  92. homeassistant-stubs/components/esphome/lock.pyi +6 -4
  93. homeassistant-stubs/components/esphome/manager.pyi +7 -3
  94. homeassistant-stubs/components/esphome/media_player.pyi +2 -1
  95. homeassistant-stubs/components/esphome/number.pyi +1 -0
  96. homeassistant-stubs/components/esphome/repairs.pyi +21 -2
  97. homeassistant-stubs/components/esphome/select.pyi +3 -2
  98. homeassistant-stubs/components/esphome/sensor.pyi +4 -2
  99. homeassistant-stubs/components/esphome/switch.pyi +3 -1
  100. homeassistant-stubs/components/esphome/text.pyi +1 -0
  101. homeassistant-stubs/components/esphome/time.pyi +2 -0
  102. homeassistant-stubs/components/esphome/update.pyi +8 -9
  103. homeassistant-stubs/components/esphome/valve.pyi +3 -1
  104. homeassistant-stubs/components/fritz/binary_sensor.pyi +1 -0
  105. homeassistant-stubs/components/fritz/button.pyi +1 -0
  106. homeassistant-stubs/components/fritz/coordinator.pyi +3 -4
  107. homeassistant-stubs/components/fritz/device_tracker.pyi +1 -0
  108. homeassistant-stubs/components/fritz/image.pyi +1 -0
  109. homeassistant-stubs/components/fritz/sensor.pyi +1 -0
  110. homeassistant-stubs/components/fritz/switch.pyi +1 -0
  111. homeassistant-stubs/components/fritz/update.pyi +1 -0
  112. homeassistant-stubs/components/fritzbox/binary_sensor.pyi +2 -5
  113. homeassistant-stubs/components/fritzbox/climate.pyi +4 -3
  114. homeassistant-stubs/components/fritzbox/coordinator.pyi +1 -1
  115. homeassistant-stubs/components/fritzbox/sensor.pyi +3 -6
  116. homeassistant-stubs/components/heos/const.pyi +4 -0
  117. homeassistant-stubs/components/heos/media_player.pyi +5 -4
  118. homeassistant-stubs/components/heos/services.pyi +22 -2
  119. homeassistant-stubs/components/history/websocket_api.pyi +1 -1
  120. homeassistant-stubs/components/history_stats/data.pyi +2 -1
  121. homeassistant-stubs/components/home_connect/__init__.pyi +0 -1
  122. homeassistant-stubs/components/home_connect/binary_sensor.pyi +2 -13
  123. homeassistant-stubs/components/home_connect/coordinator.pyi +5 -0
  124. homeassistant-stubs/components/home_connect/repairs.pyi +10 -0
  125. homeassistant-stubs/components/home_connect/select.pyi +7 -3
  126. homeassistant-stubs/components/home_connect/sensor.pyi +5 -3
  127. homeassistant-stubs/components/homee/climate.pyi +47 -0
  128. homeassistant-stubs/components/homee/const.pyi +1 -0
  129. homeassistant-stubs/components/homee/number.pyi +12 -4
  130. homeassistant-stubs/components/homekit/__init__.pyi +5 -3
  131. homeassistant-stubs/components/homekit/accessories.pyi +2 -1
  132. homeassistant-stubs/components/homekit/const.pyi +13 -0
  133. homeassistant-stubs/components/homekit/type_air_purifiers.pyi +69 -0
  134. homeassistant-stubs/components/homekit/type_fans.pyi +7 -4
  135. homeassistant-stubs/components/homekit/type_media_players.pyi +2 -1
  136. homeassistant-stubs/components/homekit/type_switches.pyi +1 -1
  137. homeassistant-stubs/components/homekit/type_triggers.pyi +1 -1
  138. homeassistant-stubs/components/homekit/util.pyi +2 -1
  139. homeassistant-stubs/components/http/headers.pyi +6 -0
  140. homeassistant-stubs/components/huawei_lte/binary_sensor.pyi +3 -1
  141. homeassistant-stubs/components/huawei_lte/config_flow.pyi +1 -1
  142. homeassistant-stubs/components/huawei_lte/entity.pyi +0 -3
  143. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +1 -0
  144. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +2 -1
  145. homeassistant-stubs/components/hyperion/__init__.pyi +12 -5
  146. homeassistant-stubs/components/hyperion/camera.pyi +3 -4
  147. homeassistant-stubs/components/hyperion/const.pyi +0 -3
  148. homeassistant-stubs/components/hyperion/light.pyi +4 -6
  149. homeassistant-stubs/components/hyperion/sensor.pyi +3 -4
  150. homeassistant-stubs/components/hyperion/switch.pyi +3 -4
  151. homeassistant-stubs/components/incomfort/climate.pyi +1 -2
  152. homeassistant-stubs/components/iron_os/__init__.pyi +1 -3
  153. homeassistant-stubs/components/iron_os/config_flow.pyi +3 -0
  154. homeassistant-stubs/components/iron_os/coordinator.pyi +4 -2
  155. homeassistant-stubs/components/iron_os/entity.pyi +2 -0
  156. homeassistant-stubs/components/iron_os/update.pyi +4 -2
  157. homeassistant-stubs/components/isy994/entity.pyi +1 -0
  158. homeassistant-stubs/components/isy994/services.pyi +1 -0
  159. homeassistant-stubs/components/isy994/switch.pyi +1 -1
  160. homeassistant-stubs/components/jewish_calendar/config_flow.pyi +1 -2
  161. homeassistant-stubs/components/jewish_calendar/const.pyi +1 -0
  162. homeassistant-stubs/components/jewish_calendar/entity.pyi +0 -1
  163. homeassistant-stubs/components/jewish_calendar/sensor.pyi +1 -0
  164. homeassistant-stubs/components/jewish_calendar/service.pyi +4 -3
  165. homeassistant-stubs/components/kulersky/__init__.pyi +14 -0
  166. homeassistant-stubs/components/kulersky/config_flow.pyi +17 -0
  167. homeassistant-stubs/components/kulersky/const.pyi +4 -0
  168. homeassistant-stubs/components/kulersky/light.pyi +34 -0
  169. homeassistant-stubs/components/lamarzocco/__init__.pyi +5 -3
  170. homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +3 -7
  171. homeassistant-stubs/components/lamarzocco/calendar.pyi +3 -4
  172. homeassistant-stubs/components/lamarzocco/config_flow.pyi +5 -4
  173. homeassistant-stubs/components/lamarzocco/coordinator.pyi +16 -16
  174. homeassistant-stubs/components/lamarzocco/diagnostics.pyi +3 -8
  175. homeassistant-stubs/components/lamarzocco/entity.pyi +1 -6
  176. homeassistant-stubs/components/lamarzocco/number.pyi +4 -29
  177. homeassistant-stubs/components/lamarzocco/select.pyi +3 -8
  178. homeassistant-stubs/components/lamarzocco/sensor.pyi +11 -24
  179. homeassistant-stubs/components/lamarzocco/switch.pyi +6 -5
  180. homeassistant-stubs/components/lamarzocco/update.pyi +4 -1
  181. homeassistant-stubs/components/lcn/__init__.pyi +4 -3
  182. homeassistant-stubs/components/lcn/entity.pyi +3 -3
  183. homeassistant-stubs/components/lcn/helpers.pyi +2 -2
  184. homeassistant-stubs/components/lcn/websocket.pyi +1 -1
  185. homeassistant-stubs/components/linkplay/__init__.pyi +1 -1
  186. homeassistant-stubs/components/linkplay/const.pyi +8 -2
  187. homeassistant-stubs/components/linkplay/media_player.pyi +8 -4
  188. homeassistant-stubs/components/logbook/websocket_api.pyi +1 -1
  189. homeassistant-stubs/components/logger/__init__.pyi +1 -1
  190. homeassistant-stubs/components/logger/helpers.pyi +4 -2
  191. homeassistant-stubs/components/logger/websocket_api.pyi +1 -1
  192. homeassistant-stubs/components/matter/entity.pyi +1 -0
  193. homeassistant-stubs/components/matter/select.pyi +1 -1
  194. homeassistant-stubs/components/matter/sensor.pyi +3 -1
  195. homeassistant-stubs/components/matter/switch.pyi +20 -0
  196. homeassistant-stubs/components/matter/water_heater.pyi +39 -0
  197. homeassistant-stubs/components/mcp/application_credentials.pyi +12 -0
  198. homeassistant-stubs/components/mcp/config_flow.pyi +27 -6
  199. homeassistant-stubs/components/mcp/const.pyi +3 -0
  200. homeassistant-stubs/components/mcp/coordinator.pyi +8 -5
  201. homeassistant-stubs/components/media_player/__init__.pyi +7 -3
  202. homeassistant-stubs/components/media_player/browse_media.pyi +16 -1
  203. homeassistant-stubs/components/media_player/const.pyi +4 -0
  204. homeassistant-stubs/components/media_player/errors.pyi +1 -0
  205. homeassistant-stubs/components/media_source/error.pyi +1 -0
  206. homeassistant-stubs/components/met_eireann/__init__.pyi +2 -2
  207. homeassistant-stubs/components/met_eireann/weather.pyi +3 -3
  208. homeassistant-stubs/components/mjpeg/config_flow.pyi +2 -2
  209. homeassistant-stubs/components/motionmount/select.pyi +1 -1
  210. homeassistant-stubs/components/mqtt/config_flow.pyi +18 -4
  211. homeassistant-stubs/components/mqtt/const.pyi +3 -0
  212. homeassistant-stubs/components/mqtt/device_tracker.pyi +11 -14
  213. homeassistant-stubs/components/mqtt/entity.pyi +3 -0
  214. homeassistant-stubs/components/mqtt/light/schema_basic.pyi +1 -2
  215. homeassistant-stubs/components/mqtt/light/schema_json.pyi +3 -2
  216. homeassistant-stubs/components/music_assistant/media_browser.pyi +17 -2
  217. homeassistant-stubs/components/music_assistant/media_player.pyi +3 -2
  218. homeassistant-stubs/components/network/__init__.pyi +2 -0
  219. homeassistant-stubs/components/ntfy/__init__.pyi +16 -0
  220. homeassistant-stubs/components/ntfy/config_flow.pyi +29 -0
  221. homeassistant-stubs/components/ntfy/const.pyi +6 -0
  222. homeassistant-stubs/components/ntfy/diagnostics.pyi +7 -0
  223. homeassistant-stubs/components/ntfy/notify.pyi +25 -0
  224. homeassistant-stubs/components/nut/__init__.pyi +7 -3
  225. homeassistant-stubs/components/nut/config_flow.pyi +11 -14
  226. homeassistant-stubs/components/nut/const.pyi +0 -1
  227. homeassistant-stubs/components/nut/device_action.pyi +5 -1
  228. homeassistant-stubs/components/nut/sensor.pyi +6 -3
  229. homeassistant-stubs/components/ohme/__init__.pyi +15 -0
  230. homeassistant-stubs/components/ohme/button.pyi +26 -0
  231. homeassistant-stubs/components/ohme/config_flow.pyi +17 -0
  232. homeassistant-stubs/components/ohme/const.pyi +5 -0
  233. homeassistant-stubs/components/ohme/coordinator.pyi +44 -0
  234. homeassistant-stubs/components/ohme/diagnostics.pyi +5 -0
  235. homeassistant-stubs/components/ohme/entity.pyi +23 -0
  236. homeassistant-stubs/components/ohme/number.pyi +30 -0
  237. homeassistant-stubs/components/ohme/select.pyi +33 -0
  238. homeassistant-stubs/components/ohme/sensor.pyi +26 -0
  239. homeassistant-stubs/components/ohme/services.pyi +19 -0
  240. homeassistant-stubs/components/ohme/switch.pyi +45 -0
  241. homeassistant-stubs/components/ohme/time.pyi +30 -0
  242. homeassistant-stubs/components/onboarding/__init__.pyi +1 -0
  243. homeassistant-stubs/components/onboarding/views.pyi +29 -43
  244. homeassistant-stubs/components/oncue/__init__.pyi +5 -11
  245. homeassistant-stubs/components/oncue/config_flow.pyi +2 -13
  246. homeassistant-stubs/components/onewire/sensor.pyi +1 -2
  247. homeassistant-stubs/components/onkyo/config_flow.pyi +2 -3
  248. homeassistant-stubs/components/onkyo/const.pyi +0 -2
  249. homeassistant-stubs/components/onkyo/media_player.pyi +3 -14
  250. homeassistant-stubs/components/openai_conversation/config_flow.pyi +3 -3
  251. homeassistant-stubs/components/openai_conversation/const.pyi +1 -0
  252. homeassistant-stubs/components/openai_conversation/conversation.pyi +1 -1
  253. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.pyi +4 -1
  254. homeassistant-stubs/components/overkiz/climate/atlantic_electrical_towel_dryer.pyi +2 -1
  255. homeassistant-stubs/components/overkiz/config_flow.pyi +1 -7
  256. homeassistant-stubs/components/overkiz/entity.pyi +2 -1
  257. homeassistant-stubs/components/overkiz/number.pyi +1 -1
  258. homeassistant-stubs/components/overkiz/sensor.pyi +1 -1
  259. homeassistant-stubs/components/pegel_online/__init__.pyi +13 -0
  260. homeassistant-stubs/components/pegel_online/config_flow.pyi +15 -0
  261. homeassistant-stubs/components/pegel_online/const.pyi +6 -0
  262. homeassistant-stubs/components/pegel_online/coordinator.pyi +16 -0
  263. homeassistant-stubs/components/pegel_online/diagnostics.pyi +5 -0
  264. homeassistant-stubs/components/pegel_online/entity.pyi +12 -0
  265. homeassistant-stubs/components/pegel_online/sensor.pyi +28 -0
  266. homeassistant-stubs/components/powerwall/sensor.pyi +0 -1
  267. homeassistant-stubs/components/recorder/core.pyi +2 -0
  268. homeassistant-stubs/components/recorder/entity_registry.pyi +2 -1
  269. homeassistant-stubs/components/recorder/tasks.pyi +2 -1
  270. homeassistant-stubs/components/remote_calendar/calendar.pyi +2 -0
  271. homeassistant-stubs/components/remote_calendar/config_flow.pyi +1 -0
  272. homeassistant-stubs/components/remote_calendar/coordinator.pyi +1 -0
  273. homeassistant-stubs/components/remote_calendar/ics.pyi +10 -0
  274. homeassistant-stubs/components/renault/binary_sensor.pyi +8 -2
  275. homeassistant-stubs/components/renault/config_flow.pyi +2 -1
  276. homeassistant-stubs/components/renault/const.pyi +2 -1
  277. homeassistant-stubs/components/renault/coordinator.pyi +4 -1
  278. homeassistant-stubs/components/renault/entity.pyi +2 -0
  279. homeassistant-stubs/components/renault/renault_hub.pyi +5 -2
  280. homeassistant-stubs/components/renault/renault_vehicle.pyi +5 -2
  281. homeassistant-stubs/components/renault/services.pyi +5 -0
  282. homeassistant-stubs/components/rest/binary_sensor.pyi +2 -2
  283. homeassistant-stubs/components/rest/schema.pyi +1 -1
  284. homeassistant-stubs/components/rest/sensor.pyi +2 -2
  285. homeassistant-stubs/components/rest/switch.pyi +4 -3
  286. homeassistant-stubs/components/roborock/__init__.pyi +1 -0
  287. homeassistant-stubs/components/roborock/config_flow.pyi +1 -0
  288. homeassistant-stubs/components/samsungtv/__init__.pyi +6 -7
  289. homeassistant-stubs/components/samsungtv/config_flow.pyi +1 -1
  290. homeassistant-stubs/components/samsungtv/entity.pyi +3 -2
  291. homeassistant-stubs/components/samsungtv/media_player.pyi +1 -2
  292. homeassistant-stubs/components/samsungtv/remote.pyi +2 -2
  293. homeassistant-stubs/components/scrape/__init__.pyi +1 -1
  294. homeassistant-stubs/components/scrape/sensor.pyi +4 -5
  295. homeassistant-stubs/components/shelly/__init__.pyi +1 -0
  296. homeassistant-stubs/components/shelly/climate.pyi +2 -1
  297. homeassistant-stubs/components/shelly/const.pyi +2 -0
  298. homeassistant-stubs/components/shelly/coordinator.pyi +1 -0
  299. homeassistant-stubs/components/shelly/entity.pyi +5 -2
  300. homeassistant-stubs/components/shelly/number.pyi +4 -3
  301. homeassistant-stubs/components/shelly/repairs.pyi +19 -0
  302. homeassistant-stubs/components/shelly/select.pyi +3 -1
  303. homeassistant-stubs/components/shelly/text.pyi +4 -1
  304. homeassistant-stubs/components/shelly/utils.pyi +2 -3
  305. homeassistant-stubs/components/smlight/binary_sensor.pyi +1 -0
  306. homeassistant-stubs/components/smlight/button.pyi +1 -0
  307. homeassistant-stubs/components/smlight/sensor.pyi +2 -0
  308. homeassistant-stubs/components/smlight/switch.pyi +1 -0
  309. homeassistant-stubs/components/smlight/update.pyi +3 -1
  310. homeassistant-stubs/components/smtp/__init__.pyi +0 -0
  311. homeassistant-stubs/components/smtp/const.pyi +17 -0
  312. homeassistant-stubs/components/smtp/notify.pyi +47 -0
  313. homeassistant-stubs/components/sql/__init__.pyi +1 -1
  314. homeassistant-stubs/components/sql/sensor.pyi +4 -4
  315. homeassistant-stubs/components/ssdp/__init__.pyi +6 -96
  316. homeassistant-stubs/components/ssdp/common.pyi +5 -0
  317. homeassistant-stubs/components/ssdp/const.pyi +3 -0
  318. homeassistant-stubs/components/ssdp/scanner.pyi +75 -0
  319. homeassistant-stubs/components/ssdp/server.pyi +30 -0
  320. homeassistant-stubs/components/ssdp/websocket_api.pyi +16 -0
  321. homeassistant-stubs/components/switcher_kis/button.pyi +2 -1
  322. homeassistant-stubs/components/switcher_kis/climate.pyi +2 -4
  323. homeassistant-stubs/components/switcher_kis/config_flow.pyi +3 -2
  324. homeassistant-stubs/components/switcher_kis/cover.pyi +0 -2
  325. homeassistant-stubs/components/switcher_kis/entity.pyi +4 -0
  326. homeassistant-stubs/components/switcher_kis/light.pyi +3 -8
  327. homeassistant-stubs/components/switcher_kis/sensor.pyi +13 -6
  328. homeassistant-stubs/components/switcher_kis/switch.pyi +9 -15
  329. homeassistant-stubs/components/switcher_kis/utils.pyi +1 -1
  330. homeassistant-stubs/components/synology_dsm/common.pyi +3 -0
  331. homeassistant-stubs/components/synology_dsm/sensor.pyi +9 -1
  332. homeassistant-stubs/components/todo/__init__.pyi +1 -0
  333. homeassistant-stubs/components/tplink_omada/config_flow.pyi +1 -2
  334. homeassistant-stubs/components/tractive/__init__.pyi +1 -1
  335. homeassistant-stubs/components/tractive/binary_sensor.pyi +9 -3
  336. homeassistant-stubs/components/tractive/const.pyi +1 -0
  337. homeassistant-stubs/components/tractive/device_tracker.pyi +1 -1
  338. homeassistant-stubs/components/tts/__init__.pyi +22 -13
  339. homeassistant-stubs/components/tts/legacy.pyi +1 -0
  340. homeassistant-stubs/components/tts/media_source.pyi +5 -2
  341. homeassistant-stubs/components/unifi/hub/api.pyi +2 -2
  342. homeassistant-stubs/components/uptimerobot/__init__.pyi +4 -5
  343. homeassistant-stubs/components/uptimerobot/binary_sensor.pyi +4 -4
  344. homeassistant-stubs/components/uptimerobot/coordinator.pyi +3 -2
  345. homeassistant-stubs/components/uptimerobot/diagnostics.pyi +2 -4
  346. homeassistant-stubs/components/uptimerobot/entity.pyi +0 -2
  347. homeassistant-stubs/components/uptimerobot/sensor.pyi +3 -4
  348. homeassistant-stubs/components/uptimerobot/switch.pyi +5 -4
  349. homeassistant-stubs/components/vodafone_station/__init__.pyi +1 -1
  350. homeassistant-stubs/components/vodafone_station/config_flow.pyi +1 -0
  351. homeassistant-stubs/components/vodafone_station/coordinator.pyi +2 -1
  352. homeassistant-stubs/components/vodafone_station/utils.pyi +5 -0
  353. homeassistant-stubs/components/websocket_api/commands.pyi +3 -1
  354. homeassistant-stubs/components/websocket_api/http.pyi +4 -1
  355. homeassistant-stubs/components/wemo/__init__.pyi +1 -1
  356. homeassistant-stubs/components/wemo/coordinator.pyi +1 -1
  357. homeassistant-stubs/components/wemo/models.pyi +3 -4
  358. homeassistant-stubs/components/workday/config_flow.pyi +1 -1
  359. homeassistant-stubs/components/xiaomi_ble/const.pyi +2 -0
  360. homeassistant-stubs/components/xiaomi_ble/device_trigger.pyi +1 -1
  361. homeassistant-stubs/components/xiaomi_ble/sensor.pyi +2 -2
  362. homeassistant-stubs/components/zeroconf/__init__.pyi +6 -49
  363. homeassistant-stubs/components/zeroconf/const.pyi +3 -0
  364. homeassistant-stubs/components/zeroconf/discovery.pyi +63 -0
  365. homeassistant-stubs/components/zeroconf/websocket_api.pyi +40 -0
  366. homeassistant-stubs/components/zone/__init__.pyi +4 -1
  367. homeassistant-stubs/components/zwave_js/__init__.pyi +2 -2
  368. homeassistant-stubs/components/zwave_js/api.pyi +9 -3
  369. homeassistant-stubs/components/zwave_js/config_flow.pyi +42 -59
  370. homeassistant-stubs/components/zwave_js/helpers.pyi +2 -1
  371. homeassistant-stubs/config_entries.pyi +13 -9
  372. homeassistant-stubs/const.pyi +5 -0
  373. homeassistant-stubs/core.pyi +1 -3
  374. homeassistant-stubs/core_config.pyi +1 -1
  375. homeassistant-stubs/data_entry_flow.pyi +5 -1
  376. homeassistant-stubs/helpers/aiohttp_client.pyi +9 -1
  377. homeassistant-stubs/helpers/area_registry.pyi +5 -1
  378. homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +1 -1
  379. homeassistant-stubs/helpers/config_validation.pyi +1 -0
  380. homeassistant-stubs/helpers/device_registry.pyi +1 -3
  381. homeassistant-stubs/helpers/entity.pyi +1 -1
  382. homeassistant-stubs/helpers/entity_platform.pyi +3 -3
  383. homeassistant-stubs/helpers/entity_registry.pyi +6 -6
  384. homeassistant-stubs/helpers/event.pyi +2 -0
  385. homeassistant-stubs/helpers/floor_registry.pyi +12 -3
  386. homeassistant-stubs/helpers/llm.pyi +24 -1
  387. homeassistant-stubs/helpers/network.pyi +1 -1
  388. homeassistant-stubs/helpers/script.pyi +2 -1
  389. homeassistant-stubs/helpers/template.pyi +1 -0
  390. homeassistant-stubs/helpers/trigger_template_entity.pyi +17 -2
  391. homeassistant-stubs/loader.pyi +2 -11
  392. homeassistant-stubs/setup.pyi +7 -6
  393. homeassistant-stubs/util/ssl.pyi +2 -0
  394. {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/METADATA +3 -3
  395. {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/RECORD +397 -339
  396. homeassistant-stubs/components/oncue/binary_sensor.pyi +0 -16
  397. homeassistant-stubs/components/oncue/const.pyi +0 -6
  398. homeassistant-stubs/components/oncue/entity.pyi +0 -20
  399. homeassistant-stubs/components/oncue/sensor.pyi +0 -21
  400. homeassistant-stubs/components/oncue/types.pyi +0 -5
  401. {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/WHEEL +0 -0
  402. {homeassistant_stubs-2025.4.3.dist-info → homeassistant_stubs-2025.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,39 @@
1
+ from .entity import MatterEntity as MatterEntity
2
+ from .helpers import get_matter as get_matter
3
+ from .models import MatterDiscoverySchema as MatterDiscoverySchema
4
+ from _typeshed import Incomplete
5
+ from chip.clusters import Objects as clusters
6
+ from homeassistant.components.water_heater import STATE_ECO as STATE_ECO, STATE_HIGH_DEMAND as STATE_HIGH_DEMAND, STATE_OFF as STATE_OFF, WaterHeaterEntity as WaterHeaterEntity, WaterHeaterEntityDescription as WaterHeaterEntityDescription, WaterHeaterEntityFeature as WaterHeaterEntityFeature
7
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
+ from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, PRECISION_WHOLE as PRECISION_WHOLE, Platform as Platform, UnitOfTemperature as UnitOfTemperature
9
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from typing import Any
12
+
13
+ TEMPERATURE_SCALING_FACTOR: int
14
+ WATER_HEATER_SYSTEM_MODE_MAP: Incomplete
15
+
16
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
17
+
18
+ class MatterWaterHeater(MatterEntity, WaterHeaterEntity):
19
+ _attr_current_temperature: float | None
20
+ _attr_current_operation: str
21
+ _attr_operation_list: Incomplete
22
+ _attr_precision = PRECISION_WHOLE
23
+ _attr_supported_features: Incomplete
24
+ _attr_target_temperature: float | None
25
+ _attr_temperature_unit: Incomplete
26
+ _platform_translation_key: str
27
+ async def async_set_temperature(self, **kwargs: Any) -> None: ...
28
+ async def async_set_operation_mode(self, operation_mode: str) -> None: ...
29
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
30
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
31
+ _attr_temperature: Incomplete
32
+ _attr_min_temp: Incomplete
33
+ _attr_max_temp: Incomplete
34
+ @callback
35
+ def _update_from_device(self) -> None: ...
36
+ @callback
37
+ def _get_temperature_in_degrees(self, attribute: type[clusters.ClusterAttributeDescriptor]) -> float | None: ...
38
+
39
+ DISCOVERY_SCHEMAS: Incomplete
@@ -0,0 +1,12 @@
1
+ import contextvars
2
+ from collections.abc import Generator
3
+ from contextlib import contextmanager
4
+ from homeassistant.components.application_credentials import AuthorizationServer as AuthorizationServer
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+
7
+ CONF_ACTIVE_AUTHORIZATION_SERVER: str
8
+ _mcp_context: contextvars.ContextVar[AuthorizationServer]
9
+
10
+ @contextmanager
11
+ def authorization_server_context(authorization_server: AuthorizationServer) -> Generator[None]: ...
12
+ async def async_get_authorization_server(hass: HomeAssistant) -> AuthorizationServer: ...
@@ -1,20 +1,41 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .coordinator import mcp_client as mcp_client
1
+ from . import async_get_config_entry_implementation as async_get_config_entry_implementation
2
+ from .application_credentials import authorization_server_context as authorization_server_context
3
+ from .const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, CONF_AUTHORIZATION_URL as CONF_AUTHORIZATION_URL, CONF_TOKEN_URL as CONF_TOKEN_URL, DOMAIN as DOMAIN
4
+ from .coordinator import TokenManager as TokenManager, mcp_client as mcp_client
3
5
  from _typeshed import Incomplete
4
- from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
5
- from homeassistant.const import CONF_URL as CONF_URL
6
+ from collections.abc import Mapping
7
+ from homeassistant.components.application_credentials import AuthorizationServer as AuthorizationServer
8
+ from homeassistant.config_entries import ConfigFlowResult as ConfigFlowResult, SOURCE_REAUTH as SOURCE_REAUTH
9
+ from homeassistant.const import CONF_TOKEN as CONF_TOKEN, CONF_URL as CONF_URL
6
10
  from homeassistant.core import HomeAssistant as HomeAssistant
7
11
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
12
+ from homeassistant.helpers.config_entry_oauth2_flow import AbstractOAuth2FlowHandler as AbstractOAuth2FlowHandler, async_get_implementations as async_get_implementations
8
13
  from typing import Any
9
14
 
10
15
  _LOGGER: Incomplete
11
16
  STEP_USER_DATA_SCHEMA: Incomplete
17
+ OAUTH_DISCOVERY_ENDPOINT: str
18
+ MCP_DISCOVERY_HEADERS: Incomplete
12
19
 
13
- async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, Any]: ...
20
+ async def async_discover_oauth_config(hass: HomeAssistant, mcp_server_url: str) -> AuthorizationServer: ...
21
+ async def validate_input(hass: HomeAssistant, data: dict[str, Any], token_manager: TokenManager | None = None) -> dict[str, Any]: ...
14
22
 
15
- class ModelContextProtocolConfigFlow(ConfigFlow, domain=DOMAIN):
23
+ class ModelContextProtocolConfigFlow(AbstractOAuth2FlowHandler, domain=DOMAIN):
16
24
  VERSION: int
25
+ DOMAIN = DOMAIN
26
+ logger = _LOGGER
27
+ data: dict[str, Any]
28
+ def __init__(self) -> None: ...
17
29
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
30
+ async def async_step_auth_discovery(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
31
+ def authorization_server(self) -> AuthorizationServer: ...
32
+ async def async_step_credentials_choice(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
33
+ async def async_step_new_credentials(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
34
+ async def async_step_pick_implementation(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
35
+ async def async_oauth_create_entry(self, data: dict) -> ConfigFlowResult: ...
36
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
37
+ flow_impl: Incomplete
38
+ async def async_step_reauth_confirm(self, user_input: Mapping[str, Any] | None = None) -> ConfigFlowResult: ...
18
39
 
19
40
  class InvalidUrl(HomeAssistantError): ...
20
41
  class CannotConnect(HomeAssistantError): ...
@@ -1 +1,4 @@
1
1
  DOMAIN: str
2
+ CONF_ACCESS_TOKEN: str
3
+ CONF_AUTHORIZATION_URL: str
4
+ CONF_TOKEN_URL: str
@@ -1,12 +1,12 @@
1
1
  import voluptuous as vol
2
2
  from .const import DOMAIN as DOMAIN
3
3
  from _typeshed import Incomplete
4
- from collections.abc import AsyncGenerator
4
+ from collections.abc import AsyncGenerator, Awaitable, Callable
5
5
  from contextlib import asynccontextmanager
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.const import CONF_URL as CONF_URL
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
- from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
9
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, HomeAssistantError as HomeAssistantError
10
10
  from homeassistant.helpers import llm as llm
11
11
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
12
12
  from homeassistant.util.json import JsonObjectType as JsonObjectType
@@ -15,19 +15,22 @@ from mcp.client.session import ClientSession
15
15
  _LOGGER: Incomplete
16
16
  UPDATE_INTERVAL: Incomplete
17
17
  TIMEOUT: int
18
+ TokenManager = Callable[[], Awaitable[str]]
18
19
 
19
20
  @asynccontextmanager
20
- async def mcp_client(url: str) -> AsyncGenerator[ClientSession]: ...
21
+ async def mcp_client(url: str, token_manager: TokenManager | None = None) -> AsyncGenerator[ClientSession]: ...
21
22
 
22
23
  class ModelContextProtocolTool(llm.Tool):
23
24
  name: Incomplete
24
25
  description: Incomplete
25
26
  parameters: Incomplete
26
27
  server_url: Incomplete
27
- def __init__(self, name: str, description: str | None, parameters: vol.Schema, server_url: str) -> None: ...
28
+ token_manager: Incomplete
29
+ def __init__(self, name: str, description: str | None, parameters: vol.Schema, server_url: str, token_manager: TokenManager | None = None) -> None: ...
28
30
  async def async_call(self, hass: HomeAssistant, tool_input: llm.ToolInput, llm_context: llm.LLMContext) -> JsonObjectType: ...
29
31
 
30
32
  class ModelContextProtocolCoordinator(DataUpdateCoordinator[list[llm.Tool]]):
31
33
  config_entry: ConfigEntry
32
- def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None: ...
34
+ token_manager: Incomplete
35
+ def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, token_manager: TokenManager | None = None) -> None: ...
33
36
  async def _async_update_data(self) -> list[llm.Tool]: ...
@@ -2,9 +2,9 @@ import asyncio
2
2
  import collections
3
3
  import datetime as dt
4
4
  import logging
5
- from .browse_media import BrowseMedia as BrowseMedia, async_process_play_media_url as async_process_play_media_url
6
- from .const import ATTR_APP_ID as ATTR_APP_ID, ATTR_APP_NAME as ATTR_APP_NAME, ATTR_ENTITY_PICTURE_LOCAL as ATTR_ENTITY_PICTURE_LOCAL, ATTR_GROUP_MEMBERS as ATTR_GROUP_MEMBERS, ATTR_INPUT_SOURCE as ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST as ATTR_INPUT_SOURCE_LIST, ATTR_MEDIA_ALBUM_ARTIST as ATTR_MEDIA_ALBUM_ARTIST, ATTR_MEDIA_ALBUM_NAME as ATTR_MEDIA_ALBUM_NAME, ATTR_MEDIA_ANNOUNCE as ATTR_MEDIA_ANNOUNCE, ATTR_MEDIA_ARTIST as ATTR_MEDIA_ARTIST, ATTR_MEDIA_CHANNEL as ATTR_MEDIA_CHANNEL, ATTR_MEDIA_CONTENT_ID as ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE as ATTR_MEDIA_CONTENT_TYPE, ATTR_MEDIA_DURATION as ATTR_MEDIA_DURATION, ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EPISODE as ATTR_MEDIA_EPISODE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, ATTR_MEDIA_PLAYLIST as ATTR_MEDIA_PLAYLIST, ATTR_MEDIA_POSITION as ATTR_MEDIA_POSITION, ATTR_MEDIA_POSITION_UPDATED_AT as ATTR_MEDIA_POSITION_UPDATED_AT, ATTR_MEDIA_REPEAT as ATTR_MEDIA_REPEAT, ATTR_MEDIA_SEASON as ATTR_MEDIA_SEASON, ATTR_MEDIA_SEEK_POSITION as ATTR_MEDIA_SEEK_POSITION, ATTR_MEDIA_SERIES_TITLE as ATTR_MEDIA_SERIES_TITLE, ATTR_MEDIA_SHUFFLE as ATTR_MEDIA_SHUFFLE, ATTR_MEDIA_TITLE as ATTR_MEDIA_TITLE, ATTR_MEDIA_TRACK as ATTR_MEDIA_TRACK, ATTR_MEDIA_VOLUME_LEVEL as ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED as ATTR_MEDIA_VOLUME_MUTED, ATTR_SOUND_MODE as ATTR_SOUND_MODE, ATTR_SOUND_MODE_LIST as ATTR_SOUND_MODE_LIST, CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, DOMAIN as DOMAIN, MediaClass as MediaClass, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType, REPEAT_MODES as REPEAT_MODES, RepeatMode as RepeatMode, SERVICE_BROWSE_MEDIA as SERVICE_BROWSE_MEDIA, SERVICE_CLEAR_PLAYLIST as SERVICE_CLEAR_PLAYLIST, SERVICE_JOIN as SERVICE_JOIN, SERVICE_PLAY_MEDIA as SERVICE_PLAY_MEDIA, SERVICE_SELECT_SOUND_MODE as SERVICE_SELECT_SOUND_MODE, SERVICE_SELECT_SOURCE as SERVICE_SELECT_SOURCE, SERVICE_UNJOIN as SERVICE_UNJOIN, _DEPRECATED_MEDIA_CLASS_DIRECTORY as _DEPRECATED_MEDIA_CLASS_DIRECTORY, _DEPRECATED_SUPPORT_BROWSE_MEDIA as _DEPRECATED_SUPPORT_BROWSE_MEDIA, _DEPRECATED_SUPPORT_CLEAR_PLAYLIST as _DEPRECATED_SUPPORT_CLEAR_PLAYLIST, _DEPRECATED_SUPPORT_GROUPING as _DEPRECATED_SUPPORT_GROUPING, _DEPRECATED_SUPPORT_NEXT_TRACK as _DEPRECATED_SUPPORT_NEXT_TRACK, _DEPRECATED_SUPPORT_PAUSE as _DEPRECATED_SUPPORT_PAUSE, _DEPRECATED_SUPPORT_PLAY as _DEPRECATED_SUPPORT_PLAY, _DEPRECATED_SUPPORT_PLAY_MEDIA as _DEPRECATED_SUPPORT_PLAY_MEDIA, _DEPRECATED_SUPPORT_PREVIOUS_TRACK as _DEPRECATED_SUPPORT_PREVIOUS_TRACK, _DEPRECATED_SUPPORT_REPEAT_SET as _DEPRECATED_SUPPORT_REPEAT_SET, _DEPRECATED_SUPPORT_SEEK as _DEPRECATED_SUPPORT_SEEK, _DEPRECATED_SUPPORT_SELECT_SOUND_MODE as _DEPRECATED_SUPPORT_SELECT_SOUND_MODE, _DEPRECATED_SUPPORT_SELECT_SOURCE as _DEPRECATED_SUPPORT_SELECT_SOURCE, _DEPRECATED_SUPPORT_SHUFFLE_SET as _DEPRECATED_SUPPORT_SHUFFLE_SET, _DEPRECATED_SUPPORT_STOP as _DEPRECATED_SUPPORT_STOP, _DEPRECATED_SUPPORT_TURN_OFF as _DEPRECATED_SUPPORT_TURN_OFF, _DEPRECATED_SUPPORT_TURN_ON as _DEPRECATED_SUPPORT_TURN_ON, _DEPRECATED_SUPPORT_VOLUME_MUTE as _DEPRECATED_SUPPORT_VOLUME_MUTE, _DEPRECATED_SUPPORT_VOLUME_SET as _DEPRECATED_SUPPORT_VOLUME_SET, _DEPRECATED_SUPPORT_VOLUME_STEP as _DEPRECATED_SUPPORT_VOLUME_STEP
7
- from .errors import BrowseError as BrowseError
5
+ from .browse_media import BrowseMedia as BrowseMedia, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery, async_process_play_media_url as async_process_play_media_url
6
+ from .const import ATTR_APP_ID as ATTR_APP_ID, ATTR_APP_NAME as ATTR_APP_NAME, ATTR_ENTITY_PICTURE_LOCAL as ATTR_ENTITY_PICTURE_LOCAL, ATTR_GROUP_MEMBERS as ATTR_GROUP_MEMBERS, ATTR_INPUT_SOURCE as ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST as ATTR_INPUT_SOURCE_LIST, ATTR_MEDIA_ALBUM_ARTIST as ATTR_MEDIA_ALBUM_ARTIST, ATTR_MEDIA_ALBUM_NAME as ATTR_MEDIA_ALBUM_NAME, ATTR_MEDIA_ANNOUNCE as ATTR_MEDIA_ANNOUNCE, ATTR_MEDIA_ARTIST as ATTR_MEDIA_ARTIST, ATTR_MEDIA_CHANNEL as ATTR_MEDIA_CHANNEL, ATTR_MEDIA_CONTENT_ID as ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE as ATTR_MEDIA_CONTENT_TYPE, ATTR_MEDIA_DURATION as ATTR_MEDIA_DURATION, ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EPISODE as ATTR_MEDIA_EPISODE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, ATTR_MEDIA_FILTER_CLASSES as ATTR_MEDIA_FILTER_CLASSES, ATTR_MEDIA_PLAYLIST as ATTR_MEDIA_PLAYLIST, ATTR_MEDIA_POSITION as ATTR_MEDIA_POSITION, ATTR_MEDIA_POSITION_UPDATED_AT as ATTR_MEDIA_POSITION_UPDATED_AT, ATTR_MEDIA_REPEAT as ATTR_MEDIA_REPEAT, ATTR_MEDIA_SEARCH_QUERY as ATTR_MEDIA_SEARCH_QUERY, ATTR_MEDIA_SEASON as ATTR_MEDIA_SEASON, ATTR_MEDIA_SEEK_POSITION as ATTR_MEDIA_SEEK_POSITION, ATTR_MEDIA_SERIES_TITLE as ATTR_MEDIA_SERIES_TITLE, ATTR_MEDIA_SHUFFLE as ATTR_MEDIA_SHUFFLE, ATTR_MEDIA_TITLE as ATTR_MEDIA_TITLE, ATTR_MEDIA_TRACK as ATTR_MEDIA_TRACK, ATTR_MEDIA_VOLUME_LEVEL as ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED as ATTR_MEDIA_VOLUME_MUTED, ATTR_SOUND_MODE as ATTR_SOUND_MODE, ATTR_SOUND_MODE_LIST as ATTR_SOUND_MODE_LIST, CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, DOMAIN as DOMAIN, MediaClass as MediaClass, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType, REPEAT_MODES as REPEAT_MODES, RepeatMode as RepeatMode, SERVICE_BROWSE_MEDIA as SERVICE_BROWSE_MEDIA, SERVICE_CLEAR_PLAYLIST as SERVICE_CLEAR_PLAYLIST, SERVICE_JOIN as SERVICE_JOIN, SERVICE_PLAY_MEDIA as SERVICE_PLAY_MEDIA, SERVICE_SEARCH_MEDIA as SERVICE_SEARCH_MEDIA, SERVICE_SELECT_SOUND_MODE as SERVICE_SELECT_SOUND_MODE, SERVICE_SELECT_SOURCE as SERVICE_SELECT_SOURCE, SERVICE_UNJOIN as SERVICE_UNJOIN, _DEPRECATED_MEDIA_CLASS_DIRECTORY as _DEPRECATED_MEDIA_CLASS_DIRECTORY, _DEPRECATED_SUPPORT_BROWSE_MEDIA as _DEPRECATED_SUPPORT_BROWSE_MEDIA, _DEPRECATED_SUPPORT_CLEAR_PLAYLIST as _DEPRECATED_SUPPORT_CLEAR_PLAYLIST, _DEPRECATED_SUPPORT_GROUPING as _DEPRECATED_SUPPORT_GROUPING, _DEPRECATED_SUPPORT_NEXT_TRACK as _DEPRECATED_SUPPORT_NEXT_TRACK, _DEPRECATED_SUPPORT_PAUSE as _DEPRECATED_SUPPORT_PAUSE, _DEPRECATED_SUPPORT_PLAY as _DEPRECATED_SUPPORT_PLAY, _DEPRECATED_SUPPORT_PLAY_MEDIA as _DEPRECATED_SUPPORT_PLAY_MEDIA, _DEPRECATED_SUPPORT_PREVIOUS_TRACK as _DEPRECATED_SUPPORT_PREVIOUS_TRACK, _DEPRECATED_SUPPORT_REPEAT_SET as _DEPRECATED_SUPPORT_REPEAT_SET, _DEPRECATED_SUPPORT_SEEK as _DEPRECATED_SUPPORT_SEEK, _DEPRECATED_SUPPORT_SELECT_SOUND_MODE as _DEPRECATED_SUPPORT_SELECT_SOUND_MODE, _DEPRECATED_SUPPORT_SELECT_SOURCE as _DEPRECATED_SUPPORT_SELECT_SOURCE, _DEPRECATED_SUPPORT_SHUFFLE_SET as _DEPRECATED_SUPPORT_SHUFFLE_SET, _DEPRECATED_SUPPORT_STOP as _DEPRECATED_SUPPORT_STOP, _DEPRECATED_SUPPORT_TURN_OFF as _DEPRECATED_SUPPORT_TURN_OFF, _DEPRECATED_SUPPORT_TURN_ON as _DEPRECATED_SUPPORT_TURN_ON, _DEPRECATED_SUPPORT_VOLUME_MUTE as _DEPRECATED_SUPPORT_VOLUME_MUTE, _DEPRECATED_SUPPORT_VOLUME_SET as _DEPRECATED_SUPPORT_VOLUME_SET, _DEPRECATED_SUPPORT_VOLUME_STEP as _DEPRECATED_SUPPORT_VOLUME_STEP
7
+ from .errors import BrowseError as BrowseError, SearchError as SearchError
8
8
  from _typeshed import Incomplete
9
9
  from aiohttp import web
10
10
  from aiohttp.typedefs import LooseHeaders as LooseHeaders
@@ -283,6 +283,8 @@ class MediaPlayerEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
283
283
  @property
284
284
  def state_attributes(self) -> dict[str, Any]: ...
285
285
  async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
286
+ async def async_internal_search_media(self, search_query: str, media_content_type: MediaType | str | None = None, media_content_id: str | None = None, media_filter_classes: list[MediaClass] | None = None) -> SearchMedia: ...
287
+ async def async_search_media(self, query: SearchMediaQuery) -> SearchMedia: ...
286
288
  def join_players(self, group_members: list[str]) -> None: ...
287
289
  async def async_join_players(self, group_members: list[str]) -> None: ...
288
290
  def unjoin_player(self) -> None: ...
@@ -302,6 +304,8 @@ class MediaPlayerImageView(HomeAssistantView):
302
304
 
303
305
  @websocket_api.async_response
304
306
  async def websocket_browse_media(hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict[str, Any]) -> None: ...
307
+ @websocket_api.async_response
308
+ async def websocket_search_media(hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict[str, Any]) -> None: ...
305
309
 
306
310
  _FETCH_TIMEOUT: Incomplete
307
311
 
@@ -1,6 +1,7 @@
1
1
  from .const import CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, MediaClass as MediaClass, MediaType as MediaType
2
2
  from _typeshed import Incomplete
3
3
  from collections.abc import Sequence
4
+ from dataclasses import dataclass, field
4
5
  from homeassistant.components.http.auth import async_sign_path as async_sign_path
5
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
7
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
@@ -23,7 +24,21 @@ class BrowseMedia:
23
24
  children_media_class: Incomplete
24
25
  thumbnail: Incomplete
25
26
  not_shown: Incomplete
26
- def __init__(self, *, media_class: MediaClass | str, media_content_id: str, media_content_type: MediaType | str, title: str, can_play: bool, can_expand: bool, children: Sequence[BrowseMedia] | None = None, children_media_class: MediaClass | str | None = None, thumbnail: str | None = None, not_shown: int = 0) -> None: ...
27
+ can_search: Incomplete
28
+ def __init__(self, *, media_class: MediaClass | str, media_content_id: str, media_content_type: MediaType | str, title: str, can_play: bool, can_expand: bool, children: Sequence[BrowseMedia] | None = None, children_media_class: MediaClass | str | None = None, thumbnail: str | None = None, not_shown: int = 0, can_search: bool = False) -> None: ...
27
29
  def as_dict(self, *, parent: bool = True) -> dict[str, Any]: ...
28
30
  def calculate_children_class(self) -> None: ...
29
31
  def __repr__(self) -> str: ...
32
+
33
+ @dataclass(kw_only=True, frozen=True)
34
+ class SearchMedia:
35
+ version: int = field(default=1)
36
+ result: list[BrowseMedia]
37
+ def as_dict(self, *, parent: bool = True) -> dict[str, Any]: ...
38
+
39
+ @dataclass(kw_only=True, frozen=True)
40
+ class SearchMediaQuery:
41
+ search_query: str
42
+ media_content_type: MediaType | str | None = field(default=None)
43
+ media_content_id: str | None = ...
44
+ media_filter_classes: list[MediaClass] | None = field(default=None)
@@ -16,6 +16,8 @@ ATTR_MEDIA_ARTIST: str
16
16
  ATTR_MEDIA_CHANNEL: str
17
17
  ATTR_MEDIA_CONTENT_ID: str
18
18
  ATTR_MEDIA_CONTENT_TYPE: str
19
+ ATTR_MEDIA_SEARCH_QUERY: str
20
+ ATTR_MEDIA_FILTER_CLASSES: str
19
21
  ATTR_MEDIA_DURATION: str
20
22
  ATTR_MEDIA_ENQUEUE: str
21
23
  ATTR_MEDIA_EXTRA: str
@@ -136,6 +138,7 @@ SERVICE_CLEAR_PLAYLIST: str
136
138
  SERVICE_JOIN: str
137
139
  SERVICE_PLAY_MEDIA: str
138
140
  SERVICE_BROWSE_MEDIA: str
141
+ SERVICE_SEARCH_MEDIA: str
139
142
  SERVICE_SELECT_SOUND_MODE: str
140
143
  SERVICE_SELECT_SOURCE: str
141
144
  SERVICE_UNJOIN: str
@@ -172,6 +175,7 @@ class MediaPlayerEntityFeature(IntFlag):
172
175
  GROUPING = 524288
173
176
  MEDIA_ANNOUNCE = 1048576
174
177
  MEDIA_ENQUEUE = 2097152
178
+ SEARCH_MEDIA = 4194304
175
179
 
176
180
  _DEPRECATED_SUPPORT_PAUSE: Incomplete
177
181
  _DEPRECATED_SUPPORT_SEEK: Incomplete
@@ -2,3 +2,4 @@ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
2
2
 
3
3
  class MediaPlayerException(HomeAssistantError): ...
4
4
  class BrowseError(MediaPlayerException): ...
5
+ class SearchError(MediaPlayerException): ...
@@ -2,3 +2,4 @@ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
2
2
 
3
3
  class MediaSourceError(HomeAssistantError): ...
4
4
  class Unresolvable(MediaSourceError): ...
5
+ class UnknownMediaSource(MediaSourceError, ValueError): ...
@@ -1,12 +1,12 @@
1
1
  import meteireann
2
2
  from .const import DOMAIN as DOMAIN
3
3
  from _typeshed import Incomplete
4
+ from collections.abc import Mapping
4
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
6
  from homeassistant.const import CONF_ELEVATION as CONF_ELEVATION, CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, Platform as Platform
6
7
  from homeassistant.core import HomeAssistant as HomeAssistant
7
8
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
8
9
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
9
- from types import MappingProxyType
10
10
  from typing import Any, Self
11
11
 
12
12
  _LOGGER: Incomplete
@@ -22,5 +22,5 @@ class MetEireannWeatherData:
22
22
  current_weather_data: dict[str, Any]
23
23
  daily_forecast: list[dict[str, Any]]
24
24
  hourly_forecast: list[dict[str, Any]]
25
- def __init__(self, config: MappingProxyType[str, Any], weather_data: meteireann.WeatherData) -> None: ...
25
+ def __init__(self, config: Mapping[str, Any], weather_data: meteireann.WeatherData) -> None: ...
26
26
  async def fetch_data(self) -> Self: ...
@@ -1,6 +1,7 @@
1
1
  from . import MetEireannWeatherData as MetEireannWeatherData
2
2
  from .const import CONDITION_MAP as CONDITION_MAP, DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN, FORECAST_MAP as FORECAST_MAP
3
3
  from _typeshed import Incomplete
4
+ from collections.abc import Mapping
4
5
  from homeassistant.components.weather import ATTR_FORECAST_CONDITION as ATTR_FORECAST_CONDITION, ATTR_FORECAST_TIME as ATTR_FORECAST_TIME, Forecast as Forecast, SingleCoordinatorWeatherEntity as SingleCoordinatorWeatherEntity, WeatherEntityFeature as WeatherEntityFeature
5
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
7
  from homeassistant.const import CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, CONF_NAME as CONF_NAME, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature
@@ -8,14 +9,13 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
8
9
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
9
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
10
11
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
11
- from types import MappingProxyType
12
12
  from typing import Any
13
13
 
14
14
  _LOGGER: Incomplete
15
15
 
16
16
  def format_condition(condition: str | None) -> str | None: ...
17
17
  async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
18
- def _calculate_unique_id(config: MappingProxyType[str, Any], hourly: bool) -> str: ...
18
+ def _calculate_unique_id(config: Mapping[str, Any], hourly: bool) -> str: ...
19
19
 
20
20
  class MetEireannWeather(SingleCoordinatorWeatherEntity[DataUpdateCoordinator[MetEireannWeatherData]]):
21
21
  _attr_attribution: str
@@ -28,7 +28,7 @@ class MetEireannWeather(SingleCoordinatorWeatherEntity[DataUpdateCoordinator[Met
28
28
  _config: Incomplete
29
29
  _attr_name: Incomplete
30
30
  _attr_device_info: Incomplete
31
- def __init__(self, coordinator: DataUpdateCoordinator[MetEireannWeatherData], config: MappingProxyType[str, Any]) -> None: ...
31
+ def __init__(self, coordinator: DataUpdateCoordinator[MetEireannWeatherData], config: Mapping[str, Any]) -> None: ...
32
32
  @property
33
33
  def condition(self) -> str | None: ...
34
34
  @property
@@ -1,14 +1,14 @@
1
1
  import voluptuous as vol
2
2
  from .const import CONF_MJPEG_URL as CONF_MJPEG_URL, CONF_STILL_IMAGE_URL as CONF_STILL_IMAGE_URL, DOMAIN as DOMAIN, LOGGER as LOGGER
3
+ from collections.abc import Mapping
3
4
  from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
4
5
  from homeassistant.const import CONF_AUTHENTICATION as CONF_AUTHENTICATION, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, HTTP_BASIC_AUTHENTICATION as HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION as HTTP_DIGEST_AUTHENTICATION
5
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
7
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
- from types import MappingProxyType
8
8
  from typing import Any
9
9
 
10
10
  @callback
11
- def async_get_schema(defaults: dict[str, Any] | MappingProxyType[str, Any], show_name: bool = False) -> vol.Schema: ...
11
+ def async_get_schema(defaults: Mapping[str, Any], show_name: bool = False) -> vol.Schema: ...
12
12
  def validate_url(url: str, username: str | None, password: str, verify_ssl: bool, authentication: str = ...) -> str: ...
13
13
  async def async_validate_input(hass: HomeAssistant, user_input: dict[str, Any]) -> tuple[dict[str, str], str]: ...
14
14
 
@@ -19,13 +19,13 @@ class MotionMountPresets(MotionMountEntity, SelectEntity):
19
19
  _attr_translation_key: str
20
20
  _attr_unique_id: Incomplete
21
21
  _presets: list[motionmount.Preset]
22
+ _attr_current_option: Incomplete
22
23
  def __init__(self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry) -> None: ...
23
24
  _attr_options: Incomplete
24
25
  def _update_options(self, presets: list[motionmount.Preset]) -> None: ...
25
26
  pin: Incomplete
26
27
  async def _ensure_connected(self) -> bool: ...
27
28
  async def async_update(self) -> None: ...
28
- _attr_current_option: Incomplete
29
29
  @property
30
30
  def current_option(self) -> str | None: ...
31
31
  async def async_select_option(self, option: str) -> None: ...
@@ -2,7 +2,7 @@ import asyncio
2
2
  import voluptuous as vol
3
3
  from .addon import get_addon_manager as get_addon_manager
4
4
  from .client import MqttClientSetup as MqttClientSetup
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
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_BLUE_TEMPLATE as CONF_BLUE_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TEMPLATE as CONF_BRIGHTNESS_COMMAND_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TOPIC as CONF_BRIGHTNESS_COMMAND_TOPIC, CONF_BRIGHTNESS_SCALE as CONF_BRIGHTNESS_SCALE, CONF_BRIGHTNESS_STATE_TOPIC as CONF_BRIGHTNESS_STATE_TOPIC, CONF_BRIGHTNESS_TEMPLATE as CONF_BRIGHTNESS_TEMPLATE, CONF_BRIGHTNESS_VALUE_TEMPLATE as CONF_BRIGHTNESS_VALUE_TEMPLATE, 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_COLOR_MODE_STATE_TOPIC as CONF_COLOR_MODE_STATE_TOPIC, CONF_COLOR_MODE_VALUE_TEMPLATE as CONF_COLOR_MODE_VALUE_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TEMPLATE as CONF_COLOR_TEMP_COMMAND_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TOPIC as CONF_COLOR_TEMP_COMMAND_TOPIC, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COLOR_TEMP_STATE_TOPIC as CONF_COLOR_TEMP_STATE_TOPIC, CONF_COLOR_TEMP_TEMPLATE as CONF_COLOR_TEMP_TEMPLATE, CONF_COLOR_TEMP_VALUE_TEMPLATE as CONF_COLOR_TEMP_VALUE_TEMPLATE, CONF_COMMAND_OFF_TEMPLATE as CONF_COMMAND_OFF_TEMPLATE, CONF_COMMAND_ON_TEMPLATE as CONF_COMMAND_ON_TEMPLATE, CONF_COMMAND_TEMPLATE as CONF_COMMAND_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_DISCOVERY_PREFIX as CONF_DISCOVERY_PREFIX, CONF_EFFECT_COMMAND_TEMPLATE as CONF_EFFECT_COMMAND_TEMPLATE, CONF_EFFECT_COMMAND_TOPIC as CONF_EFFECT_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_EFFECT_STATE_TOPIC as CONF_EFFECT_STATE_TOPIC, CONF_EFFECT_TEMPLATE as CONF_EFFECT_TEMPLATE, CONF_EFFECT_VALUE_TEMPLATE as CONF_EFFECT_VALUE_TEMPLATE, CONF_ENTITY_PICTURE as CONF_ENTITY_PICTURE, CONF_EXPIRE_AFTER as CONF_EXPIRE_AFTER, CONF_FLASH as CONF_FLASH, CONF_FLASH_TIME_LONG as CONF_FLASH_TIME_LONG, CONF_FLASH_TIME_SHORT as CONF_FLASH_TIME_SHORT, CONF_GREEN_TEMPLATE as CONF_GREEN_TEMPLATE, CONF_HS_COMMAND_TEMPLATE as CONF_HS_COMMAND_TEMPLATE, CONF_HS_COMMAND_TOPIC as CONF_HS_COMMAND_TOPIC, CONF_HS_STATE_TOPIC as CONF_HS_STATE_TOPIC, CONF_HS_VALUE_TEMPLATE as CONF_HS_VALUE_TEMPLATE, CONF_KEEPALIVE as CONF_KEEPALIVE, CONF_LAST_RESET_VALUE_TEMPLATE as CONF_LAST_RESET_VALUE_TEMPLATE, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_ON_COMMAND_TYPE as CONF_ON_COMMAND_TYPE, 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_RED_TEMPLATE as CONF_RED_TEMPLATE, CONF_RETAIN as CONF_RETAIN, CONF_RGBWW_COMMAND_TEMPLATE as CONF_RGBWW_COMMAND_TEMPLATE, CONF_RGBWW_COMMAND_TOPIC as CONF_RGBWW_COMMAND_TOPIC, CONF_RGBWW_STATE_TOPIC as CONF_RGBWW_STATE_TOPIC, CONF_RGBWW_VALUE_TEMPLATE as CONF_RGBWW_VALUE_TEMPLATE, CONF_RGBW_COMMAND_TEMPLATE as CONF_RGBW_COMMAND_TEMPLATE, CONF_RGBW_COMMAND_TOPIC as CONF_RGBW_COMMAND_TOPIC, CONF_RGBW_STATE_TOPIC as CONF_RGBW_STATE_TOPIC, CONF_RGBW_VALUE_TEMPLATE as CONF_RGBW_VALUE_TEMPLATE, CONF_RGB_COMMAND_TEMPLATE as CONF_RGB_COMMAND_TEMPLATE, CONF_RGB_COMMAND_TOPIC as CONF_RGB_COMMAND_TOPIC, CONF_RGB_STATE_TOPIC as CONF_RGB_STATE_TOPIC, CONF_RGB_VALUE_TEMPLATE as CONF_RGB_VALUE_TEMPLATE, CONF_SCHEMA as CONF_SCHEMA, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_STATE_VALUE_TEMPLATE as CONF_STATE_VALUE_TEMPLATE, CONF_SUGGESTED_DISPLAY_PRECISION as CONF_SUGGESTED_DISPLAY_PRECISION, CONF_SUPPORTED_COLOR_MODES as CONF_SUPPORTED_COLOR_MODES, CONF_TLS_INSECURE as CONF_TLS_INSECURE, CONF_TRANSITION as CONF_TRANSITION, CONF_TRANSPORT as CONF_TRANSPORT, CONF_WHITE_COMMAND_TOPIC as CONF_WHITE_COMMAND_TOPIC, CONF_WHITE_SCALE as CONF_WHITE_SCALE, CONF_WILL_MESSAGE as CONF_WILL_MESSAGE, CONF_WS_HEADERS as CONF_WS_HEADERS, CONF_WS_PATH as CONF_WS_PATH, CONF_XY_COMMAND_TEMPLATE as CONF_XY_COMMAND_TEMPLATE, CONF_XY_COMMAND_TOPIC as CONF_XY_COMMAND_TOPIC, CONF_XY_STATE_TOPIC as CONF_XY_STATE_TOPIC, CONF_XY_VALUE_TEMPLATE as CONF_XY_VALUE_TEMPLATE, DEFAULT_BIRTH as DEFAULT_BIRTH, DEFAULT_DISCOVERY as DEFAULT_DISCOVERY, DEFAULT_ENCODING as DEFAULT_ENCODING, DEFAULT_KEEPALIVE as DEFAULT_KEEPALIVE, DEFAULT_ON_COMMAND_TYPE as DEFAULT_ON_COMMAND_TYPE, DEFAULT_PAYLOAD_AVAILABLE as DEFAULT_PAYLOAD_AVAILABLE, DEFAULT_PAYLOAD_NOT_AVAILABLE as DEFAULT_PAYLOAD_NOT_AVAILABLE, DEFAULT_PAYLOAD_OFF as DEFAULT_PAYLOAD_OFF, DEFAULT_PAYLOAD_ON as DEFAULT_PAYLOAD_ON, 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, VALUES_ON_COMMAND_TYPE as VALUES_ON_COMMAND_TYPE
6
6
  from .models import MqttAvailabilityData as MqttAvailabilityData, MqttDeviceData as MqttDeviceData, MqttSubentryData as MqttSubentryData
7
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
8
8
  from _typeshed import Incomplete
@@ -12,10 +12,11 @@ from dataclasses import dataclass
12
12
  from enum import IntEnum
13
13
  from homeassistant.components.file_upload import process_uploaded_file as process_uploaded_file
14
14
  from homeassistant.components.hassio import AddonError as AddonError, AddonManager as AddonManager, AddonState as AddonState
15
+ from homeassistant.components.light import DEFAULT_MAX_KELVIN as DEFAULT_MAX_KELVIN, DEFAULT_MIN_KELVIN as DEFAULT_MIN_KELVIN, VALID_COLOR_MODES as VALID_COLOR_MODES, valid_supported_color_modes as valid_supported_color_modes
15
16
  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
17
  from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass
17
18
  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
19
+ 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_BRIGHTNESS as CONF_BRIGHTNESS, 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_EFFECT as CONF_EFFECT, 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_PAYLOAD_OFF as CONF_PAYLOAD_OFF, CONF_PAYLOAD_ON as CONF_PAYLOAD_ON, CONF_PLATFORM as CONF_PLATFORM, CONF_PORT as CONF_PORT, CONF_PROTOCOL as CONF_PROTOCOL, CONF_STATE_TEMPLATE as CONF_STATE_TEMPLATE, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_USERNAME as CONF_USERNAME, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE
19
20
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
20
21
  from homeassistant.data_entry_flow import AbortFlow as AbortFlow, SectionConfig as SectionConfig, section as section
21
22
  from homeassistant.helpers.hassio import is_hassio as is_hassio
@@ -60,17 +61,24 @@ OPTIONS_SELECTOR: Incomplete
60
61
  SUGGESTED_DISPLAY_PRECISION_SELECTOR: Incomplete
61
62
  EXPIRE_AFTER_SELECTOR: Incomplete
62
63
  SWITCH_DEVICE_CLASS_SELECTOR: Incomplete
64
+ LIGHT_SCHEMA_SELECTOR: Incomplete
65
+ KELVIN_SELECTOR: Incomplete
66
+ SCALE_SELECTOR: Incomplete
67
+ FLASH_TIME_SELECTOR: Incomplete
68
+ ON_COMMAND_TYPE_SELECTOR: Incomplete
69
+ SUPPORTED_COLOR_MODES_SELECTOR: Incomplete
63
70
 
64
71
  @callback
65
72
  def validate_sensor_platform_config(config: dict[str, Any]) -> dict[str, str]: ...
66
73
 
67
- @dataclass(frozen=True)
74
+ @dataclass(frozen=True, kw_only=True)
68
75
  class PlatformField:
69
76
  selector: Selector[Any] | Callable[..., Selector[Any]]
70
77
  required: bool
71
78
  validator: Callable[..., Any]
72
79
  error: str | None = ...
73
- default: str | int | vol.Undefined = ...
80
+ default: str | int | bool | None | vol.Undefined = ...
81
+ is_schema_default: bool = ...
74
82
  exclude_from_reconfig: bool = ...
75
83
  conditions: tuple[dict[str, Any], ...] | None = ...
76
84
  custom_filtering: bool = ...
@@ -78,6 +86,8 @@ class PlatformField:
78
86
 
79
87
  @callback
80
88
  def unit_of_measurement_selector(user_data: dict[str, Any | None]) -> Selector: ...
89
+ @callback
90
+ def validate_light_platform_config(user_data: dict[str, Any]) -> dict[str, str]: ...
81
91
 
82
92
  COMMON_ENTITY_FIELDS: Incomplete
83
93
  PLATFORM_ENTITY_FIELDS: Incomplete
@@ -99,6 +109,8 @@ def calculate_merged_config(merged_user_input: dict[str, Any], data_schema_field
99
109
  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
110
  @callback
101
111
  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: ...
112
+ @callback
113
+ def subentry_schema_default_data_from_fields(data_schema_fields: dict[str, PlatformField], component_data: dict[str, Any]) -> dict[str, Any]: ...
102
114
 
103
115
  class FlowHandler(ConfigFlow, domain=DOMAIN):
104
116
  VERSION = CONFIG_ENTRY_VERSION
@@ -154,6 +166,8 @@ class MQTTSubentryFlowHandler(ConfigSubentryFlow):
154
166
  async def async_step_entity_platform_config(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
155
167
  async def async_step_mqtt_platform_config(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
156
168
  @callback
169
+ def _async_update_component_data_defaults(self) -> None: ...
170
+ @callback
157
171
  def _async_create_subentry(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
158
172
  async def async_step_availability(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
159
173
  async def async_step_summary_menu(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
@@ -76,6 +76,7 @@ CONF_EFFECT_TEMPLATE: str
76
76
  CONF_EFFECT_VALUE_TEMPLATE: str
77
77
  CONF_ENTITY_PICTURE: str
78
78
  CONF_EXPIRE_AFTER: str
79
+ CONF_FLASH: str
79
80
  CONF_FLASH_TIME_LONG: str
80
81
  CONF_FLASH_TIME_SHORT: str
81
82
  CONF_GREEN_TEMPLATE: str
@@ -128,6 +129,7 @@ CONF_TEMP_STATE_TOPIC: str
128
129
  CONF_TEMP_INITIAL: str
129
130
  CONF_TEMP_MAX: str
130
131
  CONF_TEMP_MIN: str
132
+ CONF_TRANSITION: str
131
133
  CONF_XY_COMMAND_TEMPLATE: str
132
134
  CONF_XY_COMMAND_TOPIC: str
133
135
  CONF_XY_STATE_TOPIC: str
@@ -176,6 +178,7 @@ DEFAULT_WS_PATH: str
176
178
  DEFAULT_POSITION_CLOSED: int
177
179
  DEFAULT_POSITION_OPEN: int
178
180
  DEFAULT_WHITE_SCALE: int
181
+ VALUES_ON_COMMAND_TYPE: Incomplete
179
182
  PROTOCOL_31: str
180
183
  PROTOCOL_311: str
181
184
  PROTOCOL_5: str
@@ -1,7 +1,7 @@
1
1
  from . import subscription as subscription
2
2
  from .config import MQTT_BASE_SCHEMA as MQTT_BASE_SCHEMA
3
- from .const import CONF_PAYLOAD_RESET as CONF_PAYLOAD_RESET, CONF_STATE_TOPIC as CONF_STATE_TOPIC
4
- from .entity import CONF_JSON_ATTRS_TOPIC as CONF_JSON_ATTRS_TOPIC, MqttEntity as MqttEntity, async_setup_entity_entry_helper as async_setup_entity_entry_helper
3
+ from .const import CONF_JSON_ATTRS_TEMPLATE as CONF_JSON_ATTRS_TEMPLATE, CONF_JSON_ATTRS_TOPIC as CONF_JSON_ATTRS_TOPIC, CONF_PAYLOAD_RESET as CONF_PAYLOAD_RESET, CONF_STATE_TOPIC as CONF_STATE_TOPIC
4
+ from .entity import MqttEntity as MqttEntity, async_setup_entity_entry_helper as async_setup_entity_entry_helper
5
5
  from .models import MqttValueTemplate as MqttValueTemplate, ReceiveMessage as ReceiveMessage
6
6
  from .schemas import MQTT_ENTITY_COMMON_SCHEMA as MQTT_ENTITY_COMMON_SCHEMA
7
7
  from .util import valid_subscribe_topic as valid_subscribe_topic
@@ -15,6 +15,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
15
15
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
16
16
  from homeassistant.helpers.service_info.mqtt import ReceivePayloadType as ReceivePayloadType
17
17
  from homeassistant.helpers.typing import ConfigType as ConfigType, VolSchemaType as VolSchemaType
18
+ from typing import Any
18
19
 
19
20
  _LOGGER: Incomplete
20
21
  PARALLEL_UPDATES: int
@@ -39,21 +40,17 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity):
39
40
  _value_template: Callable[[ReceivePayloadType], ReceivePayloadType]
40
41
  @staticmethod
41
42
  def config_schema() -> VolSchemaType: ...
43
+ _attr_source_type: Incomplete
42
44
  def _setup_from_config(self, config: ConfigType) -> None: ...
45
+ _attr_location_name: Incomplete
43
46
  @callback
44
47
  def _tracker_message_received(self, msg: ReceiveMessage) -> None: ...
45
48
  @callback
46
49
  def _prepare_subscribe_topics(self) -> None: ...
47
- @property
48
- def force_update(self) -> bool: ...
49
50
  async def _subscribe_topics(self) -> None: ...
50
- @property
51
- def latitude(self) -> float | None: ...
52
- @property
53
- def location_accuracy(self) -> int: ...
54
- @property
55
- def longitude(self) -> float | None: ...
56
- @property
57
- def location_name(self) -> str | None: ...
58
- @property
59
- def source_type(self) -> SourceType: ...
51
+ _attr_latitude: Incomplete
52
+ _attr_longitude: Incomplete
53
+ _attr_location_accuracy: Incomplete
54
+ _attr_extra_state_attributes: Incomplete
55
+ @callback
56
+ def _process_update_extra_state_attributes(self, extra_state_attributes: dict[str, Any]) -> None: ...
@@ -46,6 +46,8 @@ def init_entity_id_from_config(hass: HomeAssistant, entity: Entity, config: Conf
46
46
  class MqttAttributesMixin(Entity):
47
47
  _attributes_extra_blocked: frozenset[str]
48
48
  _attr_tpl: Callable[[ReceivePayloadType], ReceivePayloadType] | None
49
+ _message_callback: Callable[[MessageCallbackType, set[str] | None, ReceiveMessage], None]
50
+ _process_update_extra_state_attributes: Callable[[dict[str, Any]], None]
49
51
  _attributes_sub_state: dict[str, EntitySubscription]
50
52
  _attributes_config: Incomplete
51
53
  def __init__(self, config: ConfigType) -> None: ...
@@ -61,6 +63,7 @@ class MqttAttributesMixin(Entity):
61
63
  def _attributes_message_received(self, msg: ReceiveMessage) -> None: ...
62
64
 
63
65
  class MqttAvailabilityMixin(Entity):
66
+ _message_callback: Callable[[MessageCallbackType, set[str] | None, ReceiveMessage], None]
64
67
  _availability_sub_state: dict[str, EntitySubscription]
65
68
  _available: dict[str, str | bool]
66
69
  _available_latest: bool
@@ -1,6 +1,6 @@
1
1
  from .. import subscription as subscription
2
2
  from ..config import MQTT_RW_SCHEMA as MQTT_RW_SCHEMA
3
- from ..const import CONF_BRIGHTNESS_COMMAND_TEMPLATE as CONF_BRIGHTNESS_COMMAND_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TOPIC as CONF_BRIGHTNESS_COMMAND_TOPIC, CONF_BRIGHTNESS_SCALE as CONF_BRIGHTNESS_SCALE, CONF_BRIGHTNESS_STATE_TOPIC as CONF_BRIGHTNESS_STATE_TOPIC, CONF_BRIGHTNESS_VALUE_TEMPLATE as CONF_BRIGHTNESS_VALUE_TEMPLATE, CONF_COLOR_MODE_STATE_TOPIC as CONF_COLOR_MODE_STATE_TOPIC, CONF_COLOR_MODE_VALUE_TEMPLATE as CONF_COLOR_MODE_VALUE_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TEMPLATE as CONF_COLOR_TEMP_COMMAND_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TOPIC as CONF_COLOR_TEMP_COMMAND_TOPIC, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COLOR_TEMP_STATE_TOPIC as CONF_COLOR_TEMP_STATE_TOPIC, CONF_COLOR_TEMP_VALUE_TEMPLATE as CONF_COLOR_TEMP_VALUE_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_COMMAND_TEMPLATE as CONF_EFFECT_COMMAND_TEMPLATE, CONF_EFFECT_COMMAND_TOPIC as CONF_EFFECT_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_EFFECT_STATE_TOPIC as CONF_EFFECT_STATE_TOPIC, CONF_EFFECT_VALUE_TEMPLATE as CONF_EFFECT_VALUE_TEMPLATE, CONF_HS_COMMAND_TEMPLATE as CONF_HS_COMMAND_TEMPLATE, CONF_HS_COMMAND_TOPIC as CONF_HS_COMMAND_TOPIC, CONF_HS_STATE_TOPIC as CONF_HS_STATE_TOPIC, CONF_HS_VALUE_TEMPLATE as CONF_HS_VALUE_TEMPLATE, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_ON_COMMAND_TYPE as CONF_ON_COMMAND_TYPE, CONF_RGBWW_COMMAND_TEMPLATE as CONF_RGBWW_COMMAND_TEMPLATE, CONF_RGBWW_COMMAND_TOPIC as CONF_RGBWW_COMMAND_TOPIC, CONF_RGBWW_STATE_TOPIC as CONF_RGBWW_STATE_TOPIC, CONF_RGBWW_VALUE_TEMPLATE as CONF_RGBWW_VALUE_TEMPLATE, CONF_RGBW_COMMAND_TEMPLATE as CONF_RGBW_COMMAND_TEMPLATE, CONF_RGBW_COMMAND_TOPIC as CONF_RGBW_COMMAND_TOPIC, CONF_RGBW_STATE_TOPIC as CONF_RGBW_STATE_TOPIC, CONF_RGBW_VALUE_TEMPLATE as CONF_RGBW_VALUE_TEMPLATE, CONF_RGB_COMMAND_TEMPLATE as CONF_RGB_COMMAND_TEMPLATE, CONF_RGB_COMMAND_TOPIC as CONF_RGB_COMMAND_TOPIC, CONF_RGB_STATE_TOPIC as CONF_RGB_STATE_TOPIC, CONF_RGB_VALUE_TEMPLATE as CONF_RGB_VALUE_TEMPLATE, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_STATE_VALUE_TEMPLATE as CONF_STATE_VALUE_TEMPLATE, CONF_WHITE_COMMAND_TOPIC as CONF_WHITE_COMMAND_TOPIC, CONF_WHITE_SCALE as CONF_WHITE_SCALE, CONF_XY_COMMAND_TEMPLATE as CONF_XY_COMMAND_TEMPLATE, CONF_XY_COMMAND_TOPIC as CONF_XY_COMMAND_TOPIC, CONF_XY_STATE_TOPIC as CONF_XY_STATE_TOPIC, CONF_XY_VALUE_TEMPLATE as CONF_XY_VALUE_TEMPLATE, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_ON_COMMAND_TYPE as DEFAULT_ON_COMMAND_TYPE, DEFAULT_PAYLOAD_OFF as DEFAULT_PAYLOAD_OFF, DEFAULT_PAYLOAD_ON as DEFAULT_PAYLOAD_ON, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE, PAYLOAD_NONE as PAYLOAD_NONE
3
+ from ..const import CONF_BRIGHTNESS_COMMAND_TEMPLATE as CONF_BRIGHTNESS_COMMAND_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TOPIC as CONF_BRIGHTNESS_COMMAND_TOPIC, CONF_BRIGHTNESS_SCALE as CONF_BRIGHTNESS_SCALE, CONF_BRIGHTNESS_STATE_TOPIC as CONF_BRIGHTNESS_STATE_TOPIC, CONF_BRIGHTNESS_VALUE_TEMPLATE as CONF_BRIGHTNESS_VALUE_TEMPLATE, CONF_COLOR_MODE_STATE_TOPIC as CONF_COLOR_MODE_STATE_TOPIC, CONF_COLOR_MODE_VALUE_TEMPLATE as CONF_COLOR_MODE_VALUE_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TEMPLATE as CONF_COLOR_TEMP_COMMAND_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TOPIC as CONF_COLOR_TEMP_COMMAND_TOPIC, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COLOR_TEMP_STATE_TOPIC as CONF_COLOR_TEMP_STATE_TOPIC, CONF_COLOR_TEMP_VALUE_TEMPLATE as CONF_COLOR_TEMP_VALUE_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_COMMAND_TEMPLATE as CONF_EFFECT_COMMAND_TEMPLATE, CONF_EFFECT_COMMAND_TOPIC as CONF_EFFECT_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_EFFECT_STATE_TOPIC as CONF_EFFECT_STATE_TOPIC, CONF_EFFECT_VALUE_TEMPLATE as CONF_EFFECT_VALUE_TEMPLATE, CONF_HS_COMMAND_TEMPLATE as CONF_HS_COMMAND_TEMPLATE, CONF_HS_COMMAND_TOPIC as CONF_HS_COMMAND_TOPIC, CONF_HS_STATE_TOPIC as CONF_HS_STATE_TOPIC, CONF_HS_VALUE_TEMPLATE as CONF_HS_VALUE_TEMPLATE, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_ON_COMMAND_TYPE as CONF_ON_COMMAND_TYPE, CONF_RGBWW_COMMAND_TEMPLATE as CONF_RGBWW_COMMAND_TEMPLATE, CONF_RGBWW_COMMAND_TOPIC as CONF_RGBWW_COMMAND_TOPIC, CONF_RGBWW_STATE_TOPIC as CONF_RGBWW_STATE_TOPIC, CONF_RGBWW_VALUE_TEMPLATE as CONF_RGBWW_VALUE_TEMPLATE, CONF_RGBW_COMMAND_TEMPLATE as CONF_RGBW_COMMAND_TEMPLATE, CONF_RGBW_COMMAND_TOPIC as CONF_RGBW_COMMAND_TOPIC, CONF_RGBW_STATE_TOPIC as CONF_RGBW_STATE_TOPIC, CONF_RGBW_VALUE_TEMPLATE as CONF_RGBW_VALUE_TEMPLATE, CONF_RGB_COMMAND_TEMPLATE as CONF_RGB_COMMAND_TEMPLATE, CONF_RGB_COMMAND_TOPIC as CONF_RGB_COMMAND_TOPIC, CONF_RGB_STATE_TOPIC as CONF_RGB_STATE_TOPIC, CONF_RGB_VALUE_TEMPLATE as CONF_RGB_VALUE_TEMPLATE, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_STATE_VALUE_TEMPLATE as CONF_STATE_VALUE_TEMPLATE, CONF_WHITE_COMMAND_TOPIC as CONF_WHITE_COMMAND_TOPIC, CONF_WHITE_SCALE as CONF_WHITE_SCALE, CONF_XY_COMMAND_TEMPLATE as CONF_XY_COMMAND_TEMPLATE, CONF_XY_COMMAND_TOPIC as CONF_XY_COMMAND_TOPIC, CONF_XY_STATE_TOPIC as CONF_XY_STATE_TOPIC, CONF_XY_VALUE_TEMPLATE as CONF_XY_VALUE_TEMPLATE, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_ON_COMMAND_TYPE as DEFAULT_ON_COMMAND_TYPE, DEFAULT_PAYLOAD_OFF as DEFAULT_PAYLOAD_OFF, DEFAULT_PAYLOAD_ON as DEFAULT_PAYLOAD_ON, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE, PAYLOAD_NONE as PAYLOAD_NONE, VALUES_ON_COMMAND_TYPE as VALUES_ON_COMMAND_TYPE
4
4
  from ..entity import MqttEntity as MqttEntity
5
5
  from ..models import MqttCommandTemplate as MqttCommandTemplate, MqttValueTemplate as MqttValueTemplate, PayloadSentinel as PayloadSentinel, PublishPayloadType as PublishPayloadType, ReceiveMessage as ReceiveMessage, TemplateVarsType as TemplateVarsType
6
6
  from ..schemas import MQTT_ENTITY_COMMON_SCHEMA as MQTT_ENTITY_COMMON_SCHEMA
@@ -19,7 +19,6 @@ from typing import Any
19
19
  _LOGGER: Incomplete
20
20
  DEFAULT_NAME: str
21
21
  MQTT_LIGHT_ATTRIBUTES_BLOCKED: Incomplete
22
- VALUES_ON_COMMAND_TYPE: Incomplete
23
22
  COMMAND_TEMPLATE_KEYS: Incomplete
24
23
  VALUE_TEMPLATE_KEYS: Incomplete
25
24
  PLATFORM_SCHEMA_MODERN_BASIC: Incomplete
@@ -1,6 +1,6 @@
1
1
  from .. import subscription as subscription
2
2
  from ..config import DEFAULT_QOS as DEFAULT_QOS, DEFAULT_RETAIN as DEFAULT_RETAIN, MQTT_RW_SCHEMA as MQTT_RW_SCHEMA
3
- from ..const import CONF_COLOR_MODE as CONF_COLOR_MODE, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_FLASH_TIME_LONG as CONF_FLASH_TIME_LONG, CONF_FLASH_TIME_SHORT as CONF_FLASH_TIME_SHORT, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_QOS as CONF_QOS, CONF_RETAIN as CONF_RETAIN, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_SUPPORTED_COLOR_MODES as CONF_SUPPORTED_COLOR_MODES, DEFAULT_BRIGHTNESS as DEFAULT_BRIGHTNESS, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_EFFECT as DEFAULT_EFFECT, DEFAULT_FLASH_TIME_LONG as DEFAULT_FLASH_TIME_LONG, DEFAULT_FLASH_TIME_SHORT as DEFAULT_FLASH_TIME_SHORT, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE
3
+ from ..const import CONF_COLOR_MODE as CONF_COLOR_MODE, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_FLASH as CONF_FLASH, CONF_FLASH_TIME_LONG as CONF_FLASH_TIME_LONG, CONF_FLASH_TIME_SHORT as CONF_FLASH_TIME_SHORT, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_QOS as CONF_QOS, CONF_RETAIN as CONF_RETAIN, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_SUPPORTED_COLOR_MODES as CONF_SUPPORTED_COLOR_MODES, CONF_TRANSITION as CONF_TRANSITION, DEFAULT_BRIGHTNESS as DEFAULT_BRIGHTNESS, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_EFFECT as DEFAULT_EFFECT, DEFAULT_FLASH_TIME_LONG as DEFAULT_FLASH_TIME_LONG, DEFAULT_FLASH_TIME_SHORT as DEFAULT_FLASH_TIME_SHORT, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE
4
4
  from ..entity import MqttEntity as MqttEntity
5
5
  from ..models import ReceiveMessage as ReceiveMessage
6
6
  from ..schemas import MQTT_ENTITY_COMMON_SCHEMA as MQTT_ENTITY_COMMON_SCHEMA
@@ -20,6 +20,8 @@ from typing import Any
20
20
  _LOGGER: Incomplete
21
21
  DOMAIN: str
22
22
  DEFAULT_NAME: str
23
+ DEFAULT_FLASH: bool
24
+ DEFAULT_TRANSITION: bool
23
25
  _PLATFORM_SCHEMA_BASE: Incomplete
24
26
  DISCOVERY_SCHEMA_JSON: Incomplete
25
27
  PLATFORM_SCHEMA_MODERN_JSON: Incomplete
@@ -39,7 +41,6 @@ class MqttLightJson(MqttEntity, LightEntity, RestoreEntity):
39
41
  _attr_max_color_temp_kelvin: Incomplete
40
42
  _attr_effect_list: Incomplete
41
43
  _attr_assumed_state: Incomplete
42
- _attr_supported_features: Incomplete
43
44
  _attr_supported_color_modes: Incomplete
44
45
  _attr_color_mode: Incomplete
45
46
  def _setup_from_config(self, config: ConfigType) -> None: ...