homeassistant-stubs 2025.9.4__py3-none-any.whl → 2025.10.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (323) hide show
  1. homeassistant-stubs/components/acaia/coordinator.pyi +1 -0
  2. homeassistant-stubs/components/accuweather/__init__.pyi +3 -3
  3. homeassistant-stubs/components/accuweather/config_flow.pyi +5 -0
  4. homeassistant-stubs/components/accuweather/const.pyi +1 -0
  5. homeassistant-stubs/components/accuweather/coordinator.pyi +17 -4
  6. homeassistant-stubs/components/accuweather/weather.pyi +5 -2
  7. homeassistant-stubs/components/airos/__init__.pyi +3 -1
  8. homeassistant-stubs/components/airos/binary_sensor.pyi +2 -2
  9. homeassistant-stubs/components/airos/config_flow.pyi +5 -3
  10. homeassistant-stubs/components/airos/const.pyi +3 -0
  11. homeassistant-stubs/components/airos/coordinator.pyi +4 -4
  12. homeassistant-stubs/components/airos/entity.pyi +2 -2
  13. homeassistant-stubs/components/airos/sensor.pyi +2 -2
  14. homeassistant-stubs/components/airzone/select.pyi +1 -0
  15. homeassistant-stubs/components/aladdin_connect/config_flow.pyi +1 -0
  16. homeassistant-stubs/components/alexa_devices/binary_sensor.pyi +4 -0
  17. homeassistant-stubs/components/alexa_devices/coordinator.pyi +2 -0
  18. homeassistant-stubs/components/alexa_devices/sensor.pyi +3 -0
  19. homeassistant-stubs/components/alexa_devices/switch.pyi +4 -2
  20. homeassistant-stubs/components/alexa_devices/utils.pyi +4 -1
  21. homeassistant-stubs/components/analytics/__init__.pyi +4 -21
  22. homeassistant-stubs/components/analytics/analytics.pyi +42 -5
  23. homeassistant-stubs/components/androidtv/__init__.pyi +5 -1
  24. homeassistant-stubs/components/androidtv/media_player.pyi +1 -10
  25. homeassistant-stubs/components/androidtv/services.pyi +16 -0
  26. homeassistant-stubs/components/androidtv_remote/entity.pyi +1 -3
  27. homeassistant-stubs/components/assist_pipeline/__init__.pyi +1 -1
  28. homeassistant-stubs/components/assist_pipeline/const.pyi +1 -0
  29. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +7 -4
  30. homeassistant-stubs/components/assist_pipeline/select.pyi +1 -1
  31. homeassistant-stubs/components/asuswrt/bridge.pyi +8 -0
  32. homeassistant-stubs/components/blue_current/__init__.pyi +11 -5
  33. homeassistant-stubs/components/blue_current/const.pyi +6 -0
  34. homeassistant-stubs/components/bluetooth/__init__.pyi +2 -2
  35. homeassistant-stubs/components/bluetooth/api.pyi +5 -2
  36. homeassistant-stubs/components/bluetooth/manager.pyi +7 -1
  37. homeassistant-stubs/components/bluetooth/websocket_api.pyi +6 -1
  38. homeassistant-stubs/components/brother/__init__.pyi +4 -2
  39. homeassistant-stubs/components/brother/config_flow.pyi +5 -2
  40. homeassistant-stubs/components/brother/const.pyi +4 -0
  41. homeassistant-stubs/components/bthome/sensor.pyi +1 -1
  42. homeassistant-stubs/components/camera/__init__.pyi +1 -1
  43. homeassistant-stubs/components/camera/prefs.pyi +3 -1
  44. homeassistant-stubs/components/cloud/http_api.pyi +2 -0
  45. homeassistant-stubs/components/comelit/config_flow.pyi +2 -1
  46. homeassistant-stubs/components/comelit/coordinator.pyi +2 -1
  47. homeassistant-stubs/components/comelit/sensor.pyi +1 -1
  48. homeassistant-stubs/components/compit/__init__.pyi +11 -0
  49. homeassistant-stubs/components/compit/climate.pyi +63 -0
  50. homeassistant-stubs/components/compit/config_flow.pyi +17 -0
  51. homeassistant-stubs/components/compit/const.pyi +2 -0
  52. homeassistant-stubs/components/compit/coordinator.pyi +16 -0
  53. homeassistant-stubs/components/derivative/diagnostics.pyi +5 -0
  54. homeassistant-stubs/components/dnsip/sensor.pyi +5 -1
  55. homeassistant-stubs/components/droplet/__init__.pyi +10 -0
  56. homeassistant-stubs/components/droplet/config_flow.pyi +13 -0
  57. homeassistant-stubs/components/droplet/const.pyi +7 -0
  58. homeassistant-stubs/components/droplet/coordinator.pyi +23 -0
  59. homeassistant-stubs/components/droplet/sensor.pyi +37 -0
  60. homeassistant-stubs/components/ecovacs/number.pyi +4 -1
  61. homeassistant-stubs/components/elkm1/config_flow.pyi +2 -0
  62. homeassistant-stubs/components/elkm1/sensor.pyi +8 -1
  63. homeassistant-stubs/components/energy/sensor.pyi +1 -1
  64. homeassistant-stubs/components/esphome/analytics.pyi +4 -0
  65. homeassistant-stubs/components/esphome/assist_satellite.pyi +5 -1
  66. homeassistant-stubs/components/esphome/climate.pyi +2 -0
  67. homeassistant-stubs/components/esphome/config_flow.pyi +3 -0
  68. homeassistant-stubs/components/esphome/const.pyi +1 -0
  69. homeassistant-stubs/components/esphome/entry_data.pyi +8 -4
  70. homeassistant-stubs/components/esphome/lock.pyi +1 -1
  71. homeassistant-stubs/components/esphome/manager.pyi +1 -0
  72. homeassistant-stubs/components/esphome/select.pyi +4 -3
  73. homeassistant-stubs/components/fritz/sensor.pyi +2 -1
  74. homeassistant-stubs/components/frontend/__init__.pyi +5 -2
  75. homeassistant-stubs/components/geocaching/entity.pyi +14 -0
  76. homeassistant-stubs/components/geocaching/sensor.pyi +25 -5
  77. homeassistant-stubs/components/go2rtc/__init__.pyi +3 -0
  78. homeassistant-stubs/components/google/__init__.pyi +0 -1
  79. homeassistant-stubs/components/google/config_flow.pyi +3 -3
  80. homeassistant-stubs/components/google_cloud/__init__.pyi +0 -1
  81. homeassistant-stubs/components/google_cloud/config_flow.pyi +2 -2
  82. homeassistant-stubs/components/google_photos/media_source.pyi +2 -2
  83. homeassistant-stubs/components/habitica/binary_sensor.pyi +1 -1
  84. homeassistant-stubs/components/habitica/const.pyi +1 -0
  85. homeassistant-stubs/components/habitica/sensor.pyi +3 -1
  86. homeassistant-stubs/components/habitica/services.pyi +2 -1
  87. homeassistant-stubs/components/habitica/util.pyi +1 -0
  88. homeassistant-stubs/components/here_travel_time/__init__.pyi +3 -1
  89. homeassistant-stubs/components/history_stats/config_flow.pyi +7 -2
  90. homeassistant-stubs/components/history_stats/diagnostics.pyi +5 -0
  91. homeassistant-stubs/components/home_connect/application_credentials.pyi +0 -1
  92. homeassistant-stubs/components/home_connect/coordinator.pyi +0 -1
  93. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +44 -13
  94. homeassistant-stubs/components/homeassistant_hardware/update.pyi +2 -2
  95. homeassistant-stubs/components/homeassistant_hardware/util.pyi +10 -4
  96. homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +1 -1
  97. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +3 -1
  98. homeassistant-stubs/components/homeassistant_yellow/update.pyi +2 -2
  99. homeassistant-stubs/components/homee/alarm_control_panel.pyi +3 -2
  100. homeassistant-stubs/components/homee/binary_sensor.pyi +4 -2
  101. homeassistant-stubs/components/homee/button.pyi +3 -1
  102. homeassistant-stubs/components/homee/climate.pyi +3 -1
  103. homeassistant-stubs/components/homee/cover.pyi +3 -1
  104. homeassistant-stubs/components/homee/event.pyi +3 -1
  105. homeassistant-stubs/components/homee/fan.pyi +3 -1
  106. homeassistant-stubs/components/homee/helpers.pyi +6 -0
  107. homeassistant-stubs/components/homee/light.pyi +2 -0
  108. homeassistant-stubs/components/homee/lock.pyi +4 -2
  109. homeassistant-stubs/components/homee/number.pyi +3 -1
  110. homeassistant-stubs/components/homee/select.pyi +3 -1
  111. homeassistant-stubs/components/homee/sensor.pyi +2 -2
  112. homeassistant-stubs/components/homee/siren.pyi +4 -1
  113. homeassistant-stubs/components/homee/switch.pyi +4 -2
  114. homeassistant-stubs/components/homee/valve.pyi +3 -1
  115. homeassistant-stubs/components/homekit/type_switches.pyi +7 -1
  116. homeassistant-stubs/components/homewizard/sensor.pyi +3 -1
  117. homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +1 -1
  118. homeassistant-stubs/components/image/__init__.pyi +1 -0
  119. homeassistant-stubs/components/image_upload/__init__.pyi +1 -1
  120. homeassistant-stubs/components/image_upload/const.pyi +1 -0
  121. homeassistant-stubs/components/image_upload/media_source.pyi +5 -1
  122. homeassistant-stubs/components/immich/media_source.pyi +2 -2
  123. homeassistant-stubs/components/integration/__init__.pyi +0 -1
  124. homeassistant-stubs/components/integration/config_flow.pyi +1 -0
  125. homeassistant-stubs/components/lamarzocco/coordinator.pyi +4 -2
  126. homeassistant-stubs/components/lawn_mower/intent.pyi +8 -0
  127. homeassistant-stubs/components/letpot/number.pyi +34 -0
  128. homeassistant-stubs/components/libre_hardware_monitor/__init__.pyi +9 -0
  129. homeassistant-stubs/components/libre_hardware_monitor/config_flow.pyi +12 -0
  130. homeassistant-stubs/components/libre_hardware_monitor/const.pyi +4 -0
  131. homeassistant-stubs/components/libre_hardware_monitor/coordinator.pyi +21 -0
  132. homeassistant-stubs/components/libre_hardware_monitor/sensor.pyi +34 -0
  133. homeassistant-stubs/components/litterrobot/select.pyi +1 -1
  134. homeassistant-stubs/components/litterrobot/switch.pyi +5 -1
  135. homeassistant-stubs/components/logbook/helpers.pyi +4 -3
  136. homeassistant-stubs/components/mastodon/const.pyi +1 -0
  137. homeassistant-stubs/components/mastodon/services.pyi +1 -1
  138. homeassistant-stubs/components/matter/models.pyi +1 -0
  139. homeassistant-stubs/components/matter/sensor.pyi +1 -0
  140. homeassistant-stubs/components/mcp_server/session.pyi +2 -2
  141. homeassistant-stubs/components/media_source/__init__.pyi +2 -10
  142. homeassistant-stubs/components/media_source/helper.pyi +16 -0
  143. homeassistant-stubs/components/media_source/http.pyi +13 -0
  144. homeassistant-stubs/components/media_source/local_source.pyi +19 -11
  145. homeassistant-stubs/components/metoffice/sensor.pyi +1 -1
  146. homeassistant-stubs/components/miele/const.pyi +193 -17
  147. homeassistant-stubs/components/miele/sensor.pyi +12 -3
  148. homeassistant-stubs/components/miele/vacuum.pyi +1 -2
  149. homeassistant-stubs/components/min_max/sensor.pyi +1 -1
  150. homeassistant-stubs/components/modbus/__init__.pyi +1 -1
  151. homeassistant-stubs/components/modbus/binary_sensor.pyi +2 -2
  152. homeassistant-stubs/components/modbus/climate.pyi +2 -2
  153. homeassistant-stubs/components/modbus/const.pyi +1 -0
  154. homeassistant-stubs/components/modbus/cover.pyi +2 -2
  155. homeassistant-stubs/components/modbus/entity.pyi +4 -4
  156. homeassistant-stubs/components/modbus/fan.pyi +2 -2
  157. homeassistant-stubs/components/modbus/light.pyi +2 -2
  158. homeassistant-stubs/components/modbus/modbus.pyi +1 -2
  159. homeassistant-stubs/components/modbus/sensor.pyi +2 -2
  160. homeassistant-stubs/components/modbus/switch.pyi +2 -2
  161. homeassistant-stubs/components/modbus/validators.pyi +1 -1
  162. homeassistant-stubs/components/motionmount/select.pyi +1 -0
  163. homeassistant-stubs/components/mqtt/config_flow.pyi +61 -60
  164. homeassistant-stubs/components/mqtt/const.pyi +6 -0
  165. homeassistant-stubs/components/mqtt/device_automation.pyi +1 -1
  166. homeassistant-stubs/components/mqtt/entity.pyi +2 -2
  167. homeassistant-stubs/components/mqtt/image.pyi +1 -5
  168. homeassistant-stubs/components/mqtt/light/schema_json.pyi +0 -1
  169. homeassistant-stubs/components/mqtt/schemas.pyi +1 -1
  170. homeassistant-stubs/components/mqtt/tag.pyi +1 -1
  171. homeassistant-stubs/components/music_assistant/__init__.pyi +2 -1
  172. homeassistant-stubs/components/music_assistant/config_flow.pyi +1 -1
  173. homeassistant-stubs/components/music_assistant/const.pyi +1 -0
  174. homeassistant-stubs/components/nordpool/coordinator.pyi +4 -2
  175. homeassistant-stubs/components/ntfy/config_flow.pyi +4 -2
  176. homeassistant-stubs/components/ntfy/const.pyi +6 -0
  177. homeassistant-stubs/components/ntfy/entity.pyi +18 -0
  178. homeassistant-stubs/components/ntfy/event.pyi +29 -0
  179. homeassistant-stubs/components/ntfy/notify.pyi +19 -13
  180. homeassistant-stubs/components/{home_connect → ntfy}/repairs.pyi +7 -3
  181. homeassistant-stubs/components/number/const.pyi +1 -1
  182. homeassistant-stubs/components/openai_conversation/ai_task.pyi +5 -1
  183. homeassistant-stubs/components/openai_conversation/const.pyi +1 -0
  184. homeassistant-stubs/components/openai_conversation/entity.pyi +2 -2
  185. homeassistant-stubs/components/openuv/__init__.pyi +1 -1
  186. homeassistant-stubs/components/openuv/binary_sensor.pyi +2 -2
  187. homeassistant-stubs/components/openuv/coordinator.pyi +14 -1
  188. homeassistant-stubs/components/opnsense/__init__.pyi +11 -0
  189. homeassistant-stubs/components/opnsense/const.pyi +5 -0
  190. homeassistant-stubs/components/opnsense/device_tracker.pyi +23 -0
  191. homeassistant-stubs/components/portainer/__init__.pyi +12 -0
  192. homeassistant-stubs/components/portainer/binary_sensor.pyi +39 -0
  193. homeassistant-stubs/components/portainer/config_flow.pyi +21 -0
  194. homeassistant-stubs/components/portainer/const.pyi +2 -0
  195. homeassistant-stubs/components/portainer/coordinator.pyi +29 -0
  196. homeassistant-stubs/components/portainer/entity.pyi +22 -0
  197. homeassistant-stubs/components/prusalink/coordinator.pyi +2 -0
  198. homeassistant-stubs/components/radio_browser/media_source.pyi +3 -0
  199. homeassistant-stubs/components/recorder/models/statistics.pyi +1 -0
  200. homeassistant-stubs/components/recorder/util.pyi +1 -0
  201. homeassistant-stubs/components/reolink/entity.pyi +10 -0
  202. homeassistant-stubs/components/reolink/light.pyi +7 -1
  203. homeassistant-stubs/components/reolink/number.pyi +10 -1
  204. homeassistant-stubs/components/reolink/select.pyi +11 -3
  205. homeassistant-stubs/components/reolink/siren.pyi +11 -1
  206. homeassistant-stubs/components/reolink/switch.pyi +11 -1
  207. homeassistant-stubs/components/roborock/config_flow.pyi +1 -1
  208. homeassistant-stubs/components/roborock/const.pyi +1 -0
  209. homeassistant-stubs/components/roborock/coordinator.pyi +1 -1
  210. homeassistant-stubs/components/route_b_smart_meter/__init__.pyi +10 -0
  211. homeassistant-stubs/components/route_b_smart_meter/config_flow.pyi +22 -0
  212. homeassistant-stubs/components/route_b_smart_meter/const.pyi +9 -0
  213. homeassistant-stubs/components/route_b_smart_meter/coordinator.pyi +26 -0
  214. homeassistant-stubs/components/route_b_smart_meter/sensor.pyi +30 -0
  215. homeassistant-stubs/components/scrape/__init__.pyi +0 -1
  216. homeassistant-stubs/components/scrape/config_flow.pyi +1 -0
  217. homeassistant-stubs/components/scrape/coordinator.pyi +5 -1
  218. homeassistant-stubs/components/sensor/const.pyi +1 -0
  219. homeassistant-stubs/components/sensor/device_condition.pyi +1 -0
  220. homeassistant-stubs/components/sensor/device_trigger.pyi +1 -0
  221. homeassistant-stubs/components/sftp_storage/__init__.pyi +21 -0
  222. homeassistant-stubs/components/sftp_storage/backup.pyi +24 -0
  223. homeassistant-stubs/components/sftp_storage/client.pyi +48 -0
  224. homeassistant-stubs/components/sftp_storage/config_flow.pyi +25 -0
  225. homeassistant-stubs/components/sftp_storage/const.pyi +16 -0
  226. homeassistant-stubs/components/shelly/__init__.pyi +2 -2
  227. homeassistant-stubs/components/shelly/binary_sensor.pyi +5 -1
  228. homeassistant-stubs/components/shelly/button.pyi +10 -2
  229. homeassistant-stubs/components/shelly/const.pyi +5 -2
  230. homeassistant-stubs/components/shelly/cover.pyi +6 -0
  231. homeassistant-stubs/components/shelly/entity.pyi +1 -3
  232. homeassistant-stubs/components/shelly/light.pyi +18 -10
  233. homeassistant-stubs/components/shelly/number.pyi +1 -1
  234. homeassistant-stubs/components/shelly/repairs.pyi +4 -2
  235. homeassistant-stubs/components/shelly/select.pyi +1 -1
  236. homeassistant-stubs/components/shelly/sensor.pyi +16 -8
  237. homeassistant-stubs/components/shelly/switch.pyi +1 -1
  238. homeassistant-stubs/components/shelly/text.pyi +1 -1
  239. homeassistant-stubs/components/shelly/utils.pyi +7 -2
  240. homeassistant-stubs/components/sql/__init__.pyi +2 -2
  241. homeassistant-stubs/components/sql/config_flow.pyi +6 -2
  242. homeassistant-stubs/components/sql/const.pyi +1 -0
  243. homeassistant-stubs/components/sql/sensor.pyi +1 -1
  244. homeassistant-stubs/components/squeezebox/browse_media.pyi +1 -1
  245. homeassistant-stubs/components/ssdp/server.pyi +2 -3
  246. homeassistant-stubs/components/starlink/sensor.pyi +8 -1
  247. homeassistant-stubs/components/statistics/__init__.pyi +0 -1
  248. homeassistant-stubs/components/statistics/config_flow.pyi +1 -0
  249. homeassistant-stubs/components/switchbot_cloud/__init__.pyi +1 -0
  250. homeassistant-stubs/components/switchbot_cloud/binary_sensor.pyi +7 -0
  251. homeassistant-stubs/components/switchbot_cloud/climate.pyi +7 -3
  252. homeassistant-stubs/components/switchbot_cloud/const.pyi +13 -0
  253. homeassistant-stubs/components/switchbot_cloud/entity.pyi +1 -1
  254. homeassistant-stubs/components/switchbot_cloud/humidifier.pyi +48 -0
  255. homeassistant-stubs/components/switchbot_cloud/light.pyi +1 -0
  256. homeassistant-stubs/components/switchbot_cloud/sensor.pyi +13 -1
  257. homeassistant-stubs/components/synology_dsm/media_source.pyi +2 -2
  258. homeassistant-stubs/components/synology_dsm/sensor.pyi +3 -0
  259. homeassistant-stubs/components/systemmonitor/binary_sensor.pyi +1 -1
  260. homeassistant-stubs/components/systemmonitor/const.pyi +1 -0
  261. homeassistant-stubs/components/systemmonitor/coordinator.pyi +2 -0
  262. homeassistant-stubs/components/systemmonitor/sensor.pyi +2 -0
  263. homeassistant-stubs/components/telegram_bot/__init__.pyi +2 -1
  264. homeassistant-stubs/components/telegram_bot/bot.pyi +1 -0
  265. homeassistant-stubs/components/telegram_bot/const.pyi +13 -0
  266. homeassistant-stubs/components/threshold/__init__.pyi +0 -1
  267. homeassistant-stubs/components/threshold/config_flow.pyi +1 -0
  268. homeassistant-stubs/components/tolo/config_flow.pyi +5 -3
  269. homeassistant-stubs/components/tts/__init__.pyi +5 -0
  270. homeassistant-stubs/components/uptimerobot/config_flow.pyi +1 -0
  271. homeassistant-stubs/components/vacuum/intent.pyi +1 -1
  272. homeassistant-stubs/components/volvo/__init__.pyi +1 -1
  273. homeassistant-stubs/components/volvo/api.pyi +4 -0
  274. homeassistant-stubs/components/volvo/coordinator.pyi +28 -15
  275. homeassistant-stubs/components/wake_on_lan/__init__.pyi +0 -1
  276. homeassistant-stubs/components/wake_on_lan/config_flow.pyi +1 -0
  277. homeassistant-stubs/components/webhook/trigger.pyi +2 -1
  278. homeassistant-stubs/components/wled/analytics.pyi +4 -0
  279. homeassistant-stubs/components/workday/calendar.pyi +23 -0
  280. homeassistant-stubs/components/yalexs_ble/__init__.pyi +0 -1
  281. homeassistant-stubs/components/yalexs_ble/config_flow.pyi +2 -2
  282. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  283. homeassistant-stubs/components/zwave_js/config_flow.pyi +6 -3
  284. homeassistant-stubs/components/zwave_js/const.pyi +3 -0
  285. homeassistant-stubs/components/zwave_js/device_trigger.pyi +1 -1
  286. homeassistant-stubs/components/zwave_js/triggers/event.pyi +24 -9
  287. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +11 -7
  288. homeassistant-stubs/config_entries.pyi +6 -1
  289. homeassistant-stubs/const.pyi +7 -46
  290. homeassistant-stubs/data_entry_flow.pyi +16 -3
  291. homeassistant-stubs/generated/entity_platforms.pyi +46 -0
  292. homeassistant-stubs/helpers/condition.pyi +3 -1
  293. homeassistant-stubs/helpers/config_validation.pyi +1 -1
  294. homeassistant-stubs/helpers/deprecation.pyi +1 -0
  295. homeassistant-stubs/helpers/device_registry.pyi +4 -3
  296. homeassistant-stubs/helpers/entity_component.pyi +1 -3
  297. homeassistant-stubs/helpers/event.pyi +2 -1
  298. homeassistant-stubs/helpers/intent.pyi +5 -8
  299. homeassistant-stubs/helpers/schema_config_entry_flow.pyi +5 -1
  300. homeassistant-stubs/helpers/selector.pyi +16 -16
  301. homeassistant-stubs/helpers/service.pyi +12 -14
  302. homeassistant-stubs/helpers/service_info/esphome.pyi +12 -0
  303. homeassistant-stubs/helpers/{template.pyi → template/__init__.pyi} +14 -97
  304. homeassistant-stubs/helpers/template/context.pyi +16 -0
  305. homeassistant-stubs/helpers/template/extensions/__init__.pyi +8 -0
  306. homeassistant-stubs/helpers/template/extensions/base.pyi +21 -0
  307. homeassistant-stubs/helpers/template/extensions/base64.pyi +9 -0
  308. homeassistant-stubs/helpers/template/extensions/collection.pyi +18 -0
  309. homeassistant-stubs/helpers/template/extensions/crypto.pyi +13 -0
  310. homeassistant-stubs/helpers/template/extensions/math.pyi +43 -0
  311. homeassistant-stubs/helpers/template/extensions/regex.pyi +14 -0
  312. homeassistant-stubs/helpers/template/extensions/string.pyi +9 -0
  313. homeassistant-stubs/helpers/template/helpers.pyi +4 -0
  314. homeassistant-stubs/helpers/template/render_info.pyi +39 -0
  315. homeassistant-stubs/helpers/trigger.pyi +16 -5
  316. homeassistant-stubs/helpers/trigger_template_entity.pyi +2 -1
  317. homeassistant-stubs/runner.pyi +16 -0
  318. homeassistant-stubs/util/unit_conversion.pyi +1 -0
  319. {homeassistant_stubs-2025.9.4.dist-info → homeassistant_stubs-2025.10.0.dist-info}/METADATA +2 -2
  320. {homeassistant_stubs-2025.9.4.dist-info → homeassistant_stubs-2025.10.0.dist-info}/RECORD +322 -262
  321. homeassistant-stubs/components/home_connect/time.pyi +0 -29
  322. {homeassistant_stubs-2025.9.4.dist-info → homeassistant_stubs-2025.10.0.dist-info}/WHEEL +0 -0
  323. {homeassistant_stubs-2025.9.4.dist-info → homeassistant_stubs-2025.10.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,5 +1,5 @@
1
1
  from .const import CONF_FROM_WINDOW as CONF_FROM_WINDOW, CONF_TO_WINDOW as CONF_TO_WINDOW, DATA_PROTECTION_WINDOW as DATA_PROTECTION_WINDOW, DATA_UV as DATA_UV, DEFAULT_FROM_WINDOW as DEFAULT_FROM_WINDOW, DEFAULT_TO_WINDOW as DEFAULT_TO_WINDOW, DOMAIN as DOMAIN, LOGGER as LOGGER
2
- from .coordinator import OpenUvCoordinator as OpenUvCoordinator
2
+ from .coordinator import OpenUvCoordinator as OpenUvCoordinator, OpenUvProtectionWindowCoordinator as OpenUvProtectionWindowCoordinator
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
5
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_BINARY_SENSORS as CONF_BINARY_SENSORS, CONF_ELEVATION as CONF_ELEVATION, CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, CONF_SENSORS as CONF_SENSORS, Platform as Platform
@@ -6,7 +6,7 @@ from homeassistant.components.binary_sensor import BinarySensorEntity as BinaryS
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
8
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
- from homeassistant.util.dt import as_local as as_local, parse_datetime as parse_datetime, utcnow as utcnow
9
+ from homeassistant.util.dt import as_local as as_local
10
10
 
11
11
  ATTR_PROTECTION_WINDOW_ENDING_TIME: str
12
12
  ATTR_PROTECTION_WINDOW_ENDING_UV: str
@@ -19,5 +19,5 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_e
19
19
  class OpenUvBinarySensor(OpenUvEntity, BinarySensorEntity):
20
20
  @callback
21
21
  def _handle_coordinator_update(self) -> None: ...
22
- _attr_is_on: bool
22
+ _attr_is_on: Incomplete
23
23
  def _update_attrs(self) -> None: ...
@@ -1,11 +1,13 @@
1
+ import datetime as dt
1
2
  from .const import LOGGER as LOGGER
2
3
  from _typeshed import Incomplete
3
4
  from collections.abc import Awaitable, Callable as Callable
4
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
- from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HomeAssistant as HomeAssistant, callback as callback
6
7
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
7
8
  from homeassistant.helpers.debounce import Debouncer as Debouncer
8
9
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
10
+ from homeassistant.util.dt import parse_datetime as parse_datetime, utcnow as utcnow
9
11
  from typing import Any
10
12
 
11
13
  DEFAULT_DEBOUNCER_COOLDOWN_SECONDS: Incomplete
@@ -17,3 +19,14 @@ class OpenUvCoordinator(DataUpdateCoordinator[dict[str, Any]]):
17
19
  longitude: Incomplete
18
20
  def __init__(self, hass: HomeAssistant, *, entry: ConfigEntry, name: str, latitude: str, longitude: str, update_method: Callable[[], Awaitable[dict[str, Any]]]) -> None: ...
19
21
  async def _async_update_data(self) -> dict[str, Any]: ...
22
+
23
+ class OpenUvProtectionWindowCoordinator(OpenUvCoordinator):
24
+ _reprocess_listener: CALLBACK_TYPE | None
25
+ async def _async_update_data(self) -> dict[str, Any]: ...
26
+ def _parse_data(self, data: dict[str, Any]) -> dict[str, Any]: ...
27
+ def _process_data(self, data: dict[str, Any]) -> dict[str, Any]: ...
28
+ def _schedule_reprocessing(self, data: dict[str, Any]) -> None: ...
29
+ def _async_cancel_reprocess_listener(self) -> None: ...
30
+ data: Incomplete
31
+ @callback
32
+ def _async_handle_reprocess_event(self, now: dt.datetime) -> None: ...
@@ -0,0 +1,11 @@
1
+ from .const import CONF_API_SECRET as CONF_API_SECRET, CONF_INTERFACE_CLIENT as CONF_INTERFACE_CLIENT, CONF_TRACKER_INTERFACES as CONF_TRACKER_INTERFACES, DOMAIN as DOMAIN, OPNSENSE_DATA as OPNSENSE_DATA
2
+ from _typeshed import Incomplete
3
+ from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.helpers.discovery import load_platform as load_platform
6
+ from homeassistant.helpers.typing import ConfigType as ConfigType
7
+
8
+ _LOGGER: Incomplete
9
+ CONFIG_SCHEMA: Incomplete
10
+
11
+ def setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
@@ -0,0 +1,5 @@
1
+ DOMAIN: str
2
+ OPNSENSE_DATA = DOMAIN
3
+ CONF_API_SECRET: str
4
+ CONF_INTERFACE_CLIENT: str
5
+ CONF_TRACKER_INTERFACES: str
@@ -0,0 +1,23 @@
1
+ from .const import CONF_INTERFACE_CLIENT as CONF_INTERFACE_CLIENT, CONF_TRACKER_INTERFACES as CONF_TRACKER_INTERFACES, OPNSENSE_DATA as OPNSENSE_DATA
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components.device_tracker import DeviceScanner as DeviceScanner
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.helpers.typing import ConfigType as ConfigType
6
+ from pyopnsense import diagnostics as diagnostics
7
+ from typing import Any
8
+
9
+ DeviceDetails: Incomplete
10
+ DeviceDetailsByMAC: Incomplete
11
+
12
+ async def async_get_scanner(hass: HomeAssistant, config: ConfigType) -> DeviceScanner | None: ...
13
+
14
+ class OPNsenseDeviceScanner(DeviceScanner):
15
+ last_results: dict[str, Any]
16
+ client: Incomplete
17
+ interfaces: Incomplete
18
+ def __init__(self, client: diagnostics.InterfaceClient, interfaces: list[str]) -> None: ...
19
+ def _get_mac_addrs(self, devices: list[DeviceDetails]) -> DeviceDetailsByMAC | dict: ...
20
+ def scan_devices(self) -> list[str]: ...
21
+ def get_device_name(self, device: str) -> str | None: ...
22
+ def update_info(self) -> bool: ...
23
+ def get_extra_attributes(self, device: str) -> dict[Any, Any]: ...
@@ -0,0 +1,12 @@
1
+ from .coordinator import PortainerCoordinator as PortainerCoordinator
2
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
3
+ from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_API_TOKEN as CONF_API_TOKEN, CONF_HOST as CONF_HOST, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL, Platform as Platform
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+ from homeassistant.helpers.aiohttp_client import async_create_clientsession as async_create_clientsession
6
+
7
+ _PLATFORMS: list[Platform]
8
+ type PortainerConfigEntry = ConfigEntry[PortainerCoordinator]
9
+
10
+ async def async_setup_entry(hass: HomeAssistant, entry: PortainerConfigEntry) -> bool: ...
11
+ async def async_unload_entry(hass: HomeAssistant, entry: PortainerConfigEntry) -> bool: ...
12
+ async def async_migrate_entry(hass: HomeAssistant, entry: PortainerConfigEntry) -> bool: ...
@@ -0,0 +1,39 @@
1
+ from . import PortainerConfigEntry as PortainerConfigEntry
2
+ from .coordinator import PortainerCoordinator as PortainerCoordinator
3
+ from .entity import PortainerContainerEntity as PortainerContainerEntity, PortainerCoordinatorData as PortainerCoordinatorData, PortainerEndpointEntity as PortainerEndpointEntity
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
8
+ from homeassistant.const import EntityCategory as EntityCategory
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from pyportainer.models.docker import DockerContainer as DockerContainer
12
+ from typing import Any
13
+
14
+ @dataclass(frozen=True, kw_only=True)
15
+ class PortainerBinarySensorEntityDescription(BinarySensorEntityDescription):
16
+ state_fn: Callable[[Any], bool]
17
+
18
+ CONTAINER_SENSORS: tuple[PortainerBinarySensorEntityDescription, ...]
19
+ ENDPOINT_SENSORS: tuple[PortainerBinarySensorEntityDescription, ...]
20
+
21
+ async def async_setup_entry(hass: HomeAssistant, entry: PortainerConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
22
+
23
+ class PortainerEndpointSensor(PortainerEndpointEntity, BinarySensorEntity):
24
+ entity_description: PortainerBinarySensorEntityDescription
25
+ _attr_unique_id: Incomplete
26
+ def __init__(self, coordinator: PortainerCoordinator, entity_description: PortainerBinarySensorEntityDescription, device_info: PortainerCoordinatorData) -> None: ...
27
+ @property
28
+ def available(self) -> bool: ...
29
+ @property
30
+ def is_on(self) -> bool | None: ...
31
+
32
+ class PortainerContainerSensor(PortainerContainerEntity, BinarySensorEntity):
33
+ entity_description: PortainerBinarySensorEntityDescription
34
+ _attr_unique_id: Incomplete
35
+ def __init__(self, coordinator: PortainerCoordinator, entity_description: PortainerBinarySensorEntityDescription, device_info: DockerContainer, via_device: PortainerCoordinatorData) -> None: ...
36
+ @property
37
+ def available(self) -> bool: ...
38
+ @property
39
+ def is_on(self) -> bool | None: ...
@@ -0,0 +1,21 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
4
+ from homeassistant.const import CONF_API_TOKEN as CONF_API_TOKEN, CONF_URL as CONF_URL, CONF_VERIFY_SSL as CONF_VERIFY_SSL
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
8
+ from typing import Any
9
+
10
+ _LOGGER: Incomplete
11
+ STEP_USER_DATA_SCHEMA: Incomplete
12
+
13
+ async def _validate_input(hass: HomeAssistant, data: dict[str, Any]) -> None: ...
14
+
15
+ class PortainerConfigFlow(ConfigFlow, domain=DOMAIN):
16
+ VERSION: int
17
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
18
+
19
+ class CannotConnect(HomeAssistantError): ...
20
+ class InvalidAuth(HomeAssistantError): ...
21
+ class PortainerTimeout(HomeAssistantError): ...
@@ -0,0 +1,2 @@
1
+ DOMAIN: str
2
+ DEFAULT_NAME: str
@@ -0,0 +1,29 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from dataclasses import dataclass
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
+ from homeassistant.const import CONF_URL as CONF_URL
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.exceptions import ConfigEntryError as ConfigEntryError, ConfigEntryNotReady as ConfigEntryNotReady
8
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
9
+ from pyportainer import Portainer as Portainer
10
+ from pyportainer.models.docker import DockerContainer as DockerContainer
11
+ from pyportainer.models.portainer import Endpoint as Endpoint
12
+
13
+ type PortainerConfigEntry = ConfigEntry[PortainerCoordinator]
14
+ _LOGGER: Incomplete
15
+ DEFAULT_SCAN_INTERVAL: Incomplete
16
+
17
+ @dataclass
18
+ class PortainerCoordinatorData:
19
+ id: int
20
+ name: str | None
21
+ endpoint: Endpoint
22
+ containers: dict[str, DockerContainer]
23
+
24
+ class PortainerCoordinator(DataUpdateCoordinator[dict[int, PortainerCoordinatorData]]):
25
+ config_entry: PortainerConfigEntry
26
+ portainer: Incomplete
27
+ def __init__(self, hass: HomeAssistant, config_entry: PortainerConfigEntry, portainer: Portainer) -> None: ...
28
+ async def _async_setup(self) -> None: ...
29
+ async def _async_update_data(self) -> dict[int, PortainerCoordinatorData]: ...
@@ -0,0 +1,22 @@
1
+ from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN
2
+ from .coordinator import PortainerCoordinator as PortainerCoordinator, PortainerCoordinatorData as PortainerCoordinatorData
3
+ from _typeshed import Incomplete
4
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
5
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
6
+ from pyportainer.models.docker import DockerContainer as DockerContainer
7
+
8
+ class PortainerCoordinatorEntity(CoordinatorEntity[PortainerCoordinator]):
9
+ _attr_has_entity_name: bool
10
+
11
+ class PortainerEndpointEntity(PortainerCoordinatorEntity):
12
+ _device_info: Incomplete
13
+ device_id: Incomplete
14
+ _attr_device_info: Incomplete
15
+ def __init__(self, device_info: PortainerCoordinatorData, coordinator: PortainerCoordinator) -> None: ...
16
+
17
+ class PortainerContainerEntity(PortainerCoordinatorEntity):
18
+ _device_info: Incomplete
19
+ device_id: Incomplete
20
+ endpoint_id: Incomplete
21
+ _attr_device_info: Incomplete
22
+ def __init__(self, device_info: DockerContainer, coordinator: PortainerCoordinator, via_device: PortainerCoordinatorData) -> None: ...
@@ -5,11 +5,13 @@ from abc import ABC, abstractmethod
5
5
  from datetime import timedelta
6
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
+ from homeassistant.helpers.debounce import Debouncer as Debouncer
8
9
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
9
10
  from pyprusalink import JobInfo, LegacyPrinterStatus, PrinterInfo, PrinterStatus, PrusaLink as PrusaLink
10
11
  from typing import TypeVar
11
12
 
12
13
  _LOGGER: Incomplete
14
+ _MINIMUM_REFRESH_INTERVAL: float
13
15
  T = TypeVar('T', PrinterStatus, LegacyPrinterStatus, JobInfo)
14
16
 
15
17
  class PrusaLinkUpdateCoordinator(DataUpdateCoordinator[T], ABC, metaclass=abc.ABCMeta):
@@ -4,6 +4,7 @@ from _typeshed import Incomplete
4
4
  from homeassistant.components.media_player import MediaClass as MediaClass, MediaType as MediaType
5
5
  from homeassistant.components.media_source import BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia, Unresolvable as Unresolvable
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
+ from homeassistant.util.location import vincenty as vincenty
7
8
  from radios import RadioBrowser as RadioBrowser, Station as Station
8
9
 
9
10
  CODEC_TO_MIMETYPE: Incomplete
@@ -28,3 +29,5 @@ class RadioMediaSource(MediaSource):
28
29
  async def _async_build_by_language(self, radios: RadioBrowser, item: MediaSourceItem) -> list[BrowseMediaSource]: ...
29
30
  async def _async_build_popular(self, radios: RadioBrowser, item: MediaSourceItem) -> list[BrowseMediaSource]: ...
30
31
  async def _async_build_by_tag(self, radios: RadioBrowser, item: MediaSourceItem) -> list[BrowseMediaSource]: ...
32
+ def _filter_local_stations(self, stations: list[Station], latitude: float, longitude: float) -> list[Station]: ...
33
+ async def _async_build_local(self, radios: RadioBrowser, item: MediaSourceItem) -> list[BrowseMediaSource]: ...
@@ -43,6 +43,7 @@ class StatisticMetaData(TypedDict):
43
43
  class CalendarStatisticPeriod(TypedDict, total=False):
44
44
  period: Literal['hour', 'day', 'week', 'month', 'year']
45
45
  offset: int
46
+ first_weekday: Literal['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']
46
47
 
47
48
  class FixedStatisticPeriod(TypedDict, total=False):
48
49
  end_time: datetime
@@ -7,6 +7,7 @@ from awesomeversion import AwesomeVersion
7
7
  from collections.abc import Callable, Generator, Sequence
8
8
  from contextlib import contextmanager
9
9
  from datetime import date, datetime
10
+ from homeassistant.const import WEEKDAYS as WEEKDAYS
10
11
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
12
  from homeassistant.helpers.recorder import DATA_INSTANCE as DATA_INSTANCE, get_instance as get_instance, session_scope as session_scope
12
13
  from sqlalchemy.engine import Result as Result, Row as Row
@@ -57,6 +57,16 @@ class ReolinkChannelCoordinatorEntity(ReolinkHostCoordinatorEntity):
57
57
  async def async_added_to_hass(self) -> None: ...
58
58
  async def async_will_remove_from_hass(self) -> None: ...
59
59
 
60
+ class ReolinkHostChimeCoordinatorEntity(ReolinkHostCoordinatorEntity):
61
+ _channel: Incomplete
62
+ _chime: Incomplete
63
+ _attr_unique_id: Incomplete
64
+ _dev_id: Incomplete
65
+ _attr_device_info: Incomplete
66
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, coordinator: DataUpdateCoordinator[None] | None = None) -> None: ...
67
+ @property
68
+ def available(self) -> bool: ...
69
+
60
70
  class ReolinkChimeCoordinatorEntity(ReolinkChannelCoordinatorEntity):
61
71
  _chime: Incomplete
62
72
  _attr_unique_id: Incomplete
@@ -3,7 +3,7 @@ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as Reoli
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable
5
5
  from dataclasses import dataclass
6
- from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ColorMode as ColorMode, LightEntity as LightEntity, LightEntityDescription as LightEntityDescription
6
+ from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ATTR_COLOR_TEMP_KELVIN as ATTR_COLOR_TEMP_KELVIN, ColorMode as ColorMode, LightEntity as LightEntity, LightEntityDescription as LightEntityDescription
7
7
  from homeassistant.const import EntityCategory as EntityCategory
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
@@ -15,8 +15,10 @@ PARALLEL_UPDATES: int
15
15
  @dataclass(frozen=True, kw_only=True)
16
16
  class ReolinkLightEntityDescription(LightEntityDescription, ReolinkChannelEntityDescription):
17
17
  get_brightness_fn: Callable[[Host, int], int | None] | None = ...
18
+ get_color_temp_fn: Callable[[Host, int], int | None] | None = ...
18
19
  is_on_fn: Callable[[Host, int], bool]
19
20
  set_brightness_fn: Callable[[Host, int, int], Any] | None = ...
21
+ set_color_temp_fn: Callable[[Host, int, int], Any] | None = ...
20
22
  turn_on_off_fn: Callable[[Host, int, bool], Any]
21
23
 
22
24
  @dataclass(frozen=True, kw_only=True)
@@ -33,11 +35,15 @@ class ReolinkLightEntity(ReolinkChannelCoordinatorEntity, LightEntity):
33
35
  entity_description: ReolinkLightEntityDescription
34
36
  _attr_supported_color_modes: Incomplete
35
37
  _attr_color_mode: Incomplete
38
+ _attr_min_color_temp_kelvin: Incomplete
39
+ _attr_max_color_temp_kelvin: Incomplete
36
40
  def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkLightEntityDescription) -> None: ...
37
41
  @property
38
42
  def is_on(self) -> bool: ...
39
43
  @property
40
44
  def brightness(self) -> int | None: ...
45
+ @property
46
+ def color_temp_kelvin(self) -> int | None: ...
41
47
  @raise_translated_error
42
48
  async def async_turn_off(self, **kwargs: Any) -> None: ...
43
49
  @raise_translated_error
@@ -1,4 +1,4 @@
1
- from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostChimeCoordinatorEntity as ReolinkHostChimeCoordinatorEntity, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
2
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable
@@ -86,3 +86,12 @@ class ReolinkChimeNumberEntity(ReolinkChimeCoordinatorEntity, NumberEntity):
86
86
  def native_value(self) -> float | None: ...
87
87
  @raise_translated_error
88
88
  async def async_set_native_value(self, value: float) -> None: ...
89
+
90
+ class ReolinkHostChimeNumberEntity(ReolinkHostChimeCoordinatorEntity, NumberEntity):
91
+ entity_description: ReolinkChimeNumberEntityDescription
92
+ _attr_mode: Incomplete
93
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeNumberEntityDescription) -> None: ...
94
+ @property
95
+ def native_value(self) -> float | None: ...
96
+ @raise_translated_error
97
+ async def async_set_native_value(self, value: float) -> None: ...
@@ -1,4 +1,4 @@
1
- from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostChimeCoordinatorEntity as ReolinkHostChimeCoordinatorEntity, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
2
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable
@@ -29,7 +29,7 @@ class ReolinkHostSelectEntityDescription(SelectEntityDescription, ReolinkHostEnt
29
29
  class ReolinkChimeSelectEntityDescription(SelectEntityDescription, ReolinkChimeEntityDescription):
30
30
  get_options: list[str]
31
31
  method: Callable[[Chime, str], Any]
32
- value: Callable[[Chime], str]
32
+ value: Callable[[Chime], str | None]
33
33
 
34
34
  def _get_quick_reply_id(api: Host, ch: int, mess: str) -> int: ...
35
35
 
@@ -60,7 +60,15 @@ class ReolinkHostSelectEntity(ReolinkHostCoordinatorEntity, SelectEntity):
60
60
 
61
61
  class ReolinkChimeSelectEntity(ReolinkChimeCoordinatorEntity, SelectEntity):
62
62
  entity_description: ReolinkChimeSelectEntityDescription
63
- _log_error: bool
63
+ _attr_options: Incomplete
64
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeSelectEntityDescription) -> None: ...
65
+ @property
66
+ def current_option(self) -> str | None: ...
67
+ @raise_translated_error
68
+ async def async_select_option(self, option: str) -> None: ...
69
+
70
+ class ReolinkHostChimeSelectEntity(ReolinkHostChimeCoordinatorEntity, SelectEntity):
71
+ entity_description: ReolinkChimeSelectEntityDescription
64
72
  _attr_options: Incomplete
65
73
  def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeSelectEntityDescription) -> None: ...
66
74
  @property
@@ -1,4 +1,4 @@
1
- from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
2
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
3
3
  from _typeshed import Incomplete
4
4
  from dataclasses import dataclass
@@ -11,8 +11,11 @@ PARALLEL_UPDATES: int
11
11
 
12
12
  @dataclass(frozen=True)
13
13
  class ReolinkSirenEntityDescription(SirenEntityDescription, ReolinkChannelEntityDescription): ...
14
+ @dataclass(frozen=True)
15
+ class ReolinkHostSirenEntityDescription(SirenEntityDescription, ReolinkHostEntityDescription): ...
14
16
 
15
17
  SIREN_ENTITIES: Incomplete
18
+ HOST_SIREN_ENTITIES: Incomplete
16
19
 
17
20
  async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
18
21
 
@@ -24,3 +27,10 @@ class ReolinkSirenEntity(ReolinkChannelCoordinatorEntity, SirenEntity):
24
27
  async def async_turn_on(self, **kwargs: Any) -> None: ...
25
28
  @raise_translated_error
26
29
  async def async_turn_off(self, **kwargs: Any) -> None: ...
30
+
31
+ class ReolinkHostSirenEntity(ReolinkHostCoordinatorEntity, SirenEntity):
32
+ _attr_supported_features: Incomplete
33
+ entity_description: ReolinkHostSirenEntityDescription
34
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostSirenEntityDescription) -> None: ...
35
+ @raise_translated_error
36
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
@@ -1,5 +1,5 @@
1
1
  from .const import DOMAIN as DOMAIN
2
- from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostChimeCoordinatorEntity as ReolinkHostChimeCoordinatorEntity, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
3
3
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
4
4
  from _typeshed import Incomplete
5
5
  from collections.abc import Callable as Callable
@@ -64,3 +64,13 @@ class ReolinkChimeSwitchEntity(ReolinkChimeCoordinatorEntity, SwitchEntity):
64
64
  async def async_turn_on(self, **kwargs: Any) -> None: ...
65
65
  @raise_translated_error
66
66
  async def async_turn_off(self, **kwargs: Any) -> None: ...
67
+
68
+ class ReolinkHostChimeSwitchEntity(ReolinkHostChimeCoordinatorEntity, SwitchEntity):
69
+ entity_description: ReolinkChimeSwitchEntityDescription
70
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeSwitchEntityDescription) -> None: ...
71
+ @property
72
+ def is_on(self) -> bool | None: ...
73
+ @raise_translated_error
74
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
75
+ @raise_translated_error
76
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
@@ -1,5 +1,5 @@
1
1
  from . import RoborockConfigEntry as RoborockConfigEntry
2
- from .const import CONF_BASE_URL as CONF_BASE_URL, CONF_ENTRY_CODE as CONF_ENTRY_CODE, CONF_USER_DATA as CONF_USER_DATA, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES
2
+ from .const import CONF_BASE_URL as CONF_BASE_URL, CONF_ENTRY_CODE as CONF_ENTRY_CODE, CONF_SHOW_BACKGROUND as CONF_SHOW_BACKGROUND, CONF_USER_DATA as CONF_USER_DATA, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Mapping
5
5
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlowWithReload as OptionsFlowWithReload, SOURCE_REAUTH as SOURCE_REAUTH
@@ -5,6 +5,7 @@ DOMAIN: str
5
5
  CONF_ENTRY_CODE: str
6
6
  CONF_BASE_URL: str
7
7
  CONF_USER_DATA: str
8
+ CONF_SHOW_BACKGROUND: str
8
9
  DRAWABLES: str
9
10
  DEFAULT_DRAWABLES: Incomplete
10
11
  PLATFORMS: Incomplete
@@ -1,4 +1,4 @@
1
- from .const import A01_UPDATE_INTERVAL as A01_UPDATE_INTERVAL, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES, IMAGE_CACHE_INTERVAL as IMAGE_CACHE_INTERVAL, MAP_FILE_FORMAT as MAP_FILE_FORMAT, MAP_SCALE as MAP_SCALE, MAP_SLEEP as MAP_SLEEP, V1_CLOUD_IN_CLEANING_INTERVAL as V1_CLOUD_IN_CLEANING_INTERVAL, V1_CLOUD_NOT_CLEANING_INTERVAL as V1_CLOUD_NOT_CLEANING_INTERVAL, V1_LOCAL_IN_CLEANING_INTERVAL as V1_LOCAL_IN_CLEANING_INTERVAL, V1_LOCAL_NOT_CLEANING_INTERVAL as V1_LOCAL_NOT_CLEANING_INTERVAL
1
+ from .const import A01_UPDATE_INTERVAL as A01_UPDATE_INTERVAL, CONF_SHOW_BACKGROUND as CONF_SHOW_BACKGROUND, DEFAULT_DRAWABLES as DEFAULT_DRAWABLES, DOMAIN as DOMAIN, DRAWABLES as DRAWABLES, IMAGE_CACHE_INTERVAL as IMAGE_CACHE_INTERVAL, MAP_FILE_FORMAT as MAP_FILE_FORMAT, MAP_SCALE as MAP_SCALE, MAP_SLEEP as MAP_SLEEP, V1_CLOUD_IN_CLEANING_INTERVAL as V1_CLOUD_IN_CLEANING_INTERVAL, V1_CLOUD_NOT_CLEANING_INTERVAL as V1_CLOUD_NOT_CLEANING_INTERVAL, V1_LOCAL_IN_CLEANING_INTERVAL as V1_LOCAL_IN_CLEANING_INTERVAL, V1_LOCAL_NOT_CLEANING_INTERVAL as V1_LOCAL_NOT_CLEANING_INTERVAL
2
2
  from .models import RoborockA01HassDeviceInfo as RoborockA01HassDeviceInfo, RoborockHassDeviceInfo as RoborockHassDeviceInfo, RoborockMapInfo as RoborockMapInfo
3
3
  from .roborock_storage import RoborockMapStorage as RoborockMapStorage
4
4
  from _typeshed import Incomplete
@@ -0,0 +1,10 @@
1
+ from .coordinator import BRouteConfigEntry as BRouteConfigEntry, BRouteUpdateCoordinator as BRouteUpdateCoordinator
2
+ from _typeshed import Incomplete
3
+ from homeassistant.const import Platform as Platform
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+
6
+ _LOGGER: Incomplete
7
+ PLATFORMS: list[Platform]
8
+
9
+ async def async_setup_entry(hass: HomeAssistant, entry: BRouteConfigEntry) -> bool: ...
10
+ async def async_unload_entry(hass: HomeAssistant, entry: BRouteConfigEntry) -> bool: ...
@@ -0,0 +1,22 @@
1
+ from .const import DOMAIN as DOMAIN, ENTRY_TITLE as ENTRY_TITLE
2
+ from _typeshed import Incomplete
3
+ from homeassistant.components.usb import get_serial_by_id as get_serial_by_id, human_readable_device_name as human_readable_device_name
4
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
5
+ from homeassistant.const import CONF_DEVICE as CONF_DEVICE, CONF_ID as CONF_ID, CONF_PASSWORD as CONF_PASSWORD
6
+ from homeassistant.core import callback as callback
7
+ from homeassistant.helpers.service_info.usb import UsbServiceInfo as UsbServiceInfo
8
+ from serial.tools.list_ports_common import ListPortInfo as ListPortInfo
9
+ from typing import Any
10
+
11
+ _LOGGER: Incomplete
12
+
13
+ def _validate_input(device: str, id: str, password: str) -> None: ...
14
+ def _human_readable_device_name(port: UsbServiceInfo | ListPortInfo) -> str: ...
15
+
16
+ class BRouteConfigFlow(ConfigFlow, domain=DOMAIN):
17
+ VERSION: int
18
+ device: UsbServiceInfo | None
19
+ @callback
20
+ def _get_discovered_device_id_and_name(self, device_options: dict[str, ListPortInfo]) -> tuple[str | None, str | None]: ...
21
+ async def _get_usb_devices(self) -> dict[str, ListPortInfo]: ...
22
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -0,0 +1,9 @@
1
+ from _typeshed import Incomplete
2
+
3
+ DOMAIN: str
4
+ ENTRY_TITLE: str
5
+ DEFAULT_SCAN_INTERVAL: Incomplete
6
+ ATTR_API_INSTANTANEOUS_POWER: str
7
+ ATTR_API_TOTAL_CONSUMPTION: str
8
+ ATTR_API_INSTANTANEOUS_CURRENT_T_PHASE: str
9
+ ATTR_API_INSTANTANEOUS_CURRENT_R_PHASE: str
@@ -0,0 +1,26 @@
1
+ from .const import DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from dataclasses import dataclass
4
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
+ from homeassistant.const import CONF_DEVICE as CONF_DEVICE, CONF_ID as CONF_ID, CONF_PASSWORD as CONF_PASSWORD
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
8
+
9
+ _LOGGER: Incomplete
10
+
11
+ @dataclass
12
+ class BRouteData:
13
+ instantaneous_current_r_phase: float
14
+ instantaneous_current_t_phase: float
15
+ instantaneous_power: float
16
+ total_consumption: float
17
+ type BRouteConfigEntry = ConfigEntry[BRouteUpdateCoordinator]
18
+
19
+ class BRouteUpdateCoordinator(DataUpdateCoordinator[BRouteData]):
20
+ device: Incomplete
21
+ bid: Incomplete
22
+ api: Incomplete
23
+ def __init__(self, hass: HomeAssistant, entry: BRouteConfigEntry) -> None: ...
24
+ async def _async_setup(self) -> None: ...
25
+ def _get_data(self) -> BRouteData: ...
26
+ async def _async_update_data(self) -> BRouteData: ...
@@ -0,0 +1,30 @@
1
+ from . import BRouteConfigEntry as BRouteConfigEntry
2
+ from .const import ATTR_API_INSTANTANEOUS_CURRENT_R_PHASE as ATTR_API_INSTANTANEOUS_CURRENT_R_PHASE, ATTR_API_INSTANTANEOUS_CURRENT_T_PHASE as ATTR_API_INSTANTANEOUS_CURRENT_T_PHASE, ATTR_API_INSTANTANEOUS_POWER as ATTR_API_INSTANTANEOUS_POWER, ATTR_API_TOTAL_CONSUMPTION as ATTR_API_TOTAL_CONSUMPTION, DOMAIN as DOMAIN
3
+ from .coordinator import BRouteData as BRouteData, BRouteUpdateCoordinator as BRouteUpdateCoordinator
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
8
+ from homeassistant.const import UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfEnergy as UnitOfEnergy, UnitOfPower as UnitOfPower
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
11
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
+ from homeassistant.helpers.typing import StateType as StateType
13
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
14
+
15
+ @dataclass(frozen=True, kw_only=True)
16
+ class SensorEntityDescriptionWithValueAccessor(SensorEntityDescription):
17
+ value_accessor: Callable[[BRouteData], StateType]
18
+
19
+ SENSOR_DESCRIPTIONS: Incomplete
20
+
21
+ async def async_setup_entry(hass: HomeAssistant, entry: BRouteConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
22
+
23
+ class SmartMeterBRouteSensor(CoordinatorEntity[BRouteUpdateCoordinator], SensorEntity):
24
+ _attr_has_entity_name: bool
25
+ entity_description: SensorEntityDescriptionWithValueAccessor
26
+ _attr_unique_id: Incomplete
27
+ _attr_device_info: Incomplete
28
+ def __init__(self, coordinator: BRouteUpdateCoordinator, description: SensorEntityDescriptionWithValueAccessor) -> None: ...
29
+ @property
30
+ def native_value(self) -> StateType: ...
@@ -18,5 +18,4 @@ CONFIG_SCHEMA: Incomplete
18
18
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
19
19
  async def async_setup_entry(hass: HomeAssistant, entry: ScrapeConfigEntry) -> bool: ...
20
20
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
21
- async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
22
21
  async def async_remove_config_entry_device(hass: HomeAssistant, entry: ConfigEntry, device: DeviceEntry) -> bool: ...
@@ -35,4 +35,5 @@ OPTIONS_FLOW: Incomplete
35
35
  class ScrapeConfigFlowHandler(SchemaConfigFlowHandler, domain=DOMAIN):
36
36
  config_flow = CONFIG_FLOW
37
37
  options_flow = OPTIONS_FLOW
38
+ options_flow_reloads: bool
38
39
  def async_config_entry_title(self, options: Mapping[str, Any]) -> str: ...
@@ -2,13 +2,17 @@ from _typeshed import Incomplete
2
2
  from bs4 import BeautifulSoup
3
3
  from datetime import timedelta
4
4
  from homeassistant.components.rest import RestData as RestData
5
+ from homeassistant.components.rest.const import CONF_PAYLOAD_TEMPLATE as CONF_PAYLOAD_TEMPLATE
5
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
+ from homeassistant.const import CONF_RESOURCE_TEMPLATE as CONF_RESOURCE_TEMPLATE
6
8
  from homeassistant.core import HomeAssistant as HomeAssistant
7
9
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
10
+ from typing import Any
8
11
 
9
12
  _LOGGER: Incomplete
10
13
 
11
14
  class ScrapeCoordinator(DataUpdateCoordinator[BeautifulSoup]):
12
15
  _rest: Incomplete
13
- def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry | None, rest: RestData, update_interval: timedelta) -> None: ...
16
+ _rest_config: Incomplete
17
+ def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry | None, rest: RestData, rest_config: dict[str, Any], update_interval: timedelta) -> None: ...
14
18
  async def _async_update_data(self) -> BeautifulSoup: ...
@@ -47,6 +47,7 @@ class SensorDeviceClass(StrEnum):
47
47
  PM1 = 'pm1'
48
48
  PM10 = 'pm10'
49
49
  PM25 = 'pm25'
50
+ PM4 = 'pm4'
50
51
  POWER_FACTOR = 'power_factor'
51
52
  POWER = 'power'
52
53
  PRECIPITATION = 'precipitation'
@@ -42,6 +42,7 @@ CONF_IS_PH: str
42
42
  CONF_IS_PM1: str
43
43
  CONF_IS_PM10: str
44
44
  CONF_IS_PM25: str
45
+ CONF_IS_PM4: str
45
46
  CONF_IS_POWER: str
46
47
  CONF_IS_POWER_FACTOR: str
47
48
  CONF_IS_PRECIPITATION: str