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
@@ -1,12 +1,14 @@
1
1
  from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.components import media_source as media_source
4
- from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType
4
+ from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType, SearchError as SearchError, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery
5
5
  from homeassistant.core import HomeAssistant as HomeAssistant
6
6
  from music_assistant_client import MusicAssistantClient as MusicAssistantClient
7
- from music_assistant_models.media_items import MediaItemType as MediaItemType
7
+ from music_assistant_models.enums import MediaType as MASSMediaType
8
+ from music_assistant_models.media_items import MediaItemType, SearchResults as SearchResults
8
9
  from typing import Any
9
10
 
11
+ MEDIA_TYPE_AUDIOBOOK: str
10
12
  MEDIA_TYPE_RADIO: str
11
13
  PLAYABLE_MEDIA_TYPES: Incomplete
12
14
  LIBRARY_ARTISTS: str
@@ -14,10 +16,14 @@ LIBRARY_ALBUMS: str
14
16
  LIBRARY_TRACKS: str
15
17
  LIBRARY_PLAYLISTS: str
16
18
  LIBRARY_RADIO: str
19
+ LIBRARY_PODCASTS: str
20
+ LIBRARY_AUDIOBOOKS: str
17
21
  LIBRARY_TITLE_MAP: Incomplete
18
22
  LIBRARY_MEDIA_CLASS_MAP: Incomplete
19
23
  MEDIA_CONTENT_TYPE_FLAC: str
20
24
  THUMB_SIZE: int
25
+ SORT_NAME_DESC: str
26
+ LOGGER: Incomplete
21
27
 
22
28
  def media_source_filter(item: BrowseMedia) -> bool: ...
23
29
  async def async_browse_media(hass: HomeAssistant, mass: MusicAssistantClient, media_content_id: str | None, media_content_type: str | None) -> BrowseMedia: ...
@@ -29,5 +35,14 @@ async def build_artist_items_listing(mass: MusicAssistantClient, identifier: str
29
35
  async def build_albums_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
30
36
  async def build_album_items_listing(mass: MusicAssistantClient, identifier: str) -> BrowseMedia: ...
31
37
  async def build_tracks_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
38
+ async def build_podcasts_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
39
+ async def build_audiobooks_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
32
40
  async def build_radio_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
33
41
  def build_item(mass: MusicAssistantClient, item: MediaItemType, can_expand: bool = True, media_class: Any = None) -> BrowseMedia: ...
42
+ async def _search_within_album(mass: MusicAssistantClient, album_uri: str, search_query: str, limit: int) -> SearchMedia: ...
43
+ async def _search_within_artist(mass: MusicAssistantClient, artist_uri: str, search_query: str, limit: int) -> SearchResults: ...
44
+ def _get_media_types_from_query(query: SearchMediaQuery) -> list[MASSMediaType]: ...
45
+ def _process_search_results(mass: MusicAssistantClient, search_results: SearchResults, media_types: list[MASSMediaType]) -> list[BrowseMedia]: ...
46
+ def _should_expand_media_type(media_type: str) -> bool: ...
47
+ def _get_media_class_for_type(media_type: str) -> MediaClass | None: ...
48
+ async def async_search_media(mass: MusicAssistantClient, query: SearchMediaQuery) -> SearchMedia: ...
@@ -1,12 +1,12 @@
1
1
  from . import MusicAssistantConfigEntry as MusicAssistantConfigEntry
2
2
  from .const import ATTR_ACTIVE as ATTR_ACTIVE, ATTR_ACTIVE_QUEUE as ATTR_ACTIVE_QUEUE, ATTR_ALBUM as ATTR_ALBUM, ATTR_ANNOUNCE_VOLUME as ATTR_ANNOUNCE_VOLUME, ATTR_ARTIST as ATTR_ARTIST, ATTR_AUTO_PLAY as ATTR_AUTO_PLAY, ATTR_CURRENT_INDEX as ATTR_CURRENT_INDEX, ATTR_CURRENT_ITEM as ATTR_CURRENT_ITEM, ATTR_ELAPSED_TIME as ATTR_ELAPSED_TIME, ATTR_ITEMS as ATTR_ITEMS, ATTR_MASS_PLAYER_TYPE as ATTR_MASS_PLAYER_TYPE, ATTR_MEDIA_ID as ATTR_MEDIA_ID, ATTR_MEDIA_TYPE as ATTR_MEDIA_TYPE, ATTR_NEXT_ITEM as ATTR_NEXT_ITEM, ATTR_QUEUE_ID as ATTR_QUEUE_ID, ATTR_RADIO_MODE as ATTR_RADIO_MODE, ATTR_REPEAT_MODE as ATTR_REPEAT_MODE, ATTR_SHUFFLE_ENABLED as ATTR_SHUFFLE_ENABLED, ATTR_SOURCE_PLAYER as ATTR_SOURCE_PLAYER, ATTR_URL as ATTR_URL, ATTR_USE_PRE_ANNOUNCE as ATTR_USE_PRE_ANNOUNCE, DOMAIN as DOMAIN
3
3
  from .entity import MusicAssistantEntity as MusicAssistantEntity
4
- from .media_browser import async_browse_media as async_browse_media
4
+ from .media_browser import async_browse_media as async_browse_media, async_search_media as async_search_media
5
5
  from .schemas import QUEUE_DETAILS_SCHEMA as QUEUE_DETAILS_SCHEMA, queue_item_dict_from_mass_item as queue_item_dict_from_mass_item
6
6
  from _typeshed import Incomplete
7
7
  from collections.abc import Callable as Callable, Coroutine, Mapping
8
8
  from homeassistant.components import media_source as media_source
9
- from homeassistant.components.media_player import ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEnqueue as MediaPlayerEnqueue, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, RepeatMode as RepeatMode, async_process_play_media_url as async_process_play_media_url
9
+ from homeassistant.components.media_player import ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEnqueue as MediaPlayerEnqueue, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, RepeatMode as RepeatMode, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery, async_process_play_media_url as async_process_play_media_url
10
10
  from homeassistant.const import ATTR_NAME as ATTR_NAME, STATE_OFF as STATE_OFF
11
11
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
12
12
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
@@ -92,6 +92,7 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
92
92
  @catch_musicassistant_error
93
93
  async def _async_handle_get_queue(self) -> ServiceResponse: ...
94
94
  async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
95
+ async def async_search_media(self, query: SearchMediaQuery) -> SearchMedia: ...
95
96
  _attr_media_image_url: Incomplete
96
97
  def _update_media_image_url(self, player: Player, queue: PlayerQueue | None) -> None: ...
97
98
  _attr_media_artist: Incomplete
@@ -7,11 +7,13 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
7
7
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
8
8
  from homeassistant.helpers.typing import ConfigType as ConfigType, UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
9
9
  from homeassistant.loader import bind_hass as bind_hass
10
+ from homeassistant.util import package as package
10
11
  from ipaddress import IPv4Address, IPv6Address
11
12
 
12
13
  _LOGGER: Incomplete
13
14
  CONFIG_SCHEMA: Incomplete
14
15
 
16
+ def _check_docker_without_host_networking() -> bool: ...
15
17
  @bind_hass
16
18
  async def async_get_adapters(hass: HomeAssistant) -> list[Adapter]: ...
17
19
  @callback
@@ -0,0 +1,16 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from aiontfy import Ntfy
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
+ from homeassistant.const import CONF_TOKEN as CONF_TOKEN, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
8
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
9
+
10
+ _LOGGER: Incomplete
11
+ PLATFORMS: list[Platform]
12
+ type NtfyConfigEntry = ConfigEntry[Ntfy]
13
+
14
+ async def async_setup_entry(hass: HomeAssistant, entry: NtfyConfigEntry) -> bool: ...
15
+ async def _async_update_listener(hass: HomeAssistant, entry: NtfyConfigEntry) -> None: ...
16
+ async def async_unload_entry(hass: HomeAssistant, entry: NtfyConfigEntry) -> bool: ...
@@ -0,0 +1,29 @@
1
+ from .const import CONF_TOPIC as CONF_TOPIC, DEFAULT_URL as DEFAULT_URL, DOMAIN as DOMAIN, SECTION_AUTH as SECTION_AUTH
2
+ from _typeshed import Incomplete
3
+ from collections.abc import Mapping
4
+ from homeassistant import data_entry_flow as data_entry_flow
5
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryFlow as ConfigSubentryFlow, SubentryFlowResult as SubentryFlowResult
6
+ from homeassistant.const import ATTR_CREDENTIALS as ATTR_CREDENTIALS, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_TOKEN as CONF_TOKEN, CONF_URL as CONF_URL, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL
7
+ from homeassistant.core import callback as callback
8
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
9
+ from homeassistant.helpers.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
10
+ from typing import Any
11
+
12
+ _LOGGER: Incomplete
13
+ STEP_USER_DATA_SCHEMA: Incomplete
14
+ STEP_REAUTH_DATA_SCHEMA: Incomplete
15
+ STEP_USER_TOPIC_SCHEMA: Incomplete
16
+ RE_TOPIC: Incomplete
17
+
18
+ class NtfyConfigFlow(ConfigFlow, domain=DOMAIN):
19
+ @classmethod
20
+ @callback
21
+ def async_get_supported_subentry_types(cls, config_entry: ConfigEntry) -> dict[str, type[ConfigSubentryFlow]]: ...
22
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
23
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
24
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
25
+
26
+ class TopicSubentryFlowHandler(ConfigSubentryFlow):
27
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
28
+ async def async_step_generate_topic(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
29
+ async def async_step_add_topic(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
@@ -0,0 +1,6 @@
1
+ from typing import Final
2
+
3
+ DOMAIN: str
4
+ DEFAULT_URL: Final[str]
5
+ CONF_TOPIC: str
6
+ SECTION_AUTH: str
@@ -0,0 +1,7 @@
1
+ from . import NtfyConfigEntry as NtfyConfigEntry
2
+ from homeassistant.components.diagnostics import REDACTED as REDACTED
3
+ from homeassistant.const import CONF_URL as CONF_URL
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from typing import Any
6
+
7
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: NtfyConfigEntry) -> dict[str, Any]: ...
@@ -0,0 +1,25 @@
1
+ from . import NtfyConfigEntry as NtfyConfigEntry
2
+ from .const import CONF_TOPIC as CONF_TOPIC, DOMAIN as DOMAIN
3
+ from _typeshed import Incomplete
4
+ from homeassistant.components.notify import NotifyEntity as NotifyEntity, NotifyEntityDescription as NotifyEntityDescription, NotifyEntityFeature as NotifyEntityFeature
5
+ from homeassistant.config_entries import ConfigSubentry as ConfigSubentry
6
+ from homeassistant.const import CONF_NAME as CONF_NAME, CONF_URL as CONF_URL
7
+ from homeassistant.core import HomeAssistant as HomeAssistant
8
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
9
+ from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+
12
+ PARALLEL_UPDATES: int
13
+
14
+ async def async_setup_entry(hass: HomeAssistant, config_entry: NtfyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
15
+
16
+ class NtfyNotifyEntity(NotifyEntity):
17
+ entity_description: Incomplete
18
+ _attr_supported_features: Incomplete
19
+ _attr_unique_id: Incomplete
20
+ topic: Incomplete
21
+ _attr_device_info: Incomplete
22
+ config_entry: Incomplete
23
+ ntfy: Incomplete
24
+ def __init__(self, config_entry: NtfyConfigEntry, subentry: ConfigSubentry) -> None: ...
25
+ async def async_send_message(self, message: str, title: str | None = None) -> None: ...
@@ -1,10 +1,12 @@
1
- from .const import DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DOMAIN as DOMAIN, INTEGRATION_SUPPORTED_COMMANDS as INTEGRATION_SUPPORTED_COMMANDS, PLATFORMS as PLATFORMS
1
+ from .const import DOMAIN as DOMAIN, INTEGRATION_SUPPORTED_COMMANDS as INTEGRATION_SUPPORTED_COMMANDS, PLATFORMS as PLATFORMS
2
2
  from _typeshed import Incomplete
3
3
  from dataclasses import dataclass
4
4
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
5
  from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_RESOURCES as CONF_RESOURCES, CONF_SCAN_INTERVAL as CONF_SCAN_INTERVAL, CONF_USERNAME as CONF_USERNAME, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
6
6
  from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
7
7
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, HomeAssistantError as HomeAssistantError
8
+ from homeassistant.helpers import device_registry as dr
9
+ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, format_mac as format_mac
8
10
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
9
11
 
10
12
  NUT_FAKE_SERIAL: Incomplete
@@ -19,8 +21,9 @@ class NutRuntimeData:
19
21
  user_available_commands: set[str]
20
22
 
21
23
  async def async_setup_entry(hass: HomeAssistant, entry: NutConfigEntry) -> bool: ...
22
- async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
23
- async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
24
+ async def async_unload_entry(hass: HomeAssistant, entry: NutConfigEntry) -> bool: ...
25
+ async def async_remove_config_entry_device(hass: HomeAssistant, config_entry: ConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
26
+ async def _async_update_listener(hass: HomeAssistant, entry: NutConfigEntry) -> None: ...
24
27
  def _manufacturer_from_status(status: dict[str, str]) -> str | None: ...
25
28
  def _model_from_status(status: dict[str, str]) -> str | None: ...
26
29
  def _firmware_from_status(status: dict[str, str]) -> str | None: ...
@@ -34,6 +37,7 @@ class NUTDeviceInfo:
34
37
  model_id: str | None = ...
35
38
  firmware: str | None = ...
36
39
  serial: str | None = ...
40
+ mac_address: str | None = ...
37
41
  device_location: str | None = ...
38
42
 
39
43
  class PyNUTData:
@@ -1,21 +1,22 @@
1
1
  import voluptuous as vol
2
- from . import PyNUTData as PyNUTData
3
- from .const import DEFAULT_HOST as DEFAULT_HOST, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DOMAIN as DOMAIN
2
+ from . import PyNUTData as PyNUTData, _unique_id_from_status as _unique_id_from_status
3
+ from .const import DEFAULT_HOST as DEFAULT_HOST, DEFAULT_PORT as DEFAULT_PORT, DOMAIN as DOMAIN
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Mapping
6
- from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
7
- from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_BASE as CONF_BASE, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_SCAN_INTERVAL as CONF_SCAN_INTERVAL, CONF_USERNAME as CONF_USERNAME
8
- from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
6
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
7
+ from homeassistant.const import CONF_ALIAS as CONF_ALIAS, CONF_BASE as CONF_BASE, CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_USERNAME as CONF_USERNAME
9
8
  from homeassistant.data_entry_flow import AbortFlow as AbortFlow
10
9
  from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
11
10
  from typing import Any
12
11
 
13
12
  _LOGGER: Incomplete
14
- AUTH_SCHEMA: Incomplete
13
+ REAUTH_SCHEMA: Incomplete
14
+ PASSWORD_NOT_CHANGED: str
15
15
 
16
- def _base_schema(nut_config: dict[str, Any]) -> vol.Schema: ...
16
+ def _base_schema(nut_config: Mapping[str, Any], use_password_not_changed: bool = False) -> vol.Schema: ...
17
17
  def _ups_schema(ups_list: dict[str, str]) -> vol.Schema: ...
18
- async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, Any]: ...
18
+ async def validate_input(data: dict[str, Any]) -> dict[str, Any]: ...
19
+ def _check_host_port_alias_match(first: Mapping[str, Any], second: Mapping[str, Any]) -> bool: ...
19
20
  def _format_host_port_alias(user_input: Mapping[str, Any]) -> str: ...
20
21
 
21
22
  class NutConfigFlow(ConfigFlow, domain=DOMAIN):
@@ -28,13 +29,9 @@ class NutConfigFlow(ConfigFlow, domain=DOMAIN):
28
29
  async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
29
30
  async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
30
31
  async def async_step_ups(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
32
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
33
+ async def async_step_reconfigure_ups(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
31
34
  def _host_port_alias_already_configured(self, user_input: dict[str, Any]) -> bool: ...
32
35
  async def _async_validate_or_error(self, config: dict[str, Any]) -> tuple[dict[str, Any], dict[str, str], dict[str, str]]: ...
33
36
  async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
34
37
  async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
35
- @staticmethod
36
- @callback
37
- def async_get_options_flow(config_entry: ConfigEntry) -> OptionsFlow: ...
38
-
39
- class OptionsFlowHandler(OptionsFlow):
40
- async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -8,7 +8,6 @@ DEFAULT_HOST: str
8
8
  DEFAULT_PORT: int
9
9
  KEY_STATUS: str
10
10
  KEY_STATUS_DISPLAY: str
11
- DEFAULT_SCAN_INTERVAL: int
12
11
  STATE_TYPES: Incomplete
13
12
  COMMAND_BEEPER_DISABLE: str
14
13
  COMMAND_BEEPER_ENABLE: str
@@ -1,9 +1,11 @@
1
- from . import NutRuntimeData as NutRuntimeData
1
+ from . import NutConfigEntry as NutConfigEntry, NutRuntimeData as NutRuntimeData
2
2
  from .const import DOMAIN as DOMAIN, INTEGRATION_SUPPORTED_COMMANDS as INTEGRATION_SUPPORTED_COMMANDS
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.components.device_automation import InvalidDeviceAutomationConfig as InvalidDeviceAutomationConfig
5
+ from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
5
6
  from homeassistant.const import CONF_DEVICE_ID as CONF_DEVICE_ID, CONF_DOMAIN as CONF_DOMAIN, CONF_TYPE as CONF_TYPE
6
7
  from homeassistant.core import Context as Context, HomeAssistant as HomeAssistant
8
+ from homeassistant.helpers import device_registry as dr
7
9
  from homeassistant.helpers.typing import ConfigType as ConfigType, TemplateVarsType as TemplateVarsType
8
10
 
9
11
  ACTION_TYPES: Incomplete
@@ -14,3 +16,5 @@ async def async_call_action_from_config(hass: HomeAssistant, config: ConfigType,
14
16
  def _get_device_action_name(command_name: str) -> str: ...
15
17
  def _get_command_name(device_action_name: str) -> str: ...
16
18
  def _get_runtime_data_from_device_id(hass: HomeAssistant, device_id: str) -> NutRuntimeData | None: ...
19
+ def _get_runtime_data_for_device(hass: HomeAssistant, device: dr.DeviceEntry) -> NutRuntimeData | None: ...
20
+ def _get_runtime_data_from_device_id_exception_on_failure(hass: HomeAssistant, device_id: str) -> NutRuntimeData | None: ...
@@ -3,7 +3,7 @@ from .const import KEY_STATUS as KEY_STATUS, KEY_STATUS_DISPLAY as KEY_STATUS_DI
3
3
  from .entity import NUTBaseEntity as NUTBaseEntity
4
4
  from _typeshed import Incomplete
5
5
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
6
- from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, STATE_UNKNOWN as STATE_UNKNOWN, UnitOfApparentPower as UnitOfApparentPower, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfFrequency as UnitOfFrequency, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime
6
+ from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfApparentPower as UnitOfApparentPower, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfFrequency as UnitOfFrequency, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant
8
8
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
9
  from typing import Final
@@ -11,7 +11,10 @@ from typing import Final
11
11
  PARALLEL_UPDATES: int
12
12
  AMBIENT_PRESENT: str
13
13
  AMBIENT_SENSORS: Incomplete
14
- AMBIENT_THRESHOLD_STATUS_OPTIONS: Incomplete
14
+ BATTERY_CHARGER_STATUS_OPTIONS: Incomplete
15
+ FREQUENCY_STATUS_OPTIONS: Incomplete
16
+ THRESHOLD_STATUS_OPTIONS: Incomplete
17
+ UPS_BEEPER_STATUS_OPTIONS: Incomplete
15
18
  _LOGGER: Incomplete
16
19
  SENSOR_TYPES: Final[dict[str, SensorEntityDescription]]
17
20
 
@@ -21,4 +24,4 @@ class NUTSensor(NUTBaseEntity, SensorEntity):
21
24
  @property
22
25
  def native_value(self) -> str | None: ...
23
26
 
24
- def _format_display_state(status: dict[str, str]) -> str: ...
27
+ def _format_display_state(status: dict[str, str]) -> str | None: ...
@@ -0,0 +1,15 @@
1
+ from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS
2
+ from .coordinator import OhmeAdvancedSettingsCoordinator as OhmeAdvancedSettingsCoordinator, OhmeChargeSessionCoordinator as OhmeChargeSessionCoordinator, OhmeConfigEntry as OhmeConfigEntry, OhmeDeviceInfoCoordinator as OhmeDeviceInfoCoordinator, OhmeRuntimeData as OhmeRuntimeData
3
+ from .services import async_setup_services as async_setup_services
4
+ from _typeshed import Incomplete
5
+ from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
8
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
9
+ from homeassistant.helpers.typing import ConfigType as ConfigType
10
+
11
+ CONFIG_SCHEMA: Incomplete
12
+
13
+ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
14
+ async def async_setup_entry(hass: HomeAssistant, entry: OhmeConfigEntry) -> bool: ...
15
+ async def async_unload_entry(hass: HomeAssistant, entry: OhmeConfigEntry) -> bool: ...
@@ -0,0 +1,26 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
3
+ from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable, Coroutine
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.button import ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from ohme import OhmeApiClient as OhmeApiClient
12
+ from typing import Any
13
+
14
+ PARALLEL_UPDATES: int
15
+
16
+ @dataclass(frozen=True, kw_only=True)
17
+ class OhmeButtonDescription(OhmeEntityDescription, ButtonEntityDescription):
18
+ press_fn: Callable[[OhmeApiClient], Coroutine[Any, Any, bool]]
19
+
20
+ BUTTON_DESCRIPTIONS: Incomplete
21
+
22
+ async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
+
24
+ class OhmeButton(OhmeEntity, ButtonEntity):
25
+ entity_description: OhmeButtonDescription
26
+ async def async_press(self) -> None: ...
@@ -0,0 +1,17 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from collections.abc import Mapping
4
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
5
+ from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
6
+ from homeassistant.helpers.selector import TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
7
+ from typing import Any
8
+
9
+ USER_SCHEMA: Incomplete
10
+ REAUTH_SCHEMA: Incomplete
11
+
12
+ class OhmeConfigFlow(ConfigFlow, domain=DOMAIN):
13
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
14
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
15
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
16
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
17
+ async def _validate_account(self, email: str, password: str) -> dict[str, str]: ...
@@ -0,0 +1,5 @@
1
+ from _typeshed import Incomplete
2
+ from homeassistant.const import Platform as Platform
3
+
4
+ DOMAIN: str
5
+ PLATFORMS: Incomplete
@@ -0,0 +1,44 @@
1
+ import abc
2
+ from .const import DOMAIN as DOMAIN
3
+ from _typeshed import Incomplete
4
+ from abc import abstractmethod
5
+ from dataclasses import dataclass
6
+ from datetime import timedelta
7
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
10
+ from ohme import OhmeApiClient as OhmeApiClient
11
+
12
+ _LOGGER: Incomplete
13
+
14
+ @dataclass()
15
+ class OhmeRuntimeData:
16
+ charge_session_coordinator: OhmeChargeSessionCoordinator
17
+ advanced_settings_coordinator: OhmeAdvancedSettingsCoordinator
18
+ device_info_coordinator: OhmeDeviceInfoCoordinator
19
+ type OhmeConfigEntry = ConfigEntry[OhmeRuntimeData]
20
+
21
+ class OhmeBaseCoordinator(DataUpdateCoordinator[None], metaclass=abc.ABCMeta):
22
+ config_entry: OhmeConfigEntry
23
+ client: OhmeApiClient
24
+ _default_update_interval: timedelta | None
25
+ coordinator_name: str
26
+ name: Incomplete
27
+ def __init__(self, hass: HomeAssistant, config_entry: OhmeConfigEntry, client: OhmeApiClient) -> None: ...
28
+ async def _async_update_data(self) -> None: ...
29
+ @abstractmethod
30
+ async def _internal_update_data(self) -> None: ...
31
+
32
+ class OhmeChargeSessionCoordinator(OhmeBaseCoordinator):
33
+ coordinator_name: str
34
+ _default_update_interval: Incomplete
35
+ async def _internal_update_data(self) -> None: ...
36
+
37
+ class OhmeAdvancedSettingsCoordinator(OhmeBaseCoordinator):
38
+ coordinator_name: str
39
+ async def _internal_update_data(self) -> None: ...
40
+
41
+ class OhmeDeviceInfoCoordinator(OhmeBaseCoordinator):
42
+ coordinator_name: str
43
+ _default_update_interval: Incomplete
44
+ async def _internal_update_data(self) -> None: ...
@@ -0,0 +1,5 @@
1
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
2
+ from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from typing import Any
4
+
5
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: OhmeConfigEntry) -> dict[str, Any]: ...
@@ -0,0 +1,23 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OhmeBaseCoordinator as OhmeBaseCoordinator
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
7
+ from homeassistant.helpers.entity import EntityDescription as EntityDescription
8
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
9
+ from ohme import OhmeApiClient as OhmeApiClient
10
+
11
+ @dataclass(frozen=True)
12
+ class OhmeEntityDescription(EntityDescription):
13
+ is_supported_fn: Callable[[OhmeApiClient], bool] = ...
14
+ available_fn: Callable[[OhmeApiClient], bool] = ...
15
+
16
+ class OhmeEntity(CoordinatorEntity[OhmeBaseCoordinator]):
17
+ _attr_has_entity_name: bool
18
+ entity_description: OhmeEntityDescription
19
+ _attr_unique_id: Incomplete
20
+ _attr_device_info: Incomplete
21
+ def __init__(self, coordinator: OhmeBaseCoordinator, entity_description: OhmeEntityDescription) -> None: ...
22
+ @property
23
+ def available(self) -> bool: ...
@@ -0,0 +1,30 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
3
+ from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable, Coroutine
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription
8
+ from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfTime as UnitOfTime
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
+ from ohme import OhmeApiClient as OhmeApiClient
13
+ from typing import Any
14
+
15
+ PARALLEL_UPDATES: int
16
+
17
+ @dataclass(frozen=True, kw_only=True)
18
+ class OhmeNumberDescription(OhmeEntityDescription, NumberEntityDescription):
19
+ set_fn: Callable[[OhmeApiClient, float], Coroutine[Any, Any, bool]]
20
+ value_fn: Callable[[OhmeApiClient], float]
21
+
22
+ NUMBER_DESCRIPTION: Incomplete
23
+
24
+ async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
25
+
26
+ class OhmeNumber(OhmeEntity, NumberEntity):
27
+ entity_description: OhmeNumberDescription
28
+ @property
29
+ def native_value(self) -> float: ...
30
+ async def async_set_native_value(self, value: float) -> None: ...
@@ -0,0 +1,33 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
3
+ from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
4
+ from collections.abc import Callable as Callable, Coroutine
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
7
+ from homeassistant.core import HomeAssistant as HomeAssistant
8
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
9
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
10
+ from ohme import OhmeApiClient as OhmeApiClient
11
+ from typing import Any, Final
12
+
13
+ PARALLEL_UPDATES: int
14
+
15
+ @dataclass(frozen=True, kw_only=True)
16
+ class OhmeSelectDescription(OhmeEntityDescription, SelectEntityDescription):
17
+ select_fn: Callable[[OhmeApiClient, Any], Coroutine[Any, Any, bool | None]]
18
+ options: list[str] | None = ...
19
+ options_fn: Callable[[OhmeApiClient], list[str]] | None = ...
20
+ current_option_fn: Callable[[OhmeApiClient], str | None]
21
+
22
+ MODE_SELECT_DESCRIPTION: Final[OhmeSelectDescription]
23
+ VEHICLE_SELECT_DESCRIPTION: Final[OhmeSelectDescription]
24
+
25
+ async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
26
+
27
+ class OhmeSelect(OhmeEntity, SelectEntity):
28
+ entity_description: OhmeSelectDescription
29
+ async def async_select_option(self, option: str) -> None: ...
30
+ @property
31
+ def options(self) -> list[str]: ...
32
+ @property
33
+ def current_option(self) -> str | None: ...
@@ -0,0 +1,26 @@
1
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
2
+ from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
7
+ from homeassistant.const import PERCENTAGE as PERCENTAGE, STATE_UNKNOWN as STATE_UNKNOWN, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
10
+ from ohme import OhmeApiClient as OhmeApiClient
11
+
12
+ PARALLEL_UPDATES: int
13
+
14
+ @dataclass(frozen=True, kw_only=True)
15
+ class OhmeSensorDescription(OhmeEntityDescription, SensorEntityDescription):
16
+ value_fn: Callable[[OhmeApiClient], str | int | float | None]
17
+
18
+ SENSOR_CHARGE_SESSION: Incomplete
19
+ SENSOR_ADVANCED_SETTINGS: Incomplete
20
+
21
+ async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
22
+
23
+ class OhmeSensor(OhmeEntity, SensorEntity):
24
+ entity_description: OhmeSensorDescription
25
+ @property
26
+ def native_value(self) -> str | int | float | None: ...
@@ -0,0 +1,19 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
3
+ from _typeshed import Incomplete
4
+ from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
5
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
6
+ from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
7
+ from homeassistant.helpers import selector as selector
8
+ from ohme import OhmeApiClient as OhmeApiClient
9
+ from typing import Final
10
+
11
+ ATTR_CONFIG_ENTRY: Final[str]
12
+ ATTR_PRICE_CAP: Final[str]
13
+ SERVICE_LIST_CHARGE_SLOTS: str
14
+ SERVICE_LIST_CHARGE_SLOTS_SCHEMA: Final[Incomplete]
15
+ SERVICE_SET_PRICE_CAP: str
16
+ SERVICE_SET_PRICE_CAP_SCHEMA: Final[Incomplete]
17
+
18
+ def __get_client(call: ServiceCall) -> OhmeApiClient: ...
19
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -0,0 +1,45 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import OhmeConfigEntry as OhmeConfigEntry
3
+ from .entity import OhmeEntity as OhmeEntity, OhmeEntityDescription as OhmeEntityDescription
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Awaitable, Callable as Callable
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.switch import SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
8
+ from homeassistant.const import EntityCategory as EntityCategory
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
+ from ohme import OhmeApiClient as OhmeApiClient
13
+ from typing import Any
14
+
15
+ PARALLEL_UPDATES: int
16
+
17
+ @dataclass(frozen=True, kw_only=True)
18
+ class OhmeConfigSwitchDescription(OhmeEntityDescription, SwitchEntityDescription):
19
+ configuration_key: str
20
+
21
+ @dataclass(frozen=True, kw_only=True)
22
+ class OhmeSwitchDescription(OhmeEntityDescription, SwitchEntityDescription):
23
+ is_on_fn: Callable[[OhmeApiClient], bool]
24
+ off_fn: Callable[[OhmeApiClient], Awaitable]
25
+ on_fn: Callable[[OhmeApiClient], Awaitable]
26
+
27
+ SWITCH_CONFIG: Incomplete
28
+ SWITCH_DESCRIPTION: Incomplete
29
+
30
+ async def async_setup_entry(hass: HomeAssistant, config_entry: OhmeConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
31
+
32
+ class OhmeSwitch(OhmeEntity, SwitchEntity):
33
+ entity_description: OhmeSwitchDescription
34
+ @property
35
+ def is_on(self) -> bool: ...
36
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
37
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
38
+
39
+ class OhmeConfigSwitch(OhmeEntity, SwitchEntity):
40
+ entity_description: OhmeConfigSwitchDescription
41
+ @property
42
+ def is_on(self) -> bool: ...
43
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
44
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
45
+ async def _toggle(self, on: bool) -> None: ...