homeassistant-stubs 2025.10.3__py3-none-any.whl → 2025.11.0b0__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 (458) hide show
  1. homeassistant-stubs/auth/mfa_modules/totp.pyi +2 -0
  2. homeassistant-stubs/components/acaia/coordinator.pyi +2 -0
  3. homeassistant-stubs/components/airly/config_flow.pyi +3 -0
  4. homeassistant-stubs/components/airnow/config_flow.pyi +1 -0
  5. homeassistant-stubs/components/airos/__init__.pyi +4 -2
  6. homeassistant-stubs/components/airos/config_flow.pyi +10 -1
  7. homeassistant-stubs/components/airos/coordinator.pyi +1 -1
  8. homeassistant-stubs/components/airthings/config_flow.pyi +1 -0
  9. homeassistant-stubs/components/airthings_ble/config_flow.pyi +4 -2
  10. homeassistant-stubs/components/airthings_ble/sensor.pyi +2 -1
  11. homeassistant-stubs/components/alarm_control_panel/__init__.pyi +0 -10
  12. homeassistant-stubs/components/alexa_devices/const.pyi +2 -0
  13. homeassistant-stubs/components/alexa_devices/sensor.pyi +12 -2
  14. homeassistant-stubs/components/androidtv_remote/config_flow.pyi +2 -0
  15. homeassistant-stubs/components/apple_tv/__init__.pyi +3 -3
  16. homeassistant-stubs/components/assist_pipeline/__init__.pyi +3 -3
  17. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +1 -1
  18. homeassistant-stubs/components/asuswrt/bridge.pyi +9 -9
  19. homeassistant-stubs/components/asuswrt/config_flow.pyi +1 -1
  20. homeassistant-stubs/components/asuswrt/device_tracker.pyi +0 -3
  21. homeassistant-stubs/components/asuswrt/helpers.pyi +2 -3
  22. homeassistant-stubs/components/asuswrt/router.pyi +1 -1
  23. homeassistant-stubs/components/backup/http.pyi +1 -0
  24. homeassistant-stubs/components/backup/manager.pyi +2 -1
  25. homeassistant-stubs/components/backup/util.pyi +2 -32
  26. homeassistant-stubs/components/bang_olufsen/media_player.pyi +5 -5
  27. homeassistant-stubs/components/bluetooth/__init__.pyi +2 -5
  28. homeassistant-stubs/components/bluetooth/api.pyi +2 -0
  29. homeassistant-stubs/components/bluetooth/manager.pyi +2 -0
  30. homeassistant-stubs/components/bryant_evolution/climate.pyi +2 -2
  31. homeassistant-stubs/components/calendar/trigger.pyi +1 -1
  32. homeassistant-stubs/components/camera/__init__.pyi +1 -9
  33. homeassistant-stubs/components/cert_expiry/config_flow.pyi +1 -1
  34. homeassistant-stubs/components/cert_expiry/errors.pyi +1 -0
  35. homeassistant-stubs/components/cert_expiry/helper.pyi +1 -1
  36. homeassistant-stubs/components/cloud/__init__.pyi +2 -1
  37. homeassistant-stubs/components/cloud/client.pyi +1 -1
  38. homeassistant-stubs/components/cloud/const.pyi +1 -1
  39. homeassistant-stubs/components/comelit/binary_sensor.pyi +1 -0
  40. homeassistant-stubs/components/comelit/cover.pyi +2 -2
  41. homeassistant-stubs/components/comelit/light.pyi +1 -1
  42. homeassistant-stubs/components/comelit/sensor.pyi +1 -0
  43. homeassistant-stubs/components/comelit/switch.pyi +1 -1
  44. homeassistant-stubs/components/comelit/utils.pyi +5 -1
  45. homeassistant-stubs/components/config/config_entries.pyi +5 -1
  46. homeassistant-stubs/components/cover/__init__.pyi +1 -11
  47. homeassistant-stubs/components/demo/valve.pyi +14 -5
  48. homeassistant-stubs/components/derivative/__init__.pyi +0 -1
  49. homeassistant-stubs/components/derivative/config_flow.pyi +1 -0
  50. homeassistant-stubs/components/derivative/sensor.pyi +2 -1
  51. homeassistant-stubs/components/device_automation/condition.pyi +7 -6
  52. homeassistant-stubs/components/devolo_home_control/binary_sensor.pyi +1 -1
  53. homeassistant-stubs/components/devolo_home_control/entity.pyi +1 -2
  54. homeassistant-stubs/components/devolo_home_control/sensor.pyi +1 -1
  55. homeassistant-stubs/components/devolo_home_control/subscriber.pyi +0 -1
  56. homeassistant-stubs/components/devolo_home_control/switch.pyi +1 -1
  57. homeassistant-stubs/components/dnsip/sensor.pyi +3 -3
  58. homeassistant-stubs/components/ecovacs/button.pyi +1 -1
  59. homeassistant-stubs/components/ecovacs/select.pyi +14 -2
  60. homeassistant-stubs/components/eheimdigital/sensor.pyi +1 -2
  61. homeassistant-stubs/components/enphase_envoy/sensor.pyi +4 -22
  62. homeassistant-stubs/components/eq3btsmart/sensor.pyi +1 -2
  63. homeassistant-stubs/components/esphome/__init__.pyi +1 -1
  64. homeassistant-stubs/components/esphome/assist_satellite.pyi +12 -2
  65. homeassistant-stubs/components/esphome/climate.pyi +1 -0
  66. homeassistant-stubs/components/esphome/config_flow.pyi +7 -4
  67. homeassistant-stubs/components/esphome/const.pyi +2 -0
  68. homeassistant-stubs/components/esphome/entry_data.pyi +1 -0
  69. homeassistant-stubs/components/esphome/manager.pyi +8 -3
  70. homeassistant-stubs/components/esphome/select.pyi +1 -1
  71. homeassistant-stubs/components/evohome/climate.pyi +1 -1
  72. homeassistant-stubs/components/fastdotcom/coordinator.pyi +2 -2
  73. homeassistant-stubs/components/fastdotcom/sensor.pyi +1 -1
  74. homeassistant-stubs/components/filter/__init__.pyi +0 -1
  75. homeassistant-stubs/components/filter/config_flow.pyi +1 -0
  76. homeassistant-stubs/components/firefly_iii/__init__.pyi +8 -0
  77. homeassistant-stubs/components/firefly_iii/config_flow.pyi +24 -0
  78. homeassistant-stubs/components/firefly_iii/const.pyi +3 -0
  79. homeassistant-stubs/components/firefly_iii/coordinator.pyi +30 -0
  80. homeassistant-stubs/components/firefly_iii/diagnostics.pyi +11 -0
  81. homeassistant-stubs/components/firefly_iii/entity.pyi +30 -0
  82. homeassistant-stubs/components/firefly_iii/sensor.pyi +66 -0
  83. homeassistant-stubs/components/fritz/coordinator.pyi +3 -0
  84. homeassistant-stubs/components/fritz/models.pyi +2 -2
  85. homeassistant-stubs/components/fritz/services.pyi +3 -0
  86. homeassistant-stubs/components/fritzbox/climate.pyi +2 -5
  87. homeassistant-stubs/components/generic_hygrostat/__init__.pyi +0 -1
  88. homeassistant-stubs/components/generic_hygrostat/config_flow.pyi +1 -0
  89. homeassistant-stubs/components/generic_thermostat/__init__.pyi +0 -1
  90. homeassistant-stubs/components/generic_thermostat/config_flow.pyi +1 -0
  91. homeassistant-stubs/components/github/__init__.pyi +12 -0
  92. homeassistant-stubs/components/github/config_flow.pyi +28 -0
  93. homeassistant-stubs/components/github/const.pyi +10 -0
  94. homeassistant-stubs/components/github/coordinator.pyi +26 -0
  95. homeassistant-stubs/components/github/diagnostics.pyi +7 -0
  96. homeassistant-stubs/components/github/sensor.pyi +37 -0
  97. homeassistant-stubs/components/go2rtc/__init__.pyi +1 -2
  98. homeassistant-stubs/components/google_assistant_sdk/config_flow.pyi +2 -1
  99. homeassistant-stubs/components/google_drive/api.pyi +1 -0
  100. homeassistant-stubs/components/google_sheets/services.pyi +9 -2
  101. homeassistant-stubs/components/group/__init__.pyi +0 -1
  102. homeassistant-stubs/components/group/config_flow.pyi +2 -0
  103. homeassistant-stubs/components/group/entity.pyi +3 -0
  104. homeassistant-stubs/components/group/light.pyi +1 -1
  105. homeassistant-stubs/components/group/util.pyi +1 -0
  106. homeassistant-stubs/components/group/valve.pyi +47 -0
  107. homeassistant-stubs/components/habitica/__init__.pyi +1 -0
  108. homeassistant-stubs/components/habitica/config_flow.pyi +11 -3
  109. homeassistant-stubs/components/habitica/const.pyi +1 -0
  110. homeassistant-stubs/components/habitica/coordinator.pyi +9 -3
  111. homeassistant-stubs/components/habitica/entity.pyi +15 -2
  112. homeassistant-stubs/components/habitica/image.pyi +6 -2
  113. homeassistant-stubs/components/habitica/notify.pyi +42 -0
  114. homeassistant-stubs/components/habitica/sensor.pyi +9 -4
  115. homeassistant-stubs/components/hardkernel/hardware.pyi +1 -1
  116. homeassistant-stubs/components/hardware/__init__.pyi +2 -10
  117. homeassistant-stubs/components/history_stats/__init__.pyi +0 -1
  118. homeassistant-stubs/components/history_stats/config_flow.pyi +1 -0
  119. homeassistant-stubs/components/home_connect/application_credentials.pyi +1 -0
  120. homeassistant-stubs/components/home_connect/const.pyi +1 -0
  121. homeassistant-stubs/components/home_connect/select.pyi +1 -1
  122. homeassistant-stubs/components/homeassistant_green/config_flow.pyi +4 -2
  123. homeassistant-stubs/components/homeassistant_green/hardware.pyi +1 -1
  124. homeassistant-stubs/components/homeassistant_hardware/const.pyi +1 -0
  125. homeassistant-stubs/components/homeassistant_hardware/helpers.pyi +12 -2
  126. homeassistant-stubs/components/homeassistant_hardware/switch.pyi +23 -0
  127. homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +13 -4
  128. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +4 -0
  129. homeassistant-stubs/components/homeassistant_sky_connect/hardware.pyi +1 -1
  130. homeassistant-stubs/components/homeassistant_sky_connect/switch.pyi +17 -0
  131. homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +5 -7
  132. homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +12 -4
  133. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
  134. homeassistant-stubs/components/homeassistant_yellow/hardware.pyi +1 -1
  135. homeassistant-stubs/components/homeassistant_yellow/switch.pyi +17 -0
  136. homeassistant-stubs/components/homeassistant_yellow/update.pyi +5 -7
  137. homeassistant-stubs/components/homee/__init__.pyi +1 -0
  138. homeassistant-stubs/components/homewizard/__init__.pyi +2 -0
  139. homeassistant-stubs/components/husqvarna_automower/button.pyi +1 -0
  140. homeassistant-stubs/components/husqvarna_automower/entity.pyi +8 -4
  141. homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +5 -0
  142. homeassistant-stubs/components/husqvarna_automower/select.pyi +1 -0
  143. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +2 -0
  144. homeassistant-stubs/components/husqvarna_automower/switch.pyi +2 -0
  145. homeassistant-stubs/components/imap/__init__.pyi +3 -1
  146. homeassistant-stubs/components/imap/coordinator.pyi +4 -1
  147. homeassistant-stubs/components/inels/__init__.pyi +18 -0
  148. homeassistant-stubs/components/inels/config_flow.pyi +13 -0
  149. homeassistant-stubs/components/inels/const.pyi +7 -0
  150. homeassistant-stubs/components/inels/entity.pyi +20 -0
  151. homeassistant-stubs/components/inels/switch.pyi +34 -0
  152. homeassistant-stubs/components/knx/climate.pyi +23 -11
  153. homeassistant-stubs/components/knx/const.pyi +14 -0
  154. homeassistant-stubs/components/knx/schema.pyi +1 -13
  155. homeassistant-stubs/components/knx/sensor.pyi +8 -9
  156. homeassistant-stubs/components/knx/storage/const.pyi +20 -0
  157. homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +13 -2
  158. homeassistant-stubs/components/lametric/config_flow.pyi +2 -0
  159. homeassistant-stubs/components/lcn/sensor.pyi +1 -1
  160. homeassistant-stubs/components/libre_hardware_monitor/__init__.pyi +3 -0
  161. homeassistant-stubs/components/libre_hardware_monitor/sensor.pyi +2 -3
  162. homeassistant-stubs/components/litterrobot/update.pyi +2 -0
  163. homeassistant-stubs/components/lock/__init__.pyi +1 -6
  164. homeassistant-stubs/components/london_underground/__init__.pyi +9 -0
  165. homeassistant-stubs/components/london_underground/config_flow.pyi +22 -0
  166. homeassistant-stubs/components/london_underground/const.pyi +1 -0
  167. homeassistant-stubs/components/london_underground/coordinator.pyi +3 -1
  168. homeassistant-stubs/components/london_underground/sensor.pyi +10 -5
  169. homeassistant-stubs/components/lunatone/__init__.pyi +12 -0
  170. homeassistant-stubs/components/lunatone/config_flow.pyi +16 -0
  171. homeassistant-stubs/components/lunatone/const.pyi +3 -0
  172. homeassistant-stubs/components/lunatone/coordinator.pyi +29 -0
  173. homeassistant-stubs/components/lunatone/light.pyi +43 -0
  174. homeassistant-stubs/components/matrix/__init__.pyi +10 -2
  175. homeassistant-stubs/components/matrix/const.pyi +5 -0
  176. homeassistant-stubs/components/matrix/services.pyi +3 -1
  177. homeassistant-stubs/components/matter/__init__.pyi +5 -0
  178. homeassistant-stubs/components/matter/binary_sensor.pyi +1 -1
  179. homeassistant-stubs/components/matter/button.pyi +1 -1
  180. homeassistant-stubs/components/matter/climate.pyi +7 -1
  181. homeassistant-stubs/components/matter/cover.pyi +6 -2
  182. homeassistant-stubs/components/matter/entity.pyi +4 -2
  183. homeassistant-stubs/components/matter/event.pyi +5 -1
  184. homeassistant-stubs/components/matter/fan.pyi +5 -1
  185. homeassistant-stubs/components/matter/light.pyi +6 -2
  186. homeassistant-stubs/components/matter/lock.pyi +5 -1
  187. homeassistant-stubs/components/matter/models.pyi +3 -3
  188. homeassistant-stubs/components/matter/number.pyi +1 -1
  189. homeassistant-stubs/components/matter/select.pyi +1 -1
  190. homeassistant-stubs/components/matter/sensor.pyi +4 -1
  191. homeassistant-stubs/components/matter/services.pyi +11 -0
  192. homeassistant-stubs/components/matter/switch.pyi +5 -2
  193. homeassistant-stubs/components/matter/update.pyi +4 -1
  194. homeassistant-stubs/components/matter/vacuum.pyi +6 -2
  195. homeassistant-stubs/components/matter/valve.pyi +6 -2
  196. homeassistant-stubs/components/matter/water_heater.pyi +8 -1
  197. homeassistant-stubs/components/mcp/__init__.pyi +1 -6
  198. homeassistant-stubs/components/mcp/config_flow.pyi +12 -2
  199. homeassistant-stubs/components/mcp/const.pyi +1 -0
  200. homeassistant-stubs/components/mcp/coordinator.pyi +1 -1
  201. homeassistant-stubs/components/mcp_server/__init__.pyi +1 -8
  202. homeassistant-stubs/components/mcp_server/http.pyi +23 -1
  203. homeassistant-stubs/components/mealie/config_flow.pyi +8 -1
  204. homeassistant-stubs/components/media_player/__init__.pyi +1 -9
  205. homeassistant-stubs/components/media_player/const.pyi +10 -69
  206. homeassistant-stubs/components/media_player/intent.pyi +7 -9
  207. homeassistant-stubs/components/metoffice/__init__.pyi +1 -0
  208. homeassistant-stubs/components/metoffice/helpers.pyi +2 -2
  209. homeassistant-stubs/components/metoffice/weather.pyi +11 -11
  210. homeassistant-stubs/components/min_max/__init__.pyi +0 -1
  211. homeassistant-stubs/components/min_max/config_flow.pyi +1 -0
  212. homeassistant-stubs/components/mold_indicator/__init__.pyi +0 -1
  213. homeassistant-stubs/components/mold_indicator/config_flow.pyi +1 -0
  214. homeassistant-stubs/components/mqtt/__init__.pyi +1 -4
  215. homeassistant-stubs/components/mqtt/config_flow.pyi +23 -4
  216. homeassistant-stubs/components/mqtt/const.pyi +7 -1
  217. homeassistant-stubs/components/mqtt/number.pyi +1 -5
  218. homeassistant-stubs/components/mqtt/siren.pyi +1 -9
  219. homeassistant-stubs/components/music_assistant/const.pyi +4 -0
  220. homeassistant-stubs/components/music_assistant/media_player.pyi +1 -1
  221. homeassistant-stubs/components/music_assistant/schemas.pyi +2 -2
  222. homeassistant-stubs/components/nasweb/sensor.pyi +0 -5
  223. homeassistant-stubs/components/nasweb/switch.pyi +1 -0
  224. homeassistant-stubs/components/nextdns/config_flow.pyi +6 -1
  225. homeassistant-stubs/components/number/const.pyi +2 -1
  226. homeassistant-stubs/components/onedrive/backup.pyi +2 -1
  227. homeassistant-stubs/components/onewire/binary_sensor.pyi +5 -12
  228. homeassistant-stubs/components/onewire/const.pyi +0 -2
  229. homeassistant-stubs/components/onewire/diagnostics.pyi +2 -0
  230. homeassistant-stubs/components/onewire/entity.pyi +6 -14
  231. homeassistant-stubs/components/onewire/onewirehub.pyi +5 -5
  232. homeassistant-stubs/components/onewire/select.pyi +3 -10
  233. homeassistant-stubs/components/onewire/sensor.pyi +5 -7
  234. homeassistant-stubs/components/onewire/switch.pyi +7 -14
  235. homeassistant-stubs/components/onkyo/receiver.pyi +1 -1
  236. homeassistant-stubs/components/open_router/entity.pyi +4 -1
  237. homeassistant-stubs/components/openai_conversation/ai_task.pyi +1 -1
  238. homeassistant-stubs/components/openai_conversation/config_flow.pyi +1 -1
  239. homeassistant-stubs/components/openai_conversation/const.pyi +2 -0
  240. homeassistant-stubs/components/openai_conversation/entity.pyi +1 -1
  241. homeassistant-stubs/components/opower/coordinator.pyi +1 -0
  242. homeassistant-stubs/components/ping/__init__.pyi +1 -0
  243. homeassistant-stubs/components/ping/config_flow.pyi +1 -0
  244. homeassistant-stubs/components/ping/device_tracker.pyi +3 -2
  245. homeassistant-stubs/components/ping/entity.pyi +1 -0
  246. homeassistant-stubs/components/portainer/button.pyi +29 -0
  247. homeassistant-stubs/components/portainer/config_flow.pyi +4 -0
  248. homeassistant-stubs/components/portainer/const.pyi +1 -0
  249. homeassistant-stubs/components/portainer/coordinator.pyi +11 -2
  250. homeassistant-stubs/components/portainer/diagnostics.pyi +12 -0
  251. homeassistant-stubs/components/portainer/entity.pyi +2 -0
  252. homeassistant-stubs/components/portainer/sensor.pyi +41 -0
  253. homeassistant-stubs/components/portainer/switch.pyi +35 -0
  254. homeassistant-stubs/components/qbus/entity.pyi +1 -3
  255. homeassistant-stubs/components/raspberry_pi/hardware.pyi +1 -1
  256. homeassistant-stubs/components/recorder/const.pyi +1 -1
  257. homeassistant-stubs/components/recorder/core.pyi +3 -3
  258. homeassistant-stubs/components/recorder/db_schema.pyi +3 -10
  259. homeassistant-stubs/components/recorder/entity_registry.pyi +1 -0
  260. homeassistant-stubs/components/recorder/history/__init__.pyi +2 -2
  261. homeassistant-stubs/components/recorder/migration.pyi +4 -1
  262. homeassistant-stubs/components/recorder/models/statistics.pyi +1 -0
  263. homeassistant-stubs/components/recorder/statistics.pyi +17 -12
  264. homeassistant-stubs/components/recorder/table_managers/states_meta.pyi +0 -1
  265. homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +4 -2
  266. homeassistant-stubs/components/recorder/tasks.pyi +1 -0
  267. homeassistant-stubs/components/recorder/util.pyi +1 -1
  268. homeassistant-stubs/components/recorder/websocket_api.pyi +6 -4
  269. homeassistant-stubs/components/renault/sensor.pyi +1 -1
  270. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  271. homeassistant-stubs/components/reolink/binary_sensor.pyi +15 -0
  272. homeassistant-stubs/components/reolink/siren.pyi +2 -0
  273. homeassistant-stubs/components/reolink/switch.pyi +25 -7
  274. homeassistant-stubs/components/roborock/__init__.pyi +1 -1
  275. homeassistant-stubs/components/roborock/config_flow.pyi +1 -1
  276. homeassistant-stubs/components/roborock/coordinator.pyi +2 -1
  277. homeassistant-stubs/components/roborock/entity.pyi +1 -1
  278. homeassistant-stubs/components/roborock/models.pyi +1 -1
  279. homeassistant-stubs/components/scrape/coordinator.pyi +1 -2
  280. homeassistant-stubs/components/sensibo/__init__.pyi +6 -0
  281. homeassistant-stubs/components/sensibo/climate.pyi +3 -26
  282. homeassistant-stubs/components/sensibo/services.pyi +31 -0
  283. homeassistant-stubs/components/sensor/const.pyi +2 -1
  284. homeassistant-stubs/components/sensor/device_condition.pyi +1 -0
  285. homeassistant-stubs/components/sensor/device_trigger.pyi +1 -0
  286. homeassistant-stubs/components/sensor/recorder.pyi +6 -3
  287. homeassistant-stubs/components/sfr_box/__init__.pyi +4 -6
  288. homeassistant-stubs/components/sfr_box/binary_sensor.pyi +5 -14
  289. homeassistant-stubs/components/sfr_box/button.pyi +4 -9
  290. homeassistant-stubs/components/sfr_box/config_flow.pyi +2 -1
  291. homeassistant-stubs/components/sfr_box/coordinator.pyi +13 -2
  292. homeassistant-stubs/components/sfr_box/diagnostics.pyi +2 -4
  293. homeassistant-stubs/components/sfr_box/entity.pyi +18 -0
  294. homeassistant-stubs/components/sfr_box/sensor.pyi +4 -13
  295. homeassistant-stubs/components/shelly/__init__.pyi +2 -2
  296. homeassistant-stubs/components/shelly/binary_sensor.pyi +6 -2
  297. homeassistant-stubs/components/shelly/button.pyi +26 -16
  298. homeassistant-stubs/components/shelly/climate.pyi +61 -7
  299. homeassistant-stubs/components/shelly/const.pyi +15 -3
  300. homeassistant-stubs/components/shelly/cover.pyi +31 -10
  301. homeassistant-stubs/components/shelly/entity.pyi +5 -4
  302. homeassistant-stubs/components/shelly/event.pyi +4 -0
  303. homeassistant-stubs/components/shelly/light.pyi +23 -7
  304. homeassistant-stubs/components/shelly/number.pyi +11 -2
  305. homeassistant-stubs/components/shelly/repairs.pyi +2 -2
  306. homeassistant-stubs/components/shelly/select.pyi +4 -1
  307. homeassistant-stubs/components/shelly/sensor.pyi +8 -7
  308. homeassistant-stubs/components/shelly/switch.pyi +7 -4
  309. homeassistant-stubs/components/shelly/text.pyi +4 -1
  310. homeassistant-stubs/components/shelly/update.pyi +4 -0
  311. homeassistant-stubs/components/shelly/utils.pyi +10 -5
  312. homeassistant-stubs/components/shelly/valve.pyi +34 -5
  313. homeassistant-stubs/components/simplisafe/config_flow.pyi +2 -0
  314. homeassistant-stubs/components/sleep_as_android/event.pyi +1 -0
  315. homeassistant-stubs/components/sma/__init__.pyi +15 -0
  316. homeassistant-stubs/components/sma/config_flow.pyi +27 -0
  317. homeassistant-stubs/components/sma/const.pyi +11 -0
  318. homeassistant-stubs/components/sma/coordinator.pyi +28 -0
  319. homeassistant-stubs/components/sma/diagnostics.pyi +10 -0
  320. homeassistant-stubs/components/sma/sensor.pyi +33 -0
  321. homeassistant-stubs/components/sql/__init__.pyi +2 -4
  322. homeassistant-stubs/components/sql/sensor.pyi +6 -13
  323. homeassistant-stubs/components/sql/services.pyi +17 -0
  324. homeassistant-stubs/components/sql/util.pyi +16 -3
  325. homeassistant-stubs/components/squeezebox/__init__.pyi +4 -1
  326. homeassistant-stubs/components/squeezebox/browse_media.pyi +4 -3
  327. homeassistant-stubs/components/squeezebox/button.pyi +1 -0
  328. homeassistant-stubs/components/squeezebox/const.pyi +0 -1
  329. homeassistant-stubs/components/squeezebox/media_player.pyi +7 -2
  330. homeassistant-stubs/components/squeezebox/switch.pyi +1 -0
  331. homeassistant-stubs/components/squeezebox/util.pyi +6 -0
  332. homeassistant-stubs/components/suez_water/coordinator.pyi +2 -1
  333. homeassistant-stubs/components/sun/condition.pyi +10 -5
  334. homeassistant-stubs/components/switch_as_x/__init__.pyi +0 -1
  335. homeassistant-stubs/components/switch_as_x/config_flow.pyi +1 -0
  336. homeassistant-stubs/components/switchbot_cloud/climate.pyi +2 -0
  337. homeassistant-stubs/components/switchbot_cloud/lock.pyi +7 -2
  338. homeassistant-stubs/components/switchbot_cloud/sensor.pyi +25 -2
  339. homeassistant-stubs/components/switchbot_cloud/switch.pyi +13 -1
  340. homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +4 -4
  341. homeassistant-stubs/components/switcher_kis/button.pyi +5 -6
  342. homeassistant-stubs/components/switcher_kis/climate.pyi +3 -3
  343. homeassistant-stubs/components/switcher_kis/const.pyi +1 -0
  344. homeassistant-stubs/components/switcher_kis/cover.pyi +4 -3
  345. homeassistant-stubs/components/switcher_kis/light.pyi +3 -2
  346. homeassistant-stubs/components/switcher_kis/sensor.pyi +4 -2
  347. homeassistant-stubs/components/switcher_kis/switch.pyi +3 -5
  348. homeassistant-stubs/components/systemmonitor/__init__.pyi +0 -1
  349. homeassistant-stubs/components/systemmonitor/config_flow.pyi +1 -0
  350. homeassistant-stubs/components/systemmonitor/coordinator.pyi +1 -0
  351. homeassistant-stubs/components/systemmonitor/sensor.pyi +3 -1
  352. homeassistant-stubs/components/telegram_bot/__init__.pyi +2 -1
  353. homeassistant-stubs/components/telegram_bot/bot.pyi +10 -5
  354. homeassistant-stubs/components/telegram_bot/const.pyi +9 -0
  355. homeassistant-stubs/components/telegram_bot/diagnostics.pyi +11 -0
  356. homeassistant-stubs/components/telegram_bot/entity.pyi +16 -0
  357. homeassistant-stubs/components/telegram_bot/event.pyi +18 -0
  358. homeassistant-stubs/components/telegram_bot/notify.pyi +6 -10
  359. homeassistant-stubs/components/tibber/coordinator.pyi +1 -0
  360. homeassistant-stubs/components/tod/__init__.pyi +0 -1
  361. homeassistant-stubs/components/tod/config_flow.pyi +1 -0
  362. homeassistant-stubs/components/tolo/__init__.pyi +3 -5
  363. homeassistant-stubs/components/tolo/binary_sensor.pyi +4 -6
  364. homeassistant-stubs/components/tolo/button.pyi +3 -5
  365. homeassistant-stubs/components/tolo/climate.pyi +3 -5
  366. homeassistant-stubs/components/tolo/coordinator.pyi +3 -2
  367. homeassistant-stubs/components/tolo/entity.pyi +2 -3
  368. homeassistant-stubs/components/tolo/fan.pyi +3 -5
  369. homeassistant-stubs/components/tolo/light.pyi +3 -5
  370. homeassistant-stubs/components/tolo/number.pyi +3 -5
  371. homeassistant-stubs/components/tolo/select.pyi +4 -5
  372. homeassistant-stubs/components/tolo/sensor.pyi +3 -5
  373. homeassistant-stubs/components/tolo/switch.pyi +3 -5
  374. homeassistant-stubs/components/trend/__init__.pyi +0 -1
  375. homeassistant-stubs/components/trend/config_flow.pyi +1 -0
  376. homeassistant-stubs/components/tts/__init__.pyi +2 -3
  377. homeassistant-stubs/components/unifi/light.pyi +44 -0
  378. homeassistant-stubs/components/uptimerobot/binary_sensor.pyi +2 -0
  379. homeassistant-stubs/components/uptimerobot/sensor.pyi +2 -0
  380. homeassistant-stubs/components/uptimerobot/switch.pyi +2 -0
  381. homeassistant-stubs/components/uptimerobot/utils.pyi +5 -0
  382. homeassistant-stubs/components/usb/__init__.pyi +2 -0
  383. homeassistant-stubs/components/usb/utils.pyi +7 -0
  384. homeassistant-stubs/components/vacuum/__init__.pyi +0 -15
  385. homeassistant-stubs/components/vivotek/__init__.pyi +0 -0
  386. homeassistant-stubs/components/vivotek/camera.pyi +35 -0
  387. homeassistant-stubs/components/vodafone_station/__init__.pyi +3 -1
  388. homeassistant-stubs/components/vodafone_station/config_flow.pyi +3 -2
  389. homeassistant-stubs/components/vodafone_station/const.pyi +3 -0
  390. homeassistant-stubs/components/vodafone_station/coordinator.pyi +4 -4
  391. homeassistant-stubs/components/volvo/__init__.pyi +2 -0
  392. homeassistant-stubs/components/volvo/binary_sensor.pyi +1 -3
  393. homeassistant-stubs/components/volvo/button.pyi +27 -0
  394. homeassistant-stubs/components/volvo/coordinator.pyi +12 -14
  395. homeassistant-stubs/components/volvo/device_tracker.pyi +23 -0
  396. homeassistant-stubs/components/volvo/diagnostics.pyi +12 -0
  397. homeassistant-stubs/components/volvo/entity.pyi +9 -5
  398. homeassistant-stubs/components/volvo/sensor.pyi +9 -8
  399. homeassistant-stubs/components/waqi/__init__.pyi +8 -0
  400. homeassistant-stubs/components/waqi/config_flow.pyi +14 -9
  401. homeassistant-stubs/components/waqi/const.pyi +1 -1
  402. homeassistant-stubs/components/waqi/coordinator.pyi +5 -4
  403. homeassistant-stubs/components/webostv/media_player.pyi +3 -0
  404. homeassistant-stubs/components/websocket_api/commands.pyi +2 -0
  405. homeassistant-stubs/components/wled/select.pyi +6 -3
  406. homeassistant-stubs/components/worldclock/__init__.pyi +0 -1
  407. homeassistant-stubs/components/worldclock/config_flow.pyi +1 -0
  408. homeassistant-stubs/components/zeroconf/__init__.pyi +3 -1
  409. homeassistant-stubs/components/zeroconf/discovery.pyi +8 -1
  410. homeassistant-stubs/components/zeroconf/repairs.pyi +13 -0
  411. homeassistant-stubs/components/zone/condition.pyi +10 -4
  412. homeassistant-stubs/components/zwave_js/config_flow.pyi +1 -0
  413. homeassistant-stubs/components/zwave_js/device_trigger.pyi +1 -1
  414. homeassistant-stubs/components/zwave_js/triggers/event.pyi +6 -8
  415. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +6 -6
  416. homeassistant-stubs/config_entries.pyi +9 -0
  417. homeassistant-stubs/const.pyi +4 -21
  418. homeassistant-stubs/core.pyi +1 -7
  419. homeassistant-stubs/data_entry_flow.pyi +2 -0
  420. homeassistant-stubs/helpers/automation.pyi +6 -0
  421. homeassistant-stubs/helpers/condition.pyi +15 -5
  422. homeassistant-stubs/helpers/debounce.pyi +6 -1
  423. homeassistant-stubs/helpers/entity_platform.pyi +1 -1
  424. homeassistant-stubs/helpers/event.pyi +1 -1
  425. homeassistant-stubs/helpers/instance_id.pyi +1 -0
  426. homeassistant-stubs/helpers/llm.pyi +6 -1
  427. homeassistant-stubs/helpers/selector.pyi +5 -4
  428. homeassistant-stubs/helpers/service.pyi +4 -4
  429. homeassistant-stubs/helpers/template/__init__.pyi +0 -5
  430. homeassistant-stubs/helpers/trigger.pyi +18 -5
  431. homeassistant-stubs/helpers/update_coordinator.pyi +1 -0
  432. homeassistant-stubs/runner.pyi +1 -1
  433. homeassistant-stubs/util/async_iterator.pyi +33 -0
  434. homeassistant-stubs/util/unit_conversion.pyi +15 -0
  435. {homeassistant_stubs-2025.10.3.dist-info → homeassistant_stubs-2025.11.0b0.dist-info}/METADATA +2 -2
  436. {homeassistant_stubs-2025.10.3.dist-info → homeassistant_stubs-2025.11.0b0.dist-info}/RECORD +438 -402
  437. homeassistant-stubs/components/elevenlabs/__init__.pyi +0 -22
  438. homeassistant-stubs/components/elevenlabs/config_flow.pyi +0 -33
  439. homeassistant-stubs/components/elevenlabs/const.pyi +0 -14
  440. homeassistant-stubs/components/elevenlabs/tts.pyi +0 -36
  441. homeassistant-stubs/components/neato/__init__.pyi +0 -15
  442. homeassistant-stubs/components/neato/api.pyi +0 -17
  443. homeassistant-stubs/components/neato/application_credentials.pyi +0 -6
  444. homeassistant-stubs/components/neato/button.pyi +0 -18
  445. homeassistant-stubs/components/neato/camera.pyi +0 -34
  446. homeassistant-stubs/components/neato/config_flow.pyi +0 -15
  447. homeassistant-stubs/components/neato/const.pyi +0 -13
  448. homeassistant-stubs/components/neato/entity.pyi +0 -11
  449. homeassistant-stubs/components/neato/hub.pyi +0 -17
  450. homeassistant-stubs/components/neato/sensor.pyi +0 -30
  451. homeassistant-stubs/components/neato/switch.pyi +0 -34
  452. homeassistant-stubs/components/neato/vacuum.pyi +0 -70
  453. homeassistant-stubs/components/recorder/history/legacy.pyi +0 -48
  454. homeassistant-stubs/components/recorder/history/modern.pyi +0 -39
  455. homeassistant-stubs/components/recorder/models/legacy.pyi +0 -45
  456. homeassistant-stubs/components/sfr_box/models.pyi +0 -12
  457. {homeassistant_stubs-2025.10.3.dist-info → homeassistant_stubs-2025.11.0b0.dist-info}/WHEEL +0 -0
  458. {homeassistant_stubs-2025.10.3.dist-info → homeassistant_stubs-2025.11.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -41,6 +41,7 @@ class UpdateStatisticsMetadataTask(RecorderTask):
41
41
  on_done: Callable[[], None] | None
42
42
  statistic_id: str
43
43
  new_statistic_id: str | None | UndefinedType
44
+ new_unit_class: str | None | UndefinedType
44
45
  new_unit_of_measurement: str | None | UndefinedType
45
46
  def run(self, instance: Recorder) -> None: ...
46
47
 
@@ -48,7 +48,7 @@ FIRST_POSSIBLE_SUNDAY: int
48
48
  SUNDAY_WEEKDAY: int
49
49
  DAYS_IN_WEEK: int
50
50
 
51
- def execute(qry: Query, to_native: bool = False, validate_entity_ids: bool = True) -> list[Row]: ...
51
+ def execute(qry: Query) -> list[Row]: ...
52
52
  def execute_stmt_lambda_element(session: Session, stmt: StatementLambdaElement, start_time: datetime | None = None, end_time: datetime | None = None, yield_per: int = ..., orm_rows: bool = True) -> Sequence[Row] | Result: ...
53
53
  def validate_or_move_away_sqlite_database(dburl: str) -> bool: ...
54
54
  def dburl_to_path(dburl: str) -> str: ...
@@ -1,5 +1,5 @@
1
1
  from .models import StatisticMeanType as StatisticMeanType, StatisticPeriod as StatisticPeriod
2
- from .statistics import STATISTIC_UNIT_TO_UNIT_CONVERTER as STATISTIC_UNIT_TO_UNIT_CONVERTER, async_add_external_statistics as async_add_external_statistics, async_change_statistics_unit as async_change_statistics_unit, async_import_statistics as async_import_statistics, async_list_statistic_ids as async_list_statistic_ids, list_statistic_ids as list_statistic_ids, statistic_during_period as statistic_during_period, statistics_during_period as statistics_during_period, update_statistics_issues as update_statistics_issues, validate_statistics as validate_statistics
2
+ from .statistics import UNIT_CLASS_TO_UNIT_CONVERTER as UNIT_CLASS_TO_UNIT_CONVERTER, async_add_external_statistics as async_add_external_statistics, async_change_statistics_unit as async_change_statistics_unit, async_import_statistics as async_import_statistics, async_list_statistic_ids as async_list_statistic_ids, async_update_statistics_metadata as async_update_statistics_metadata, list_statistic_ids as list_statistic_ids, statistic_during_period as statistic_during_period, statistics_during_period as statistics_during_period, update_statistics_issues as update_statistics_issues, validate_statistics as validate_statistics
3
3
  from .util import PERIOD_SCHEMA as PERIOD_SCHEMA, get_instance as get_instance, resolve_period as resolve_period
4
4
  from _typeshed import Incomplete
5
5
  from datetime import datetime as dt
@@ -8,9 +8,11 @@ from homeassistant.components.websocket_api import messages as messages
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback, valid_entity_id as valid_entity_id
9
9
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
10
  from homeassistant.helpers.json import json_bytes as json_bytes
11
- from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
11
+ from homeassistant.helpers.typing import UNDEFINED as UNDEFINED
12
+ from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, CarbonMonoxideConcentrationConverter as CarbonMonoxideConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, TemperatureDeltaConverter as TemperatureDeltaConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
12
13
  from typing import Any, Literal
13
14
 
15
+ _LOGGER: Incomplete
14
16
  CLEAR_STATISTICS_TIME_OUT: int
15
17
  UPDATE_STATISTICS_METADATA_TIME_OUT: int
16
18
  UNIT_SCHEMA: Incomplete
@@ -41,8 +43,8 @@ async def ws_get_statistics_metadata(hass: HomeAssistant, connection: websocket_
41
43
  @websocket_api.async_response
42
44
  async def ws_update_statistics_metadata(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
43
45
  @websocket_api.require_admin
44
- @callback
45
- def ws_change_statistics_unit(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
46
+ @websocket_api.async_response
47
+ async def ws_change_statistics_unit(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
46
48
  @websocket_api.require_admin
47
49
  @websocket_api.async_response
48
50
  async def ws_adjust_sum_statistics(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
@@ -6,7 +6,7 @@ from collections.abc import Callable as Callable
6
6
  from dataclasses import dataclass
7
7
  from datetime import datetime
8
8
  from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
9
- from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfEnergy as UnitOfEnergy, UnitOfLength as UnitOfLength, UnitOfPower as UnitOfPower, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
9
+ from homeassistant.const import PERCENTAGE as PERCENTAGE, UnitOfEnergy as UnitOfEnergy, UnitOfLength as UnitOfLength, UnitOfPower as UnitOfPower, UnitOfPressure as UnitOfPressure, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant
11
11
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
12
  from homeassistant.helpers.typing import StateType as StateType
@@ -11,7 +11,7 @@ from homeassistant.const import CONF_PORT as CONF_PORT, EVENT_HOMEASSISTANT_STOP
11
11
  from homeassistant.core import HomeAssistant as HomeAssistant
12
12
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
13
13
  from homeassistant.helpers import device_registry as dr
14
- from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, format_mac as format_mac
14
+ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC
15
15
  from homeassistant.helpers.event import async_call_later as async_call_later
16
16
  from homeassistant.helpers.typing import ConfigType as ConfigType
17
17
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
@@ -22,9 +22,15 @@ class ReolinkSmartAIBinarySensorEntityDescription(BinarySensorEntityDescription,
22
22
  value: Callable[[Host, int, int], bool]
23
23
  supported: Callable[[Host, int, int], bool] = ...
24
24
 
25
+ @dataclass(frozen=True, kw_only=True)
26
+ class ReolinkIndexBinarySensorEntityDescription(BinarySensorEntityDescription, ReolinkEntityDescription):
27
+ value: Callable[[Host, int, int], bool | None]
28
+ supported: Callable[[Host, int, int], bool] = ...
29
+
25
30
  BINARY_PUSH_SENSORS: Incomplete
26
31
  BINARY_SENSORS: Incomplete
27
32
  BINARY_SMART_AI_SENSORS: Incomplete
33
+ BINARY_IO_INPUT_SENSOR: Incomplete
28
34
 
29
35
  async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
30
36
 
@@ -47,3 +53,12 @@ class ReolinkSmartAIBinarySensorEntity(ReolinkChannelCoordinatorEntity, BinarySe
47
53
  def __init__(self, reolink_data: ReolinkData, channel: int, location: int, entity_description: ReolinkSmartAIBinarySensorEntityDescription) -> None: ...
48
54
  @property
49
55
  def is_on(self) -> bool: ...
56
+
57
+ class ReolinkIndexBinarySensorEntity(ReolinkChannelCoordinatorEntity, BinarySensorEntity):
58
+ entity_description: ReolinkIndexBinarySensorEntityDescription
59
+ _attr_unique_id: Incomplete
60
+ _index: Incomplete
61
+ _attr_translation_placeholders: Incomplete
62
+ def __init__(self, reolink_data: ReolinkData, channel: int, index: int, entity_description: ReolinkIndexBinarySensorEntityDescription) -> None: ...
63
+ @property
64
+ def is_on(self) -> bool | None: ...
@@ -23,6 +23,8 @@ class ReolinkSirenEntity(ReolinkChannelCoordinatorEntity, SirenEntity):
23
23
  _attr_supported_features: Incomplete
24
24
  entity_description: ReolinkSirenEntityDescription
25
25
  def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkSirenEntityDescription) -> None: ...
26
+ @property
27
+ def is_on(self) -> bool | None: ...
26
28
  @raise_translated_error
27
29
  async def async_turn_on(self, **kwargs: Any) -> None: ...
28
30
  @raise_translated_error
@@ -1,4 +1,3 @@
1
- from .const import DOMAIN as DOMAIN
2
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
3
2
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData, raise_translated_error as raise_translated_error
4
3
  from _typeshed import Incomplete
@@ -19,7 +18,7 @@ class ReolinkSwitchEntityDescription(SwitchEntityDescription, ReolinkChannelEnti
19
18
  value: Callable[[Host, int], bool | None]
20
19
 
21
20
  @dataclass(frozen=True, kw_only=True)
22
- class ReolinkNVRSwitchEntityDescription(SwitchEntityDescription, ReolinkHostEntityDescription):
21
+ class ReolinkHostSwitchEntityDescription(SwitchEntityDescription, ReolinkHostEntityDescription):
23
22
  method: Callable[[Host, bool], Any]
24
23
  value: Callable[[Host], bool]
25
24
 
@@ -28,10 +27,16 @@ class ReolinkChimeSwitchEntityDescription(SwitchEntityDescription, ReolinkChimeE
28
27
  method: Callable[[Chime, bool], Any]
29
28
  value: Callable[[Chime], bool | None]
30
29
 
30
+ @dataclass(frozen=True, kw_only=True)
31
+ class ReolinkSwitchIndexEntityDescription(SwitchEntityDescription, ReolinkChannelEntityDescription):
32
+ method: Callable[[Host, int, int, bool], Any]
33
+ value: Callable[[Host, int, int], bool | None]
34
+ placeholder: Callable[[Host, int, int], str]
35
+
31
36
  SWITCH_ENTITIES: Incomplete
32
- NVR_SWITCH_ENTITIES: Incomplete
37
+ HOST_SWITCH_ENTITIES: Incomplete
33
38
  CHIME_SWITCH_ENTITIES: Incomplete
34
- DEPRECATED_NVR_SWITCHES: Incomplete
39
+ RULE_SWITCH_ENTITY: Incomplete
35
40
 
36
41
  async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
37
42
 
@@ -45,9 +50,9 @@ class ReolinkSwitchEntity(ReolinkChannelCoordinatorEntity, SwitchEntity):
45
50
  @raise_translated_error
46
51
  async def async_turn_off(self, **kwargs: Any) -> None: ...
47
52
 
48
- class ReolinkNVRSwitchEntity(ReolinkHostCoordinatorEntity, SwitchEntity):
49
- entity_description: ReolinkNVRSwitchEntityDescription
50
- def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkNVRSwitchEntityDescription) -> None: ...
53
+ class ReolinkHostSwitchEntity(ReolinkHostCoordinatorEntity, SwitchEntity):
54
+ entity_description: ReolinkHostSwitchEntityDescription
55
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostSwitchEntityDescription) -> None: ...
51
56
  @property
52
57
  def is_on(self) -> bool: ...
53
58
  @raise_translated_error
@@ -74,3 +79,16 @@ class ReolinkHostChimeSwitchEntity(ReolinkHostChimeCoordinatorEntity, SwitchEnti
74
79
  async def async_turn_on(self, **kwargs: Any) -> None: ...
75
80
  @raise_translated_error
76
81
  async def async_turn_off(self, **kwargs: Any) -> None: ...
82
+
83
+ class ReolinkIndexSwitchEntity(ReolinkChannelCoordinatorEntity, SwitchEntity):
84
+ entity_description: ReolinkSwitchIndexEntityDescription
85
+ _index: Incomplete
86
+ _attr_translation_placeholders: Incomplete
87
+ _attr_unique_id: Incomplete
88
+ def __init__(self, reolink_data: ReolinkData, channel: int, index: int, entity_description: ReolinkSwitchIndexEntityDescription) -> None: ...
89
+ @property
90
+ def is_on(self) -> bool | None: ...
91
+ @raise_translated_error
92
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
93
+ @raise_translated_error
94
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
@@ -8,7 +8,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant
8
8
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
9
9
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
10
10
  from roborock import HomeDataRoom as HomeDataRoom
11
- from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, UserData
11
+ from roborock.data import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, UserData
12
12
  from roborock.web_api import RoborockApiClient
13
13
  from typing import Any
14
14
 
@@ -7,7 +7,7 @@ from homeassistant.const import CONF_USERNAME as CONF_USERNAME
7
7
  from homeassistant.core import callback as callback
8
8
  from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
9
9
  from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo as DhcpServiceInfo
10
- from roborock.containers import UserData as UserData
10
+ from roborock.data import UserData as UserData
11
11
  from roborock.web_api import RoborockApiClient
12
12
  from typing import Any
13
13
 
@@ -8,12 +8,13 @@ from homeassistant.const import ATTR_CONNECTIONS as ATTR_CONNECTIONS
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
10
10
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
11
+ from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
11
12
  from homeassistant.helpers.typing import StateType as StateType
12
13
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
13
14
  from homeassistant.util import slugify as slugify
14
15
  from propcache.api import cached_property
15
16
  from roborock import HomeDataRoom as HomeDataRoom
16
- from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, HomeDataScene as HomeDataScene, NetworkInfo as NetworkInfo, UserData as UserData
17
+ from roborock.data import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, HomeDataScene as HomeDataScene, NetworkInfo as NetworkInfo, UserData as UserData
17
18
  from roborock.roborock_message import RoborockDyadDataProtocol, RoborockZeoProtocol
18
19
  from roborock.roborock_typing import DeviceProp
19
20
  from roborock.version_1_apis.roborock_local_client_v1 import RoborockLocalClientV1
@@ -7,7 +7,7 @@ from homeassistant.helpers.entity import Entity as Entity
7
7
  from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
8
8
  from roborock.api import RoborockClient as RoborockClient
9
9
  from roborock.command_cache import CacheableAttribute as CacheableAttribute
10
- from roborock.containers import Consumable as Consumable, Status
10
+ from roborock.data import Consumable as Consumable, Status
11
11
  from roborock.roborock_message import RoborockDataProtocol
12
12
  from roborock.roborock_typing import RoborockCommand
13
13
  from roborock.version_1_apis.roborock_client_v1 import AttributeCache as AttributeCache, RoborockClientV1 as RoborockClientV1
@@ -1,6 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
  from datetime import datetime
3
- from roborock.containers import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, NetworkInfo as NetworkInfo
3
+ from roborock.data import HomeDataDevice as HomeDataDevice, HomeDataProduct as HomeDataProduct, NetworkInfo as NetworkInfo
4
4
  from roborock.roborock_typing import DeviceProp as DeviceProp
5
5
  from typing import Any
6
6
  from vacuum_map_parser_base.map_data import MapData as MapData
@@ -1,8 +1,7 @@
1
1
  from _typeshed import Incomplete
2
2
  from bs4 import BeautifulSoup
3
3
  from datetime import timedelta
4
- from homeassistant.components.rest import RestData as RestData
5
- from homeassistant.components.rest.const import CONF_PAYLOAD_TEMPLATE as CONF_PAYLOAD_TEMPLATE
4
+ from homeassistant.components.rest import CONF_PAYLOAD_TEMPLATE as CONF_PAYLOAD_TEMPLATE, RestData as RestData
6
5
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
7
6
  from homeassistant.const import CONF_RESOURCE_TEMPLATE as CONF_RESOURCE_TEMPLATE
8
7
  from homeassistant.core import HomeAssistant as HomeAssistant
@@ -1,12 +1,18 @@
1
1
  from .const import DOMAIN as DOMAIN, LOGGER as LOGGER, PLATFORMS as PLATFORMS
2
2
  from .coordinator import SensiboDataUpdateCoordinator as SensiboDataUpdateCoordinator
3
+ from .services import async_setup_services as async_setup_services
3
4
  from .util import NoDevicesError as NoDevicesError, NoUsernameError as NoUsernameError, async_validate_api as async_validate_api
5
+ from _typeshed import Incomplete
4
6
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
7
  from homeassistant.const import CONF_API_KEY as CONF_API_KEY
6
8
  from homeassistant.core import HomeAssistant as HomeAssistant
7
9
  from homeassistant.helpers.device_registry import DeviceEntry as DeviceEntry
10
+ from homeassistant.helpers.typing import ConfigType as ConfigType
8
11
 
9
12
  type SensiboConfigEntry = ConfigEntry[SensiboDataUpdateCoordinator]
13
+ CONFIG_SCHEMA: Incomplete
14
+
15
+ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
10
16
  async def async_setup_entry(hass: HomeAssistant, entry: SensiboConfigEntry) -> bool: ...
11
17
  async def async_unload_entry(hass: HomeAssistant, entry: SensiboConfigEntry) -> bool: ...
12
18
  async def async_migrate_entry(hass: HomeAssistant, entry: SensiboConfigEntry) -> bool: ...
@@ -3,37 +3,14 @@ from .const import DOMAIN as DOMAIN
3
3
  from .coordinator import SensiboDataUpdateCoordinator as SensiboDataUpdateCoordinator
4
4
  from .entity import SensiboDeviceBaseEntity as SensiboDeviceBaseEntity, async_handle_api_call as async_handle_api_call
5
5
  from _typeshed import Incomplete
6
- from homeassistant.components.climate import ATTR_FAN_MODE as ATTR_FAN_MODE, ATTR_HVAC_MODE as ATTR_HVAC_MODE, ATTR_SWING_MODE as ATTR_SWING_MODE, ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACMode as HVACMode
7
- from homeassistant.const import ATTR_MODE as ATTR_MODE, ATTR_STATE as ATTR_STATE, ATTR_TEMPERATURE as ATTR_TEMPERATURE, PRECISION_TENTHS as PRECISION_TENTHS, UnitOfTemperature as UnitOfTemperature
8
- from homeassistant.core import HomeAssistant as HomeAssistant, SupportsResponse as SupportsResponse
6
+ from homeassistant.components.climate import ClimateEntity as ClimateEntity, ClimateEntityFeature as ClimateEntityFeature, HVACMode as HVACMode
7
+ from homeassistant.const import ATTR_TEMPERATURE as ATTR_TEMPERATURE, PRECISION_TENTHS as PRECISION_TENTHS, UnitOfTemperature as UnitOfTemperature
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
10
- from homeassistant.helpers import entity_platform as entity_platform
11
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
11
  from homeassistant.util.unit_conversion import TemperatureConverter as TemperatureConverter
13
12
  from typing import Any
14
13
 
15
- SERVICE_ASSUME_STATE: str
16
- SERVICE_ENABLE_TIMER: str
17
- ATTR_MINUTES: str
18
- SERVICE_ENABLE_PURE_BOOST: str
19
- SERVICE_DISABLE_PURE_BOOST: str
20
- SERVICE_FULL_STATE: str
21
- SERVICE_ENABLE_CLIMATE_REACT: str
22
- SERVICE_GET_DEVICE_CAPABILITIES: str
23
- ATTR_HIGH_TEMPERATURE_THRESHOLD: str
24
- ATTR_HIGH_TEMPERATURE_STATE: str
25
- ATTR_LOW_TEMPERATURE_THRESHOLD: str
26
- ATTR_LOW_TEMPERATURE_STATE: str
27
- ATTR_SMART_TYPE: str
28
- ATTR_AC_INTEGRATION: str
29
- ATTR_GEO_INTEGRATION: str
30
- ATTR_INDOOR_INTEGRATION: str
31
- ATTR_OUTDOOR_INTEGRATION: str
32
- ATTR_SENSITIVITY: str
33
- ATTR_TARGET_TEMPERATURE: str
34
- ATTR_HORIZONTAL_SWING_MODE: str
35
- ATTR_LIGHT: str
36
- BOOST_INCLUSIVE: str
37
14
  AVAILABLE_FAN_MODES: Incomplete
38
15
  AVAILABLE_SWING_MODES: Incomplete
39
16
  AVAILABLE_HORIZONTAL_SWING_MODES: Incomplete
@@ -0,0 +1,31 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from homeassistant.components.climate import ATTR_FAN_MODE as ATTR_FAN_MODE, ATTR_HVAC_MODE as ATTR_HVAC_MODE, ATTR_SWING_MODE as ATTR_SWING_MODE, HVACMode as HVACMode
3
+ from homeassistant.const import ATTR_MODE as ATTR_MODE, ATTR_STATE as ATTR_STATE
4
+ from homeassistant.core import HomeAssistant as HomeAssistant, SupportsResponse as SupportsResponse, callback as callback
5
+ from homeassistant.helpers import service as service
6
+
7
+ SERVICE_ASSUME_STATE: str
8
+ SERVICE_ENABLE_TIMER: str
9
+ ATTR_MINUTES: str
10
+ SERVICE_ENABLE_PURE_BOOST: str
11
+ SERVICE_DISABLE_PURE_BOOST: str
12
+ SERVICE_FULL_STATE: str
13
+ SERVICE_ENABLE_CLIMATE_REACT: str
14
+ SERVICE_GET_DEVICE_CAPABILITIES: str
15
+ ATTR_HIGH_TEMPERATURE_THRESHOLD: str
16
+ ATTR_HIGH_TEMPERATURE_STATE: str
17
+ ATTR_LOW_TEMPERATURE_THRESHOLD: str
18
+ ATTR_LOW_TEMPERATURE_STATE: str
19
+ ATTR_SMART_TYPE: str
20
+ ATTR_AC_INTEGRATION: str
21
+ ATTR_GEO_INTEGRATION: str
22
+ ATTR_INDOOR_INTEGRATION: str
23
+ ATTR_OUTDOOR_INTEGRATION: str
24
+ ATTR_SENSITIVITY: str
25
+ ATTR_TARGET_TEMPERATURE: str
26
+ ATTR_HORIZONTAL_SWING_MODE: str
27
+ ATTR_LIGHT: str
28
+ BOOST_INCLUSIVE: str
29
+
30
+ @callback
31
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,7 +1,7 @@
1
1
  from _typeshed import Incomplete
2
2
  from enum import StrEnum
3
3
  from homeassistant.const import CONCENTRATION_GRAMS_PER_CUBIC_METER as CONCENTRATION_GRAMS_PER_CUBIC_METER, CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT as CONCENTRATION_MICROGRAMS_PER_CUBIC_FOOT, CONCENTRATION_MICROGRAMS_PER_CUBIC_METER as CONCENTRATION_MICROGRAMS_PER_CUBIC_METER, CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER as CONCENTRATION_MILLIGRAMS_PER_CUBIC_METER, CONCENTRATION_PARTS_PER_BILLION as CONCENTRATION_PARTS_PER_BILLION, CONCENTRATION_PARTS_PER_MILLION as CONCENTRATION_PARTS_PER_MILLION, DEGREE as DEGREE, LIGHT_LUX as LIGHT_LUX, PERCENTAGE as PERCENTAGE, SIGNAL_STRENGTH_DECIBELS as SIGNAL_STRENGTH_DECIBELS, SIGNAL_STRENGTH_DECIBELS_MILLIWATT as SIGNAL_STRENGTH_DECIBELS_MILLIWATT, UnitOfApparentPower as UnitOfApparentPower, UnitOfArea as UnitOfArea, UnitOfBloodGlucoseConcentration as UnitOfBloodGlucoseConcentration, UnitOfConductivity as UnitOfConductivity, UnitOfDataRate as UnitOfDataRate, UnitOfElectricCurrent as UnitOfElectricCurrent, UnitOfElectricPotential as UnitOfElectricPotential, UnitOfEnergy as UnitOfEnergy, UnitOfEnergyDistance as UnitOfEnergyDistance, UnitOfFrequency as UnitOfFrequency, UnitOfInformation as UnitOfInformation, UnitOfIrradiance as UnitOfIrradiance, UnitOfLength as UnitOfLength, UnitOfMass as UnitOfMass, UnitOfPower as UnitOfPower, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfReactiveEnergy as UnitOfReactiveEnergy, UnitOfReactivePower as UnitOfReactivePower, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature, UnitOfTime as UnitOfTime, UnitOfVolume as UnitOfVolume, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate, UnitOfVolumetricFlux as UnitOfVolumetricFlux
4
- from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
4
+ from homeassistant.util.unit_conversion import ApparentPowerConverter as ApparentPowerConverter, AreaConverter as AreaConverter, BaseUnitConverter as BaseUnitConverter, BloodGlucoseConcentrationConverter as BloodGlucoseConcentrationConverter, CarbonMonoxideConcentrationConverter as CarbonMonoxideConcentrationConverter, ConductivityConverter as ConductivityConverter, DataRateConverter as DataRateConverter, DistanceConverter as DistanceConverter, DurationConverter as DurationConverter, ElectricCurrentConverter as ElectricCurrentConverter, ElectricPotentialConverter as ElectricPotentialConverter, EnergyConverter as EnergyConverter, EnergyDistanceConverter as EnergyDistanceConverter, InformationConverter as InformationConverter, MassConverter as MassConverter, MassVolumeConcentrationConverter as MassVolumeConcentrationConverter, PowerConverter as PowerConverter, PressureConverter as PressureConverter, ReactiveEnergyConverter as ReactiveEnergyConverter, ReactivePowerConverter as ReactivePowerConverter, SpeedConverter as SpeedConverter, TemperatureConverter as TemperatureConverter, TemperatureDeltaConverter as TemperatureDeltaConverter, UnitlessRatioConverter as UnitlessRatioConverter, VolumeConverter as VolumeConverter, VolumeFlowRateConverter as VolumeFlowRateConverter
5
5
  from typing import Final
6
6
 
7
7
  DOMAIN: Final[str]
@@ -60,6 +60,7 @@ class SensorDeviceClass(StrEnum):
60
60
  SPEED = 'speed'
61
61
  SULPHUR_DIOXIDE = 'sulphur_dioxide'
62
62
  TEMPERATURE = 'temperature'
63
+ TEMPERATURE_DELTA = 'temperature_delta'
63
64
  VOLATILE_ORGANIC_COMPOUNDS = 'volatile_organic_compounds'
64
65
  VOLATILE_ORGANIC_COMPOUNDS_PARTS = 'volatile_organic_compounds_parts'
65
66
  VOLTAGE = 'voltage'
@@ -55,6 +55,7 @@ CONF_IS_SIGNAL_STRENGTH: str
55
55
  CONF_IS_SOUND_PRESSURE: str
56
56
  CONF_IS_SULPHUR_DIOXIDE: str
57
57
  CONF_IS_TEMPERATURE: str
58
+ CONF_IS_TEMPERATURE_DELTA: str
58
59
  CONF_IS_VALUE: str
59
60
  CONF_IS_VOLATILE_ORGANIC_COMPOUNDS: str
60
61
  CONF_IS_VOLATILE_ORGANIC_COMPOUNDS_PARTS: str
@@ -55,6 +55,7 @@ CONF_SOUND_PRESSURE: str
55
55
  CONF_SPEED: str
56
56
  CONF_SULPHUR_DIOXIDE: str
57
57
  CONF_TEMPERATURE: str
58
+ CONF_TEMPERATURE_DELTA: str
58
59
  CONF_VALUE: str
59
60
  CONF_VOLATILE_ORGANIC_COMPOUNDS: str
60
61
  CONF_VOLATILE_ORGANIC_COMPOUNDS_PARTS: str
@@ -1,11 +1,11 @@
1
1
  import datetime
2
- from .const import AMBIGUOUS_UNITS as AMBIGUOUS_UNITS, ATTR_LAST_RESET as ATTR_LAST_RESET, ATTR_STATE_CLASS as ATTR_STATE_CLASS, DOMAIN as DOMAIN, SensorStateClass as SensorStateClass, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
2
+ from .const import AMBIGUOUS_UNITS as AMBIGUOUS_UNITS, ATTR_LAST_RESET as ATTR_LAST_RESET, ATTR_STATE_CLASS as ATTR_STATE_CLASS, DOMAIN as DOMAIN, SensorStateClass as SensorStateClass, UNIT_CONVERTERS as UNIT_CONVERTERS, UnitOfVolumeFlowRate as UnitOfVolumeFlowRate
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Callable as Callable, Iterable
5
5
  from dataclasses import dataclass
6
6
  from homeassistant.components.recorder import get_instance as get_instance, history as history, statistics as statistics
7
7
  from homeassistant.components.recorder.models import StatisticData as StatisticData, StatisticMeanType as StatisticMeanType, StatisticMetaData as StatisticMetaData, StatisticResult as StatisticResult
8
- from homeassistant.const import ATTR_UNIT_OF_MEASUREMENT as ATTR_UNIT_OF_MEASUREMENT, REVOLUTIONS_PER_MINUTE as REVOLUTIONS_PER_MINUTE, UnitOfIrradiance as UnitOfIrradiance, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfVolume as UnitOfVolume
8
+ from homeassistant.const import ATTR_DEVICE_CLASS as ATTR_DEVICE_CLASS, ATTR_UNIT_OF_MEASUREMENT as ATTR_UNIT_OF_MEASUREMENT, REVOLUTIONS_PER_MINUTE as REVOLUTIONS_PER_MINUTE, UnitOfIrradiance as UnitOfIrradiance, UnitOfSoundPressure as UnitOfSoundPressure, UnitOfVolume as UnitOfVolume
9
9
  from homeassistant.core import HomeAssistant as HomeAssistant, State as State, callback as callback, split_entity_id as split_entity_id
10
10
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
11
  from homeassistant.helpers.entity import entity_sources as entity_sources
@@ -14,6 +14,7 @@ from homeassistant.loader import async_suggest_report_issue as async_suggest_rep
14
14
  from homeassistant.util.async_ import run_callback_threadsafe as run_callback_threadsafe
15
15
  from homeassistant.util.enum import try_parse_enum as try_parse_enum
16
16
  from homeassistant.util.hass_dict import HassKey as HassKey
17
+ from homeassistant.util.unit_conversion import BaseUnitConverter as BaseUnitConverter
17
18
  from sqlalchemy.orm.session import Session as Session
18
19
  from typing import Any
19
20
 
@@ -44,7 +45,9 @@ def _get_units(fstates: list[tuple[float, State]]) -> set[str | None]: ...
44
45
  def _equivalent_units(units: set[str | None]) -> bool: ...
45
46
  def _entity_history_to_float_and_state(entity_history: Iterable[State]) -> list[tuple[float, State]]: ...
46
47
  def _is_numeric(state: State) -> bool: ...
47
- def _normalize_states(hass: HomeAssistant, old_metadatas: dict[str, tuple[int, StatisticMetaData]], fstates: list[tuple[float, State]], entity_id: str) -> tuple[str | None, list[tuple[float, State]]]: ...
48
+ def _get_unit_class(device_class: str | None, unit: str | None) -> str | None: ...
49
+ def _get_unit_converter(unit_class: str | None) -> type[BaseUnitConverter] | None: ...
50
+ def _normalize_states(hass: HomeAssistant, old_metadatas: dict[str, tuple[int, StatisticMetaData]], fstates: list[tuple[float, State]], entity_id: str) -> tuple[str | None, str | None, list[tuple[float, State]]]: ...
48
51
  def _suggest_report_issue(hass: HomeAssistant, entity_id: str) -> str: ...
49
52
  def warn_dip(hass: HomeAssistant, entity_id: str, state: State, previous_fstate: float) -> None: ...
50
53
  def warn_negative(hass: HomeAssistant, entity_id: str, state: State) -> None: ...
@@ -1,11 +1,9 @@
1
1
  from .const import DOMAIN as DOMAIN, PLATFORMS as PLATFORMS, PLATFORMS_WITH_AUTH as PLATFORMS_WITH_AUTH
2
- from .coordinator import SFRDataUpdateCoordinator as SFRDataUpdateCoordinator
3
- from .models import DomainData as DomainData
4
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
2
+ from .coordinator import SFRConfigEntry as SFRConfigEntry, SFRDataUpdateCoordinator as SFRDataUpdateCoordinator, SFRRuntimeData as SFRRuntimeData
5
3
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
6
4
  from homeassistant.core import HomeAssistant as HomeAssistant
7
5
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady
8
- from homeassistant.helpers.httpx_client import get_async_client as get_async_client
6
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
9
7
 
10
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
11
- async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
8
+ async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry) -> bool: ...
9
+ async def async_unload_entry(hass: HomeAssistant, entry: SFRConfigEntry) -> bool: ...
@@ -1,17 +1,12 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .coordinator import SFRDataUpdateCoordinator as SFRDataUpdateCoordinator
3
- from .models import DomainData as DomainData
4
- from _typeshed import Incomplete
1
+ from .coordinator import SFRConfigEntry as SFRConfigEntry
2
+ from .entity import SFRCoordinatorEntity as SFRCoordinatorEntity
5
3
  from collections.abc import Callable as Callable
6
4
  from dataclasses import dataclass
7
5
  from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
8
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
6
  from homeassistant.const import EntityCategory as EntityCategory
10
7
  from homeassistant.core import HomeAssistant as HomeAssistant
11
- from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
12
8
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
- from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
14
- from sfrbox_api.models import DslInfo, FtthInfo, SystemInfo as SystemInfo, WanInfo
9
+ from sfrbox_api.models import DslInfo, FtthInfo, WanInfo
15
10
 
16
11
  @dataclass(frozen=True, kw_only=True)
17
12
  class SFRBoxBinarySensorEntityDescription[_T](BinarySensorEntityDescription):
@@ -21,13 +16,9 @@ DSL_SENSOR_TYPES: tuple[SFRBoxBinarySensorEntityDescription[DslInfo], ...]
21
16
  FTTH_SENSOR_TYPES: tuple[SFRBoxBinarySensorEntityDescription[FtthInfo], ...]
22
17
  WAN_SENSOR_TYPES: tuple[SFRBoxBinarySensorEntityDescription[WanInfo], ...]
23
18
 
24
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
19
+ async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
25
20
 
26
- class SFRBoxBinarySensor[_T](CoordinatorEntity[SFRDataUpdateCoordinator[_T]], BinarySensorEntity):
21
+ class SFRBoxBinarySensor[_T](SFRCoordinatorEntity[_T], BinarySensorEntity):
27
22
  entity_description: SFRBoxBinarySensorEntityDescription[_T]
28
- _attr_has_entity_name: bool
29
- _attr_unique_id: Incomplete
30
- _attr_device_info: Incomplete
31
- def __init__(self, coordinator: SFRDataUpdateCoordinator[_T], description: SFRBoxBinarySensorEntityDescription, system_info: SystemInfo) -> None: ...
32
23
  @property
33
24
  def is_on(self) -> bool | None: ...
@@ -1,14 +1,12 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .models import DomainData as DomainData
1
+ from .coordinator import SFRConfigEntry as SFRConfigEntry
2
+ from .entity import SFREntity as SFREntity
3
3
  from _typeshed import Incomplete
4
4
  from collections.abc import Awaitable, Callable as Callable, Coroutine
5
5
  from dataclasses import dataclass
6
6
  from homeassistant.components.button import ButtonDeviceClass as ButtonDeviceClass, ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
7
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
7
  from homeassistant.const import EntityCategory as EntityCategory
9
8
  from homeassistant.core import HomeAssistant as HomeAssistant
10
9
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
- from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
12
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
11
  from sfrbox_api.bridge import SFRBox as SFRBox
14
12
  from sfrbox_api.models import SystemInfo as SystemInfo
@@ -22,14 +20,11 @@ class SFRBoxButtonEntityDescription(ButtonEntityDescription):
22
20
 
23
21
  BUTTON_TYPES: tuple[SFRBoxButtonEntityDescription, ...]
24
22
 
25
- async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
+ async def async_setup_entry(hass: HomeAssistant, entry: SFRConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
26
24
 
27
- class SFRBoxButton(ButtonEntity):
25
+ class SFRBoxButton(SFREntity, ButtonEntity):
28
26
  entity_description: SFRBoxButtonEntityDescription
29
- _attr_has_entity_name: bool
30
27
  _box: Incomplete
31
- _attr_unique_id: Incomplete
32
- _attr_device_info: Incomplete
33
28
  def __init__(self, box: SFRBox, description: SFRBoxButtonEntityDescription, system_info: SystemInfo) -> None: ...
34
29
  @with_error_wrapping
35
30
  async def async_press(self) -> None: ...
@@ -4,10 +4,11 @@ from collections.abc import Mapping
4
4
  from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, SOURCE_REAUTH as SOURCE_REAUTH
5
5
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
6
6
  from homeassistant.helpers import selector as selector
7
- from homeassistant.helpers.httpx_client import get_async_client as get_async_client
7
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
8
8
  from sfrbox_api.bridge import SFRBox
9
9
  from typing import Any
10
10
 
11
+ _LOGGER: Incomplete
11
12
  DATA_SCHEMA: Incomplete
12
13
  AUTH_SCHEMA: Incomplete
13
14
 
@@ -1,17 +1,28 @@
1
1
  from _typeshed import Incomplete
2
2
  from collections.abc import Callable as Callable, Coroutine
3
+ from dataclasses import dataclass
3
4
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
4
5
  from homeassistant.core import HomeAssistant as HomeAssistant
5
6
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
6
7
  from sfrbox_api.bridge import SFRBox as SFRBox
8
+ from sfrbox_api.models import DslInfo as DslInfo, FtthInfo as FtthInfo, SystemInfo as SystemInfo, WanInfo as WanInfo
7
9
  from typing import Any
8
10
 
9
11
  _LOGGER: Incomplete
10
12
  _SCAN_INTERVAL: Incomplete
13
+ type SFRConfigEntry = ConfigEntry[SFRRuntimeData]
14
+
15
+ @dataclass
16
+ class SFRRuntimeData:
17
+ box: SFRBox
18
+ dsl: SFRDataUpdateCoordinator[DslInfo]
19
+ ftth: SFRDataUpdateCoordinator[FtthInfo]
20
+ system: SFRDataUpdateCoordinator[SystemInfo]
21
+ wan: SFRDataUpdateCoordinator[WanInfo]
11
22
 
12
23
  class SFRDataUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT | None]):
13
- config_entry: ConfigEntry
24
+ config_entry: SFRConfigEntry
14
25
  box: Incomplete
15
26
  _method: Incomplete
16
- def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, box: SFRBox, name: str, method: Callable[[SFRBox], Coroutine[Any, Any, _DataT | None]]) -> None: ...
27
+ def __init__(self, hass: HomeAssistant, config_entry: SFRConfigEntry, box: SFRBox, name: str, method: Callable[[SFRBox], Coroutine[Any, Any, _DataT | None]]) -> None: ...
17
28
  async def _async_update_data(self) -> _DataT | None: ...
@@ -1,12 +1,10 @@
1
- from .const import DOMAIN as DOMAIN
2
- from .models import DomainData as DomainData
1
+ from .coordinator import SFRConfigEntry as SFRConfigEntry
3
2
  from _typeshed import DataclassInstance, Incomplete
4
3
  from homeassistant.components.diagnostics import async_redact_data as async_redact_data
5
- from homeassistant.config_entries import ConfigEntry as ConfigEntry
6
4
  from homeassistant.core import HomeAssistant as HomeAssistant
7
5
  from typing import Any
8
6
 
9
7
  TO_REDACT: Incomplete
10
8
 
11
9
  def _async_redact_data(obj: DataclassInstance | None) -> dict[str, Any] | None: ...
12
- async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: ConfigEntry) -> dict[str, Any]: ...
10
+ async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: SFRConfigEntry) -> dict[str, Any]: ...
@@ -0,0 +1,18 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .coordinator import SFRDataUpdateCoordinator as SFRDataUpdateCoordinator
3
+ from _typeshed import Incomplete
4
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
5
+ from homeassistant.helpers.entity import Entity as Entity, EntityDescription as EntityDescription
6
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
7
+ from sfrbox_api.models import SystemInfo as SystemInfo
8
+
9
+ class SFREntity(Entity):
10
+ _attr_has_entity_name: bool
11
+ entity_description: Incomplete
12
+ _attr_device_info: Incomplete
13
+ _attr_unique_id: Incomplete
14
+ def __init__(self, description: EntityDescription, system_info: SystemInfo) -> None: ...
15
+
16
+ class SFRCoordinatorEntity[_T](CoordinatorEntity[SFRDataUpdateCoordinator[_T]], SFREntity):
17
+ _attr_unique_id: Incomplete
18
+ def __init__(self, coordinator: SFRDataUpdateCoordinator[_T], description: EntityDescription, system_info: SystemInfo) -> None: ...