homeassistant-stubs 2025.4.4__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 +6 -2
  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 +6 -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 -0
  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.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/METADATA +3 -3
  395. {homeassistant_stubs-2025.4.4.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.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/WHEEL +0 -0
  402. {homeassistant_stubs-2025.4.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
1
- from .const import LOGGER as LOGGER
1
+ from .const import DOMAIN as DOMAIN, LOGGER as LOGGER
2
2
  from .coordinator import SmConfigEntry as SmConfigEntry, SmFirmwareUpdateCoordinator as SmFirmwareUpdateCoordinator, SmFwData as SmFwData
3
3
  from .entity import SmEntity as SmEntity
4
4
  from _typeshed import Incomplete
@@ -13,6 +13,8 @@ from pysmlight.models import Firmware as Firmware, Info as Info
13
13
  from pysmlight.sse import MessageEvent as MessageEvent
14
14
  from typing import Any
15
15
 
16
+ PARALLEL_UPDATES: int
17
+
16
18
  def zigbee_latest_version(data: SmFwData, idx: int) -> Firmware | None: ...
17
19
 
18
20
  @dataclass(frozen=True, kw_only=True)
File without changes
@@ -0,0 +1,17 @@
1
+ from _typeshed import Incomplete
2
+ from typing import Final
3
+
4
+ DOMAIN: Final[str]
5
+ ATTR_IMAGES: Final[str]
6
+ ATTR_HTML: Final[str]
7
+ ATTR_SENDER_NAME: Final[str]
8
+ CONF_ENCRYPTION: Final[str]
9
+ CONF_DEBUG: Final[str]
10
+ CONF_SERVER: Final[str]
11
+ CONF_SENDER_NAME: Final[str]
12
+ DEFAULT_HOST: Final[str]
13
+ DEFAULT_PORT: Final[int]
14
+ DEFAULT_TIMEOUT: Final[int]
15
+ DEFAULT_DEBUG: Final[bool]
16
+ DEFAULT_ENCRYPTION: Final[str]
17
+ ENCRYPTION_OPTIONS: Final[Incomplete]
@@ -0,0 +1,47 @@
1
+ import smtplib
2
+ import ssl
3
+ from .const import ATTR_HTML as ATTR_HTML, ATTR_IMAGES as ATTR_IMAGES, CONF_DEBUG as CONF_DEBUG, CONF_ENCRYPTION as CONF_ENCRYPTION, CONF_SENDER_NAME as CONF_SENDER_NAME, CONF_SERVER as CONF_SERVER, DEFAULT_DEBUG as DEFAULT_DEBUG, DEFAULT_ENCRYPTION as DEFAULT_ENCRYPTION, DEFAULT_HOST as DEFAULT_HOST, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_TIMEOUT as DEFAULT_TIMEOUT, DOMAIN as DOMAIN, ENCRYPTION_OPTIONS as ENCRYPTION_OPTIONS
4
+ from _typeshed import Incomplete
5
+ from email.mime.application import MIMEApplication
6
+ from email.mime.image import MIMEImage
7
+ from email.mime.multipart import MIMEMultipart
8
+ from email.mime.text import MIMEText
9
+ from homeassistant.components.notify import ATTR_DATA as ATTR_DATA, ATTR_TARGET as ATTR_TARGET, ATTR_TITLE as ATTR_TITLE, ATTR_TITLE_DEFAULT as ATTR_TITLE_DEFAULT, BaseNotificationService as BaseNotificationService
10
+ from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_RECIPIENT as CONF_RECIPIENT, CONF_SENDER as CONF_SENDER, CONF_TIMEOUT as CONF_TIMEOUT, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
11
+ from homeassistant.core import HomeAssistant as HomeAssistant
12
+ from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
13
+ from homeassistant.helpers.reload import setup_reload_service as setup_reload_service
14
+ from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
15
+ from homeassistant.util.ssl import create_client_context as create_client_context
16
+ from typing import Any
17
+
18
+ PLATFORMS: Incomplete
19
+ _LOGGER: Incomplete
20
+ PLATFORM_SCHEMA: Incomplete
21
+
22
+ def get_service(hass: HomeAssistant, config: ConfigType, discovery_info: DiscoveryInfoType | None = None) -> MailNotificationService | None: ...
23
+
24
+ class MailNotificationService(BaseNotificationService):
25
+ _server: Incomplete
26
+ _port: Incomplete
27
+ _timeout: Incomplete
28
+ _sender: Incomplete
29
+ encryption: Incomplete
30
+ username: Incomplete
31
+ password: Incomplete
32
+ recipients: Incomplete
33
+ _sender_name: Incomplete
34
+ debug: Incomplete
35
+ _verify_ssl: Incomplete
36
+ tries: int
37
+ _ssl_context: Incomplete
38
+ def __init__(self, server: str, port: int, timeout: int, sender: str, encryption: str, username: str | None, password: str | None, recipients: list[str], sender_name: str | None, debug: bool, verify_ssl: bool, ssl_context: ssl.SSLContext | None) -> None: ...
39
+ def connect(self) -> smtplib.SMTP_SSL | smtplib.SMTP: ...
40
+ def connection_is_valid(self) -> bool: ...
41
+ def send_message(self, message: str, **kwargs: Any) -> None: ...
42
+ def _send_email(self, msg: MIMEMultipart | MIMEText, recipients: list[str]) -> None: ...
43
+
44
+ def _build_text_msg(message: str) -> MIMEText: ...
45
+ def _attach_file(hass: HomeAssistant, atch_name: str, content_id: str | None = None) -> MIMEImage | MIMEApplication | None: ...
46
+ def _build_multipart_msg(hass: HomeAssistant, message: str, images: list[str]) -> MIMEMultipart: ...
47
+ def _build_html_msg(hass: HomeAssistant, text: str, html: str, images: list[str]) -> MIMEMultipart: ...
@@ -7,7 +7,7 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.const import CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_ICON as CONF_ICON, CONF_NAME as CONF_NAME, CONF_UNIQUE_ID as CONF_UNIQUE_ID, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE, Platform as Platform
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.helpers import discovery as discovery
10
- from homeassistant.helpers.trigger_template_entity import CONF_AVAILABILITY as CONF_AVAILABILITY, CONF_PICTURE as CONF_PICTURE
10
+ from homeassistant.helpers.trigger_template_entity import CONF_AVAILABILITY as CONF_AVAILABILITY, CONF_PICTURE as CONF_PICTURE, ValueTemplate as ValueTemplate
11
11
  from homeassistant.helpers.typing import ConfigType as ConfigType
12
12
 
13
13
  _LOGGER: Incomplete
@@ -11,7 +11,7 @@ from homeassistant.exceptions import TemplateError as TemplateError
11
11
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
12
12
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback, AddEntitiesCallback as AddEntitiesCallback
13
13
  from homeassistant.helpers.template import Template as Template
14
- from homeassistant.helpers.trigger_template_entity import CONF_AVAILABILITY as CONF_AVAILABILITY, CONF_PICTURE as CONF_PICTURE, ManualTriggerSensorEntity as ManualTriggerSensorEntity
14
+ from homeassistant.helpers.trigger_template_entity import CONF_AVAILABILITY as CONF_AVAILABILITY, CONF_PICTURE as CONF_PICTURE, ManualTriggerSensorEntity as ManualTriggerSensorEntity, ValueTemplate as ValueTemplate
15
15
  from homeassistant.helpers.typing import ConfigType as ConfigType, DiscoveryInfoType as DiscoveryInfoType
16
16
  from sqlalchemy.engine import Result as Result
17
17
  from sqlalchemy.orm import Session as Session, scoped_session
@@ -27,7 +27,7 @@ async def async_setup_platform(hass: HomeAssistant, config: ConfigType, async_ad
27
27
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
28
28
  @callback
29
29
  def _async_get_or_init_domain_data(hass: HomeAssistant) -> SQLData: ...
30
- async def async_setup_sensor(hass: HomeAssistant, trigger_entity_config: ConfigType, query_str: str, column_name: str, value_template: Template | None, unique_id: str | None, db_url: str, yaml: bool, async_add_entities: AddEntitiesCallback | AddConfigEntryEntitiesCallback) -> None: ...
30
+ async def async_setup_sensor(hass: HomeAssistant, trigger_entity_config: ConfigType, query_str: str, column_name: str, value_template: ValueTemplate | None, unique_id: str | None, db_url: str, yaml: bool, async_add_entities: AddEntitiesCallback | AddConfigEntryEntitiesCallback) -> None: ...
31
31
  def _validate_and_get_session_maker_for_db_url(db_url: str) -> scoped_session | None: ...
32
32
  def _generate_lambda_stmt(query: str) -> StatementLambdaElement: ...
33
33
 
@@ -43,7 +43,7 @@ class SQLSensor(ManualTriggerSensorEntity):
43
43
  _attr_name: Incomplete
44
44
  _attr_has_entity_name: bool
45
45
  _attr_device_info: Incomplete
46
- def __init__(self, trigger_entity_config: ConfigType, sessmaker: scoped_session, query: str, column: str, value_template: Template | None, yaml: bool, use_database_executor: bool) -> None: ...
46
+ def __init__(self, trigger_entity_config: ConfigType, sessmaker: scoped_session, query: str, column: str, value_template: ValueTemplate | None, yaml: bool, use_database_executor: bool) -> None: ...
47
47
  @property
48
48
  def name(self) -> str | None: ...
49
49
  async def async_added_to_hass(self) -> None: ...
@@ -51,4 +51,4 @@ class SQLSensor(ManualTriggerSensorEntity):
51
51
  def extra_state_attributes(self) -> dict[str, Any] | None: ...
52
52
  async def async_update(self) -> None: ...
53
53
  _attr_native_value: Incomplete
54
- def _update(self) -> Any: ...
54
+ def _update(self) -> None: ...
@@ -1,36 +1,17 @@
1
+ from . import websocket_api as websocket_api
2
+ from .const import DOMAIN as DOMAIN, SSDP_SCANNER as SSDP_SCANNER, UPNP_SERVER as UPNP_SERVER
3
+ from .scanner import IntegrationMatchers as IntegrationMatchers, Scanner as Scanner, SsdpChange as SsdpChange, SsdpHassJobCallback as SsdpHassJobCallback
4
+ from .server import Server as Server
1
5
  from _typeshed import Incomplete
2
- from async_upnp_client.const import AddressTupleVXType as AddressTupleVXType, DeviceOrServiceType as DeviceOrServiceType, SsdpSource
3
- from async_upnp_client.description_cache import DescriptionCache
4
- from async_upnp_client.server import UpnpServer, UpnpServerDevice, UpnpServerService as UpnpServerService
5
- from async_upnp_client.ssdp_listener import SsdpDevice as SsdpDevice, SsdpListener
6
- from async_upnp_client.utils import CaseInsensitiveDict
7
- from collections.abc import Callable as Callable, Coroutine, Mapping
8
- from homeassistant import config_entries as config_entries
9
- from homeassistant.components import network as network
10
- from homeassistant.const import EVENT_HOMEASSISTANT_STARTED as EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, MATCH_ALL as MATCH_ALL
11
- from homeassistant.core import Event as Event, HassJob as HassJob, HomeAssistant as HomeAssistant, callback as core_callback
12
- from homeassistant.helpers import discovery_flow as discovery_flow
13
- from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
6
+ from collections.abc import Callable as Callable, Coroutine
7
+ from homeassistant.core import HassJob as HassJob, HomeAssistant as HomeAssistant
14
8
  from homeassistant.helpers.deprecation import DeprecatedConstant as DeprecatedConstant, all_with_deprecated_constants as all_with_deprecated_constants, check_if_deprecated_constant as check_if_deprecated_constant, dir_with_deprecated_constants as dir_with_deprecated_constants
15
- from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
16
- from homeassistant.helpers.event import async_track_time_interval as async_track_time_interval
17
- from homeassistant.helpers.network import NoURLAvailableError as NoURLAvailableError, get_url as get_url
18
9
  from homeassistant.helpers.service_info.ssdp import SsdpServiceInfo as _SsdpServiceInfo
19
- from homeassistant.helpers.system_info import async_get_system_info as async_get_system_info
20
10
  from homeassistant.helpers.typing import ConfigType as ConfigType
21
11
  from homeassistant.loader import async_get_ssdp as async_get_ssdp, bind_hass as bind_hass
22
- from homeassistant.util.async_ import create_eager_task as create_eager_task
23
12
  from homeassistant.util.logging import catch_log_exception as catch_log_exception
24
- from ipaddress import IPv4Address, IPv6Address
25
13
  from typing import Any
26
14
 
27
- DOMAIN: str
28
- SSDP_SCANNER: str
29
- UPNP_SERVER: str
30
- UPNP_SERVER_MIN_PORT: int
31
- UPNP_SERVER_MAX_PORT: int
32
- SCAN_INTERVAL: Incomplete
33
- IPV4_BROADCAST: Incomplete
34
15
  ATTR_SSDP_LOCATION: str
35
16
  ATTR_SSDP_ST: str
36
17
  ATTR_SSDP_NT: str
@@ -56,13 +37,8 @@ _DEPRECATED_ATTR_UPNP_UDN: Incomplete
56
37
  _DEPRECATED_ATTR_UPNP_UPC: Incomplete
57
38
  _DEPRECATED_ATTR_UPNP_PRESENTATION_URL: Incomplete
58
39
  ATTR_HA_MATCHING_DOMAINS: str
59
- PRIMARY_MATCH_KEYS: Incomplete
60
- _LOGGER: Incomplete
61
40
  CONFIG_SCHEMA: Incomplete
62
41
  _DEPRECATED_SsdpServiceInfo: Incomplete
63
- SsdpChange: Incomplete
64
- type SsdpHassJobCallback = HassJob[[_SsdpServiceInfo, SsdpChange], Coroutine[Any, Any, None] | None]
65
- SSDP_SOURCE_SSDP_CHANGE_MAPPING: Mapping[SsdpSource, SsdpChange]
66
42
 
67
43
  def _format_err(name: str, *args: Any) -> str: ...
68
44
  @bind_hass
@@ -73,73 +49,7 @@ async def async_get_discovery_info_by_udn_st(hass: HomeAssistant, udn: str, st:
73
49
  async def async_get_discovery_info_by_st(hass: HomeAssistant, st: str) -> list[_SsdpServiceInfo]: ...
74
50
  @bind_hass
75
51
  async def async_get_discovery_info_by_udn(hass: HomeAssistant, udn: str) -> list[_SsdpServiceInfo]: ...
76
- async def async_build_source_set(hass: HomeAssistant) -> set[IPv4Address | IPv6Address]: ...
77
52
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
78
- @core_callback
79
- def _async_process_callbacks(hass: HomeAssistant, callbacks: list[SsdpHassJobCallback], discovery_info: _SsdpServiceInfo, ssdp_change: SsdpChange) -> None: ...
80
- @core_callback
81
- def _async_headers_match(headers: CaseInsensitiveDict, lower_match_dict: dict[str, str]) -> bool: ...
82
-
83
- class IntegrationMatchers:
84
- _match_by_key: dict[str, dict[str, list[tuple[str, dict[str, str]]]]] | None
85
- def __init__(self) -> None: ...
86
- @core_callback
87
- def async_setup(self, integration_matchers: dict[str, list[dict[str, str]]]) -> None: ...
88
- @core_callback
89
- def async_matching_domains(self, info_with_desc: CaseInsensitiveDict) -> set[str]: ...
90
-
91
- class Scanner:
92
- hass: Incomplete
93
- _cancel_scan: Callable[[], None] | None
94
- _ssdp_listeners: list[SsdpListener]
95
- _device_tracker: Incomplete
96
- _callbacks: list[tuple[SsdpHassJobCallback, dict[str, str]]]
97
- _description_cache: DescriptionCache | None
98
- integration_matchers: Incomplete
99
- def __init__(self, hass: HomeAssistant, integration_matchers: IntegrationMatchers) -> None: ...
100
- @property
101
- def _ssdp_devices(self) -> list[SsdpDevice]: ...
102
- async def async_register_callback(self, callback: SsdpHassJobCallback, match_dict: dict[str, str] | None = None) -> Callable[[], None]: ...
103
- async def async_stop(self, *_: Any) -> None: ...
104
- async def _async_stop_ssdp_listeners(self) -> None: ...
105
- async def async_scan(self, *_: Any) -> None: ...
106
- async def async_scan_multicast(self, *_: Any) -> None: ...
107
- async def async_scan_broadcast(self, *_: Any) -> None: ...
108
- async def async_start(self) -> None: ...
109
- async def _async_start_ssdp_listeners(self) -> None: ...
110
- @core_callback
111
- def _async_get_matching_callbacks(self, combined_headers: CaseInsensitiveDict) -> list[SsdpHassJobCallback]: ...
112
- def _ssdp_listener_callback(self, ssdp_device: SsdpDevice, dst: DeviceOrServiceType, source: SsdpSource) -> None: ...
113
- async def _ssdp_listener_process_callback_with_lookup(self, ssdp_device: SsdpDevice, dst: DeviceOrServiceType, source: SsdpSource) -> None: ...
114
- def _ssdp_listener_process_callback(self, ssdp_device: SsdpDevice, dst: DeviceOrServiceType, source: SsdpSource, info_desc: Mapping[str, Any], skip_callbacks: bool = False) -> None: ...
115
- def _async_dismiss_discoveries(self, byebye_discovery_info: _SsdpServiceInfo) -> None: ...
116
- async def _async_get_description_dict(self, location: str | None) -> Mapping[str, str]: ...
117
- async def _async_headers_to_discovery_info(self, ssdp_device: SsdpDevice, headers: CaseInsensitiveDict) -> _SsdpServiceInfo: ...
118
- async def async_get_discovery_info_by_udn_st(self, udn: str, st: str) -> _SsdpServiceInfo | None: ...
119
- async def async_get_discovery_info_by_st(self, st: str) -> list[_SsdpServiceInfo]: ...
120
- async def async_get_discovery_info_by_udn(self, udn: str) -> list[_SsdpServiceInfo]: ...
121
- @core_callback
122
- def _handle_config_entry_removed(self, entry: config_entries.ConfigEntry) -> None: ...
123
-
124
- def discovery_info_from_headers_and_description(ssdp_device: SsdpDevice, combined_headers: CaseInsensitiveDict, info_desc: Mapping[str, Any]) -> _SsdpServiceInfo: ...
125
- def _udn_from_usn(usn: str | None) -> str | None: ...
126
-
127
- class HassUpnpServiceDevice(UpnpServerDevice):
128
- DEVICE_DEFINITION: Incomplete
129
- EMBEDDED_DEVICES: list[type[UpnpServerDevice]]
130
- SERVICES: list[type[UpnpServerService]]
131
-
132
- async def _async_find_next_available_port(source: AddressTupleVXType) -> int: ...
133
-
134
- class Server:
135
- hass: Incomplete
136
- _upnp_servers: list[UpnpServer]
137
- def __init__(self, hass: HomeAssistant) -> None: ...
138
- async def async_start(self) -> None: ...
139
- async def _async_get_instance_udn(self) -> str: ...
140
- async def _async_start_upnp_servers(self, event: Event) -> None: ...
141
- async def async_stop(self, *_: Any) -> None: ...
142
- async def _async_stop_upnp_servers(self) -> None: ...
143
53
 
144
54
  __getattr__: Incomplete
145
55
  __dir__: Incomplete
@@ -0,0 +1,5 @@
1
+ from homeassistant.components import network as network
2
+ from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from ipaddress import IPv4Address, IPv6Address
4
+
5
+ async def async_build_source_set(hass: HomeAssistant) -> set[IPv4Address | IPv6Address]: ...
@@ -0,0 +1,3 @@
1
+ DOMAIN: str
2
+ SSDP_SCANNER: str
3
+ UPNP_SERVER: str
@@ -0,0 +1,75 @@
1
+ from .common import async_build_source_set as async_build_source_set
2
+ from .const import DOMAIN as DOMAIN
3
+ from _typeshed import Incomplete
4
+ from async_upnp_client.const import AddressTupleVXType as AddressTupleVXType, DeviceOrServiceType as DeviceOrServiceType, SsdpSource
5
+ from async_upnp_client.description_cache import DescriptionCache
6
+ from async_upnp_client.ssdp_listener import SsdpDevice as SsdpDevice, SsdpListener
7
+ from async_upnp_client.utils import CaseInsensitiveDict
8
+ from collections.abc import Callable as Callable, Coroutine, Mapping
9
+ from homeassistant import config_entries as config_entries
10
+ from homeassistant.const import EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP, MATCH_ALL as MATCH_ALL
11
+ from homeassistant.core import HassJob as HassJob, HomeAssistant as HomeAssistant, callback as core_callback
12
+ from homeassistant.helpers import discovery_flow as discovery_flow
13
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
14
+ from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
15
+ from homeassistant.helpers.event import async_track_time_interval as async_track_time_interval
16
+ from homeassistant.helpers.service_info.ssdp import SsdpServiceInfo as _SsdpServiceInfo
17
+ from homeassistant.util.async_ import create_eager_task as create_eager_task
18
+ from typing import Any
19
+
20
+ SCAN_INTERVAL: Incomplete
21
+ IPV4_BROADCAST: Incomplete
22
+ PRIMARY_MATCH_KEYS: Incomplete
23
+ _LOGGER: Incomplete
24
+ SsdpChange: Incomplete
25
+ type SsdpHassJobCallback = HassJob[[_SsdpServiceInfo, SsdpChange], Coroutine[Any, Any, None] | None]
26
+ SSDP_SOURCE_SSDP_CHANGE_MAPPING: Mapping[SsdpSource, SsdpChange]
27
+
28
+ @core_callback
29
+ def _async_process_callbacks(hass: HomeAssistant, callbacks: list[SsdpHassJobCallback], discovery_info: _SsdpServiceInfo, ssdp_change: SsdpChange) -> None: ...
30
+ @core_callback
31
+ def _async_headers_match(headers: CaseInsensitiveDict, lower_match_dict: dict[str, str]) -> bool: ...
32
+
33
+ class IntegrationMatchers:
34
+ _match_by_key: dict[str, dict[str, list[tuple[str, dict[str, str]]]]] | None
35
+ def __init__(self) -> None: ...
36
+ @core_callback
37
+ def async_setup(self, integration_matchers: dict[str, list[dict[str, str]]]) -> None: ...
38
+ @core_callback
39
+ def async_matching_domains(self, info_with_desc: CaseInsensitiveDict) -> set[str]: ...
40
+
41
+ class Scanner:
42
+ hass: Incomplete
43
+ _cancel_scan: Callable[[], None] | None
44
+ _ssdp_listeners: list[SsdpListener]
45
+ _device_tracker: Incomplete
46
+ _callbacks: list[tuple[SsdpHassJobCallback, dict[str, str]]]
47
+ _description_cache: DescriptionCache | None
48
+ integration_matchers: Incomplete
49
+ def __init__(self, hass: HomeAssistant, integration_matchers: IntegrationMatchers) -> None: ...
50
+ @property
51
+ def _ssdp_devices(self) -> list[SsdpDevice]: ...
52
+ async def async_register_callback(self, callback: SsdpHassJobCallback, match_dict: dict[str, str] | None = None) -> Callable[[], None]: ...
53
+ async def async_stop(self, *_: Any) -> None: ...
54
+ async def _async_stop_ssdp_listeners(self) -> None: ...
55
+ async def async_scan(self, *_: Any) -> None: ...
56
+ async def async_scan_multicast(self, *_: Any) -> None: ...
57
+ async def async_scan_broadcast(self, *_: Any) -> None: ...
58
+ async def async_start(self) -> None: ...
59
+ async def _async_start_ssdp_listeners(self) -> None: ...
60
+ @core_callback
61
+ def _async_get_matching_callbacks(self, combined_headers: CaseInsensitiveDict) -> list[SsdpHassJobCallback]: ...
62
+ def _ssdp_listener_callback(self, ssdp_device: SsdpDevice, dst: DeviceOrServiceType, source: SsdpSource) -> None: ...
63
+ async def _ssdp_listener_process_callback_with_lookup(self, ssdp_device: SsdpDevice, dst: DeviceOrServiceType, source: SsdpSource) -> None: ...
64
+ def _ssdp_listener_process_callback(self, ssdp_device: SsdpDevice, dst: DeviceOrServiceType, source: SsdpSource, info_desc: Mapping[str, Any], skip_callbacks: bool = False) -> None: ...
65
+ def _async_dismiss_discoveries(self, byebye_discovery_info: _SsdpServiceInfo) -> None: ...
66
+ async def _async_get_description_dict(self, location: str | None) -> Mapping[str, str]: ...
67
+ async def _async_headers_to_discovery_info(self, ssdp_device: SsdpDevice, headers: CaseInsensitiveDict) -> _SsdpServiceInfo: ...
68
+ async def async_get_discovery_info_by_udn_st(self, udn: str, st: str) -> _SsdpServiceInfo | None: ...
69
+ async def async_get_discovery_info_by_st(self, st: str) -> list[_SsdpServiceInfo]: ...
70
+ async def async_get_discovery_info_by_udn(self, udn: str) -> list[_SsdpServiceInfo]: ...
71
+ @core_callback
72
+ def _handle_config_entry_removed(self, entry: config_entries.ConfigEntry) -> None: ...
73
+
74
+ def discovery_info_from_headers_and_description(ssdp_device: SsdpDevice, combined_headers: CaseInsensitiveDict, info_desc: Mapping[str, Any]) -> _SsdpServiceInfo: ...
75
+ def _udn_from_usn(usn: str | None) -> str | None: ...
@@ -0,0 +1,30 @@
1
+ from .common import async_build_source_set as async_build_source_set
2
+ from _typeshed import Incomplete
3
+ from async_upnp_client.const import AddressTupleVXType as AddressTupleVXType
4
+ from async_upnp_client.server import UpnpServer, UpnpServerDevice, UpnpServerService as UpnpServerService
5
+ from homeassistant.const import EVENT_HOMEASSISTANT_STARTED as EVENT_HOMEASSISTANT_STARTED, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
6
+ from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant
7
+ from homeassistant.helpers.network import NoURLAvailableError as NoURLAvailableError, get_url as get_url
8
+ from homeassistant.helpers.system_info import async_get_system_info as async_get_system_info
9
+ from typing import Any
10
+
11
+ UPNP_SERVER_MIN_PORT: int
12
+ UPNP_SERVER_MAX_PORT: int
13
+ _LOGGER: Incomplete
14
+
15
+ class HassUpnpServiceDevice(UpnpServerDevice):
16
+ DEVICE_DEFINITION: Incomplete
17
+ EMBEDDED_DEVICES: list[type[UpnpServerDevice]]
18
+ SERVICES: list[type[UpnpServerService]]
19
+
20
+ async def _async_find_next_available_port(source: AddressTupleVXType) -> int: ...
21
+
22
+ class Server:
23
+ hass: Incomplete
24
+ _upnp_servers: list[UpnpServer]
25
+ def __init__(self, hass: HomeAssistant) -> None: ...
26
+ async def async_start(self) -> None: ...
27
+ async def _async_get_instance_udn(self) -> str: ...
28
+ async def _async_start_upnp_servers(self, event: Event) -> None: ...
29
+ async def async_stop(self, *_: Any) -> None: ...
30
+ async def _async_stop_upnp_servers(self) -> None: ...
@@ -0,0 +1,16 @@
1
+ from .const import DOMAIN as DOMAIN, SSDP_SCANNER as SSDP_SCANNER
2
+ from .scanner import Scanner as Scanner, SsdpChange as SsdpChange
3
+ from homeassistant.components import websocket_api as websocket_api
4
+ from homeassistant.core import HassJob as HassJob, HomeAssistant as HomeAssistant, callback as callback
5
+ from homeassistant.helpers.json import json_bytes as json_bytes
6
+ from homeassistant.helpers.service_info.ssdp import ATTR_UPNP_FRIENDLY_NAME as ATTR_UPNP_FRIENDLY_NAME, SsdpServiceInfo as SsdpServiceInfo
7
+ from typing import Any, Final
8
+
9
+ FIELD_SSDP_ST: Final[str]
10
+ FIELD_SSDP_LOCATION: Final[str]
11
+
12
+ @callback
13
+ def async_setup(hass: HomeAssistant) -> None: ...
14
+ @websocket_api.require_admin
15
+ @websocket_api.async_response
16
+ async def ws_subscribe_discovery(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
@@ -4,7 +4,8 @@ from .coordinator import SwitcherDataUpdateCoordinator as SwitcherDataUpdateCoor
4
4
  from .entity import SwitcherEntity as SwitcherEntity
5
5
  from .utils import get_breeze_remote_manager as get_breeze_remote_manager
6
6
  from _typeshed import Incomplete
7
- from aioswitcher.api import SwitcherApi, SwitcherBaseResponse as SwitcherBaseResponse
7
+ from aioswitcher.api import SwitcherApi
8
+ from aioswitcher.api.messages import SwitcherBaseResponse as SwitcherBaseResponse
8
9
  from aioswitcher.api.remotes import SwitcherBreezeRemote
9
10
  from collections.abc import Callable as Callable, Coroutine
10
11
  from dataclasses import dataclass
@@ -7,7 +7,7 @@ from _typeshed import Incomplete
7
7
  from aioswitcher.api.remotes import SwitcherBreezeRemote as SwitcherBreezeRemote
8
8
  from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, FAN_AUTO as FAN_AUTO, FAN_HIGH as FAN_HIGH, FAN_LOW as FAN_LOW, FAN_MEDIUM as FAN_MEDIUM, HVACMode as HVACMode, SWING_OFF as SWING_OFF, SWING_VERTICAL as SWING_VERTICAL
9
9
  from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, UnitOfTemperature as UnitOfTemperature
10
- from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
10
+ from homeassistant.core import HomeAssistant as HomeAssistant
11
11
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
12
12
  from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
13
13
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
@@ -31,8 +31,6 @@ class SwitcherClimateEntity(SwitcherEntity, ClimateEntity):
31
31
  _attr_temperature_unit: Incomplete
32
32
  _attr_hvac_modes: Incomplete
33
33
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator, remote: SwitcherBreezeRemote) -> None: ...
34
- @callback
35
- def _handle_coordinator_update(self) -> None: ...
36
34
  _attr_current_temperature: Incomplete
37
35
  _attr_target_temperature: Incomplete
38
36
  _attr_hvac_mode: Incomplete
@@ -40,7 +38,7 @@ class SwitcherClimateEntity(SwitcherEntity, ClimateEntity):
40
38
  _attr_fan_modes: Incomplete
41
39
  _attr_swing_mode: Incomplete
42
40
  _attr_swing_modes: Incomplete
43
- def _update_data(self, force_update: bool = False) -> None: ...
41
+ def _update_data(self) -> None: ...
44
42
  async def _async_control_breeze_device(self, **kwargs: Any) -> None: ...
45
43
  async def async_set_temperature(self, **kwargs: Any) -> None: ...
46
44
  async def async_set_fan_mode(self, fan_mode: str) -> None: ...
@@ -1,7 +1,7 @@
1
1
  from .const import DOMAIN as DOMAIN
2
2
  from .utils import async_discover_devices as async_discover_devices
3
3
  from _typeshed import Incomplete
4
- from aioswitcher.bridge import SwitcherBase as SwitcherBase
4
+ from aioswitcher.device import SwitcherBase as SwitcherBase
5
5
  from collections.abc import Mapping
6
6
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
7
7
  from homeassistant.const import CONF_TOKEN as CONF_TOKEN, CONF_USERNAME as CONF_USERNAME
@@ -12,9 +12,10 @@ CONFIG_SCHEMA: Final[Incomplete]
12
12
 
13
13
  class SwitcherFlowHandler(ConfigFlow, domain=DOMAIN):
14
14
  VERSION: int
15
+ discovered_devices: dict[str, SwitcherBase]
15
16
  username: str | None
16
17
  token: str | None
17
- discovered_devices: dict[str, SwitcherBase]
18
+ def __init__(self) -> None: ...
18
19
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
19
20
  async def async_step_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
20
21
  async def async_step_credentials(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -18,8 +18,6 @@ class SwitcherBaseCoverEntity(SwitcherEntity, CoverEntity):
18
18
  _attr_device_class: Incomplete
19
19
  _attr_supported_features: Incomplete
20
20
  _cover_id: int
21
- @callback
22
- def _handle_coordinator_update(self) -> None: ...
23
21
  _attr_current_cover_position: Incomplete
24
22
  _attr_is_closed: Incomplete
25
23
  _attr_is_closing: Incomplete
@@ -1,6 +1,7 @@
1
1
  from .coordinator import SwitcherDataUpdateCoordinator as SwitcherDataUpdateCoordinator
2
2
  from _typeshed import Incomplete
3
3
  from aioswitcher.api.messages import SwitcherBaseResponse as SwitcherBaseResponse
4
+ from homeassistant.core import callback as callback
4
5
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
5
6
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
6
7
  from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
@@ -12,4 +13,7 @@ class SwitcherEntity(CoordinatorEntity[SwitcherDataUpdateCoordinator]):
12
13
  _attr_has_entity_name: bool
13
14
  _attr_device_info: Incomplete
14
15
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator) -> None: ...
16
+ @callback
17
+ def _handle_coordinator_update(self) -> None: ...
18
+ def _update_data(self) -> None: ...
15
19
  async def _async_call_api(self, api: str, *args: Any, **kwargs: Any) -> None: ...
@@ -18,24 +18,19 @@ class SwitcherBaseLightEntity(SwitcherEntity, LightEntity):
18
18
  _attr_supported_color_modes: Incomplete
19
19
  control_result: bool | None
20
20
  _light_id: int
21
- @callback
22
- def _handle_coordinator_update(self) -> None: ...
23
- @property
24
- def is_on(self) -> bool: ...
21
+ def __init__(self, coordinator: SwitcherDataUpdateCoordinator, light_id: int) -> None: ...
22
+ _attr_is_on: Incomplete
23
+ def _update_data(self) -> None: ...
25
24
  async def async_turn_on(self, **kwargs: Any) -> None: ...
26
25
  async def async_turn_off(self, **kwargs: Any) -> None: ...
27
26
 
28
27
  class SwitcherSingleLightEntity(SwitcherBaseLightEntity):
29
28
  _attr_name: Incomplete
30
- _light_id: Incomplete
31
- control_result: bool | None
32
29
  _attr_unique_id: Incomplete
33
30
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator, light_id: int) -> None: ...
34
31
 
35
32
  class SwitcherMultiLightEntity(SwitcherBaseLightEntity):
36
33
  _attr_translation_key: str
37
- _light_id: Incomplete
38
- control_result: bool | None
39
34
  _attr_translation_placeholders: Incomplete
40
35
  _attr_unique_id: Incomplete
41
36
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator, light_id: int) -> None: ...
@@ -2,17 +2,24 @@ from .const import SIGNAL_DEVICE_ADD as SIGNAL_DEVICE_ADD
2
2
  from .coordinator import SwitcherDataUpdateCoordinator as SwitcherDataUpdateCoordinator
3
3
  from .entity import SwitcherEntity as SwitcherEntity
4
4
  from _typeshed import Incomplete
5
+ from aioswitcher.device import SwitcherBase as SwitcherBase
6
+ from collections.abc import Callable as Callable
7
+ from dataclasses import dataclass
5
8
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
6
9
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
- from homeassistant.const import UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfPower as UnitOfPower
10
+ from homeassistant.const import UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature
8
11
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
9
12
  from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
10
13
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
14
  from homeassistant.helpers.typing import StateType as StateType
12
15
 
13
- POWER_SENSORS: list[SensorEntityDescription]
14
- TIME_SENSORS: list[SensorEntityDescription]
15
- TEMPERATURE_SENSORS: list[SensorEntityDescription]
16
+ @dataclass(frozen=True, kw_only=True)
17
+ class SwitcherSensorEntityDescription(SensorEntityDescription):
18
+ value_fn: Callable[[SwitcherBase], StateType]
19
+
20
+ POWER_SENSORS: list[SwitcherSensorEntityDescription]
21
+ TIME_SENSORS: list[SwitcherSensorEntityDescription]
22
+ TEMPERATURE_SENSORS: list[SwitcherSensorEntityDescription]
16
23
  POWER_PLUG_SENSORS = POWER_SENSORS
17
24
  WATER_HEATER_SENSORS: Incomplete
18
25
  THERMOSTAT_SENSORS = TEMPERATURE_SENSORS
@@ -20,8 +27,8 @@ THERMOSTAT_SENSORS = TEMPERATURE_SENSORS
20
27
  async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
21
28
 
22
29
  class SwitcherSensorEntity(SwitcherEntity, SensorEntity):
23
- entity_description: Incomplete
30
+ entity_description: SwitcherSensorEntityDescription
24
31
  _attr_unique_id: Incomplete
25
- def __init__(self, coordinator: SwitcherDataUpdateCoordinator, description: SensorEntityDescription) -> None: ...
32
+ def __init__(self, coordinator: SwitcherDataUpdateCoordinator, description: SwitcherSensorEntityDescription) -> None: ...
26
33
  @property
27
34
  def native_value(self) -> StateType: ...
@@ -27,10 +27,8 @@ class SwitcherBaseSwitchEntity(SwitcherEntity, SwitchEntity):
27
27
  control_result: bool | None
28
28
  _attr_unique_id: Incomplete
29
29
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator) -> None: ...
30
- @callback
31
- def _handle_coordinator_update(self) -> None: ...
32
- @property
33
- def is_on(self) -> bool: ...
30
+ _attr_is_on: Incomplete
31
+ def _update_data(self) -> None: ...
34
32
  async def async_turn_on(self, **kwargs: Any) -> None: ...
35
33
  async def async_turn_off(self, **kwargs: Any) -> None: ...
36
34
  async def async_set_auto_off_service(self, auto_off: timedelta) -> None: ...
@@ -42,32 +40,28 @@ class SwitcherPowerPlugSwitchEntity(SwitcherBaseSwitchEntity):
42
40
  class SwitcherWaterHeaterSwitchEntity(SwitcherBaseSwitchEntity):
43
41
  _attr_device_class: Incomplete
44
42
  async def async_set_auto_off_service(self, auto_off: timedelta) -> None: ...
45
- control_result: bool
43
+ _attr_is_on: bool
46
44
  async def async_turn_on_with_timer_service(self, timer_minutes: int) -> None: ...
47
45
 
48
- class SwitchereShutterChildLockBaseSwitchEntity(SwitcherEntity, SwitchEntity):
46
+ class SwitcherShutterChildLockBaseSwitchEntity(SwitcherEntity, SwitchEntity):
49
47
  _attr_device_class: Incomplete
50
48
  _attr_entity_category: Incomplete
51
49
  _attr_icon: str
52
50
  _cover_id: int
53
51
  control_result: bool | None
54
- def __init__(self, coordinator: SwitcherDataUpdateCoordinator) -> None: ...
55
- @callback
56
- def _handle_coordinator_update(self) -> None: ...
57
- @property
58
- def is_on(self) -> bool: ...
52
+ def __init__(self, coordinator: SwitcherDataUpdateCoordinator, cover_id: int) -> None: ...
53
+ _attr_is_on: Incomplete
54
+ def _update_data(self) -> None: ...
59
55
  async def async_turn_on(self, **kwargs: Any) -> None: ...
60
56
  async def async_turn_off(self, **kwargs: Any) -> None: ...
61
57
 
62
- class SwitchereShutterChildLockSingleSwitchEntity(SwitchereShutterChildLockBaseSwitchEntity):
58
+ class SwitcherShutterChildLockSingleSwitchEntity(SwitcherShutterChildLockBaseSwitchEntity):
63
59
  _attr_translation_key: str
64
- _cover_id: Incomplete
65
60
  _attr_unique_id: Incomplete
66
61
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator, cover_id: int) -> None: ...
67
62
 
68
- class SwitchereShutterChildLockMultiSwitchEntity(SwitchereShutterChildLockBaseSwitchEntity):
63
+ class SwitcherShutterChildLockMultiSwitchEntity(SwitcherShutterChildLockBaseSwitchEntity):
69
64
  _attr_translation_key: str
70
- _cover_id: Incomplete
71
65
  _attr_translation_placeholders: Incomplete
72
66
  _attr_unique_id: Incomplete
73
67
  def __init__(self, coordinator: SwitcherDataUpdateCoordinator, cover_id: int) -> None: ...
@@ -1,7 +1,7 @@
1
1
  from .const import DISCOVERY_TIME_SEC as DISCOVERY_TIME_SEC
2
2
  from _typeshed import Incomplete
3
3
  from aioswitcher.api.remotes import SwitcherBreezeRemoteManager
4
- from aioswitcher.bridge import SwitcherBase as SwitcherBase
4
+ from aioswitcher.device import SwitcherBase as SwitcherBase
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
6
  from homeassistant.helpers import singleton as singleton
7
7
 
@@ -8,6 +8,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
8
8
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
9
9
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
10
10
  from synology_dsm import SynologyDSM
11
+ from synology_dsm.api.core.external_usb import SynoCoreExternalUSB
11
12
  from synology_dsm.api.core.security import SynoCoreSecurity
12
13
  from synology_dsm.api.core.system import SynoCoreSystem
13
14
  from synology_dsm.api.core.upgrade import SynoCoreUpgrade
@@ -36,6 +37,7 @@ class SynoApi:
36
37
  system: SynoCoreSystem | None
37
38
  upgrade: SynoCoreUpgrade | None
38
39
  utilisation: SynoCoreUtilization | None
40
+ external_usb: SynoCoreExternalUSB | None
39
41
  _fetching_entities: dict[str, set[str]]
40
42
  _with_file_station: bool
41
43
  _with_information: bool
@@ -46,6 +48,7 @@ class SynoApi:
46
48
  _with_system: bool
47
49
  _with_upgrade: bool
48
50
  _with_utilisation: bool
51
+ _with_external_usb: bool
49
52
  _login_future: asyncio.Future[None] | None
50
53
  def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None: ...
51
54
  async def async_login(self) -> None: ...