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
@@ -46,6 +46,7 @@ class ImageContentTypeError(HomeAssistantError): ...
46
46
 
47
47
  def valid_image_content_type(content_type: str | None) -> str: ...
48
48
  async def _async_get_image(image_entity: ImageEntity, timeout: int) -> Image: ...
49
+ async def async_get_image(hass: HomeAssistant, entity_id: str, timeout: int = 10) -> Image: ...
49
50
  async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
50
51
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
51
52
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
@@ -1,5 +1,5 @@
1
1
  import pathlib
2
- from .const import DOMAIN as DOMAIN
2
+ from .const import DOMAIN as DOMAIN, FOLDER_IMAGE as FOLDER_IMAGE
3
3
  from _typeshed import Incomplete
4
4
  from aiohttp import web
5
5
  from homeassistant.components import websocket_api as websocket_api
@@ -1 +1,2 @@
1
1
  DOMAIN: str
2
+ FOLDER_IMAGE: str
@@ -1,8 +1,10 @@
1
- from .const import DOMAIN as DOMAIN
1
+ import pathlib
2
+ from .const import DOMAIN as DOMAIN, FOLDER_IMAGE as FOLDER_IMAGE
2
3
  from _typeshed import Incomplete
3
4
  from homeassistant.components.media_player import BrowseError as BrowseError, MediaClass as MediaClass
4
5
  from homeassistant.components.media_source import BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia, Unresolvable as Unresolvable
5
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from propcache.api import cached_property
6
8
 
7
9
  async def async_get_media_source(hass: HomeAssistant) -> ImageUploadMediaSource: ...
8
10
 
@@ -10,5 +12,7 @@ class ImageUploadMediaSource(MediaSource):
10
12
  name: str
11
13
  hass: Incomplete
12
14
  def __init__(self, hass: HomeAssistant) -> None: ...
15
+ @cached_property
16
+ def image_folder(self) -> pathlib.Path: ...
13
17
  async def async_resolve_media(self, item: MediaSourceItem) -> PlayMedia: ...
14
18
  async def async_browse_media(self, item: MediaSourceItem) -> BrowseMediaSource: ...
@@ -4,8 +4,8 @@ from _typeshed import Incomplete
4
4
  from aiohttp.web import Request as Request, Response, StreamResponse
5
5
  from aioimmich.assets.models import ImmichAsset as ImmichAsset
6
6
  from homeassistant.components.http import HomeAssistantView as HomeAssistantView
7
- from homeassistant.components.media_player import MediaClass as MediaClass
8
- from homeassistant.components.media_source import BrowseError as BrowseError, BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia, Unresolvable as Unresolvable
7
+ from homeassistant.components.media_player import BrowseError as BrowseError, MediaClass as MediaClass
8
+ from homeassistant.components.media_source import BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia, Unresolvable as Unresolvable
9
9
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant
11
11
  from homeassistant.helpers.aiohttp_client import ChunkAsyncStreamIterator as ChunkAsyncStreamIterator
@@ -10,5 +10,4 @@ _LOGGER: Incomplete
10
10
 
11
11
  async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
12
12
  async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
13
- async def config_entry_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: ...
14
13
  async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: ...
@@ -26,4 +26,5 @@ class ConfigFlowHandler(SchemaConfigFlowHandler, domain=DOMAIN):
26
26
  MINOR_VERSION: int
27
27
  config_flow = CONFIG_FLOW
28
28
  options_flow = OPTIONS_FLOW
29
+ options_flow_reloads: bool
29
30
  def async_config_entry_title(self, options: Mapping[str, Any]) -> str: ...
@@ -8,7 +8,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_
8
8
  from homeassistant.core import HomeAssistant as HomeAssistant
9
9
  from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed
10
10
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
11
- from pylamarzocco import LaMarzoccoMachine as LaMarzoccoMachine
11
+ from pylamarzocco import LaMarzoccoCloudClient as LaMarzoccoCloudClient, LaMarzoccoMachine as LaMarzoccoMachine
12
12
 
13
13
  SCAN_INTERVAL: Incomplete
14
14
  SETTINGS_UPDATE_INTERVAL: Incomplete
@@ -29,12 +29,14 @@ class LaMarzoccoUpdateCoordinator(DataUpdateCoordinator[None], metaclass=abc.ABC
29
29
  config_entry: LaMarzoccoConfigEntry
30
30
  websocket_terminated: bool
31
31
  device: Incomplete
32
- def __init__(self, hass: HomeAssistant, entry: LaMarzoccoConfigEntry, device: LaMarzoccoMachine) -> None: ...
32
+ cloud_client: Incomplete
33
+ def __init__(self, hass: HomeAssistant, entry: LaMarzoccoConfigEntry, device: LaMarzoccoMachine, cloud_client: LaMarzoccoCloudClient | None = None) -> None: ...
33
34
  async def _async_update_data(self) -> None: ...
34
35
  @abstractmethod
35
36
  async def _internal_async_update_data(self) -> None: ...
36
37
 
37
38
  class LaMarzoccoConfigUpdateCoordinator(LaMarzoccoUpdateCoordinator):
39
+ cloud_client: LaMarzoccoCloudClient
38
40
  async def _internal_async_update_data(self) -> None: ...
39
41
  websocket_terminated: bool
40
42
  async def connect_websocket(self) -> None: ...
@@ -0,0 +1,8 @@
1
+ from . import DOMAIN as DOMAIN, LawnMowerEntityFeature as LawnMowerEntityFeature, SERVICE_DOCK as SERVICE_DOCK, SERVICE_START_MOWING as SERVICE_START_MOWING
2
+ from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from homeassistant.helpers import intent as intent
4
+
5
+ INTENT_LANW_MOWER_START_MOWING: str
6
+ INTENT_LANW_MOWER_DOCK: str
7
+
8
+ async def async_setup_intents(hass: HomeAssistant) -> None: ...
@@ -0,0 +1,34 @@
1
+ from .coordinator import LetPotConfigEntry as LetPotConfigEntry, LetPotDeviceCoordinator as LetPotDeviceCoordinator
2
+ from .entity import LetPotEntity as LetPotEntity, LetPotEntityDescription as LetPotEntityDescription, exception_handler as exception_handler
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable, Coroutine
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription, NumberMode as NumberMode
7
+ from homeassistant.const import EntityCategory as EntityCategory, PRECISION_WHOLE as PRECISION_WHOLE, UnitOfTime as UnitOfTime
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
10
+ from letpot.deviceclient import LetPotDeviceClient as LetPotDeviceClient
11
+ from typing import Any
12
+
13
+ PARALLEL_UPDATES: int
14
+
15
+ @dataclass(frozen=True, kw_only=True)
16
+ class LetPotNumberEntityDescription(LetPotEntityDescription, NumberEntityDescription):
17
+ max_value_fn: Callable[[LetPotDeviceCoordinator], float]
18
+ value_fn: Callable[[LetPotDeviceCoordinator], float | None]
19
+ set_value_fn: Callable[[LetPotDeviceClient, str, float], Coroutine[Any, Any, None]]
20
+
21
+ NUMBERS: tuple[LetPotNumberEntityDescription, ...]
22
+
23
+ async def async_setup_entry(hass: HomeAssistant, entry: LetPotConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
24
+
25
+ class LetPotNumberEntity(LetPotEntity, NumberEntity):
26
+ entity_description: LetPotNumberEntityDescription
27
+ _attr_unique_id: Incomplete
28
+ def __init__(self, coordinator: LetPotDeviceCoordinator, description: LetPotNumberEntityDescription) -> None: ...
29
+ @property
30
+ def native_max_value(self) -> float: ...
31
+ @property
32
+ def native_value(self) -> float | None: ...
33
+ @exception_handler
34
+ async def async_set_native_value(self, value: float) -> None: ...
@@ -0,0 +1,9 @@
1
+ from .coordinator import LibreHardwareMonitorConfigEntry as LibreHardwareMonitorConfigEntry, LibreHardwareMonitorCoordinator as LibreHardwareMonitorCoordinator
2
+ from _typeshed import Incomplete
3
+ from homeassistant.const import Platform as Platform
4
+ from homeassistant.core import HomeAssistant as HomeAssistant
5
+
6
+ PLATFORMS: Incomplete
7
+
8
+ async def async_setup_entry(hass: HomeAssistant, config_entry: LibreHardwareMonitorConfigEntry) -> bool: ...
9
+ async def async_unload_entry(hass: HomeAssistant, config_entry: LibreHardwareMonitorConfigEntry) -> bool: ...
@@ -0,0 +1,12 @@
1
+ from .const import DEFAULT_HOST as DEFAULT_HOST, DEFAULT_PORT as DEFAULT_PORT, 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_HOST as CONF_HOST, CONF_PORT as CONF_PORT
5
+ from typing import Any
6
+
7
+ _LOGGER: Incomplete
8
+ CONFIG_SCHEMA: Incomplete
9
+
10
+ class LibreHardwareMonitorConfigFlow(ConfigFlow, domain=DOMAIN):
11
+ VERSION: int
12
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
@@ -0,0 +1,4 @@
1
+ DOMAIN: str
2
+ DEFAULT_HOST: str
3
+ DEFAULT_PORT: int
4
+ DEFAULT_SCAN_INTERVAL: int
@@ -0,0 +1,21 @@
1
+ from .const import DEFAULT_SCAN_INTERVAL as DEFAULT_SCAN_INTERVAL, DOMAIN as DOMAIN
2
+ from _typeshed import Incomplete
3
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
4
+ from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PORT as CONF_PORT
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.helpers.device_registry import DeviceEntry as DeviceEntry
7
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
8
+ from librehardwaremonitor_api.model import DeviceId, DeviceName, LibreHardwareMonitorData
9
+ from types import MappingProxyType
10
+
11
+ _LOGGER: Incomplete
12
+ type LibreHardwareMonitorConfigEntry = ConfigEntry[LibreHardwareMonitorCoordinator]
13
+
14
+ class LibreHardwareMonitorCoordinator(DataUpdateCoordinator[LibreHardwareMonitorData]):
15
+ config_entry: LibreHardwareMonitorConfigEntry
16
+ _api: Incomplete
17
+ _previous_devices: MappingProxyType[DeviceId, DeviceName]
18
+ def __init__(self, hass: HomeAssistant, config_entry: LibreHardwareMonitorConfigEntry) -> None: ...
19
+ async def _async_update_data(self) -> LibreHardwareMonitorData: ...
20
+ async def _async_refresh(self, log_failures: bool = True, raise_on_auth_failed: bool = False, scheduled: bool = False, raise_on_entry_error: bool = False) -> None: ...
21
+ async def _async_handle_changes_in_devices(self, detected_devices: MappingProxyType[DeviceId, DeviceName]) -> None: ...
@@ -0,0 +1,34 @@
1
+ from . import LibreHardwareMonitorCoordinator as LibreHardwareMonitorCoordinator
2
+ from .const import DOMAIN as DOMAIN
3
+ from .coordinator import LibreHardwareMonitorConfigEntry as LibreHardwareMonitorConfigEntry
4
+ from _typeshed import Incomplete
5
+ from homeassistant.components.sensor import SensorEntity as SensorEntity, SensorStateClass as SensorStateClass
6
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
8
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
10
+ from librehardwaremonitor_api.model import LibreHardwareMonitorSensorData as LibreHardwareMonitorSensorData
11
+
12
+ PARALLEL_UPDATES: int
13
+ STATE_MIN_VALUE: str
14
+ STATE_MAX_VALUE: str
15
+
16
+ async def async_setup_entry(hass: HomeAssistant, config_entry: LibreHardwareMonitorConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
17
+
18
+ class LibreHardwareMonitorSensor(CoordinatorEntity[LibreHardwareMonitorCoordinator], SensorEntity):
19
+ _attr_state_class: Incomplete
20
+ _attr_has_entity_name: bool
21
+ _attr_name: str
22
+ value: str | None
23
+ _attr_extra_state_attributes: dict[str, str]
24
+ _attr_native_unit_of_measurement: Incomplete
25
+ _attr_unique_id: str
26
+ _sensor_id: str
27
+ _attr_device_info: Incomplete
28
+ def __init__(self, coordinator: LibreHardwareMonitorCoordinator, sensor_data: LibreHardwareMonitorSensorData) -> None: ...
29
+ @callback
30
+ def _handle_coordinator_update(self) -> None: ...
31
+ @property
32
+ def native_value(self) -> str | None: ...
33
+ @staticmethod
34
+ def _format_number_value(number_str: str) -> str: ...
@@ -19,7 +19,7 @@ class RobotSelectEntityDescription(SelectEntityDescription, Generic[_WhiskerEnti
19
19
  options_fn: Callable[[_WhiskerEntityT], list[_CastTypeT]]
20
20
  select_fn: Callable[[_WhiskerEntityT, str], Coroutine[Any, Any, bool]]
21
21
 
22
- ROBOT_SELECT_MAP: dict[type[Robot], RobotSelectEntityDescription]
22
+ ROBOT_SELECT_MAP: dict[type[Robot], tuple[RobotSelectEntityDescription, ...]]
23
23
 
24
24
  async def async_setup_entry(hass: HomeAssistant, entry: LitterRobotConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
25
25
 
@@ -1,3 +1,4 @@
1
+ from .const import DOMAIN as DOMAIN
1
2
  from .coordinator import LitterRobotConfigEntry as LitterRobotConfigEntry
2
3
  from .entity import LitterRobotEntity as LitterRobotEntity, _WhiskerEntityT as _WhiskerEntityT
3
4
  from _typeshed import Incomplete
@@ -7,6 +8,8 @@ from homeassistant.components.switch import SwitchEntity as SwitchEntity, Switch
7
8
  from homeassistant.const import EntityCategory as EntityCategory
8
9
  from homeassistant.core import HomeAssistant as HomeAssistant
9
10
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
12
+ from pylitterbot import Robot
10
13
  from typing import Any, Generic
11
14
 
12
15
  @dataclass(frozen=True, kw_only=True)
@@ -15,7 +18,8 @@ class RobotSwitchEntityDescription(SwitchEntityDescription, Generic[_WhiskerEnti
15
18
  set_fn: Callable[[_WhiskerEntityT, bool], Coroutine[Any, Any, bool]]
16
19
  value_fn: Callable[[_WhiskerEntityT], bool]
17
20
 
18
- ROBOT_SWITCHES: Incomplete
21
+ NIGHT_LIGHT_MODE_ENTITY_DESCRIPTION: Incomplete
22
+ SWITCH_MAP: dict[type[Robot], tuple[RobotSwitchEntityDescription, ...]]
19
23
 
20
24
  async def async_setup_entry(hass: HomeAssistant, entry: LitterRobotConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
21
25
 
@@ -1,8 +1,8 @@
1
- from .const import ALWAYS_CONTINUOUS_DOMAINS as ALWAYS_CONTINUOUS_DOMAINS, AUTOMATION_EVENTS as AUTOMATION_EVENTS, BUILT_IN_EVENTS as BUILT_IN_EVENTS, DOMAIN as DOMAIN
1
+ from .const import ALWAYS_CONTINUOUS_DOMAINS as ALWAYS_CONTINUOUS_DOMAINS, AUTOMATION_EVENTS as AUTOMATION_EVENTS, BUILT_IN_EVENTS as BUILT_IN_EVENTS, DOMAIN as DOMAIN, SENSOR_DOMAIN as SENSOR_DOMAIN
2
2
  from .models import LogbookConfig as LogbookConfig
3
3
  from collections.abc import Callable as Callable, Mapping
4
- from homeassistant.components.sensor import ATTR_STATE_CLASS as ATTR_STATE_CLASS
5
- from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_DOMAIN as ATTR_DOMAIN, ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_UNIT_OF_MEASUREMENT as ATTR_UNIT_OF_MEASUREMENT, EVENT_LOGBOOK_ENTRY as EVENT_LOGBOOK_ENTRY, EVENT_STATE_CHANGED as EVENT_STATE_CHANGED
4
+ from homeassistant.components.sensor import ATTR_STATE_CLASS as ATTR_STATE_CLASS, NON_NUMERIC_DEVICE_CLASSES as NON_NUMERIC_DEVICE_CLASSES
5
+ from homeassistant.const import ATTR_DEVICE_CLASS as ATTR_DEVICE_CLASS, ATTR_DEVICE_ID as ATTR_DEVICE_ID, ATTR_DOMAIN as ATTR_DOMAIN, ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_UNIT_OF_MEASUREMENT as ATTR_UNIT_OF_MEASUREMENT, EVENT_LOGBOOK_ENTRY as EVENT_LOGBOOK_ENTRY, EVENT_STATE_CHANGED as EVENT_STATE_CHANGED
6
6
  from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, Event as Event, EventStateChangedData as EventStateChangedData, HomeAssistant as HomeAssistant, State as State, callback as callback, is_callback as is_callback, split_entity_id as split_entity_id
7
7
  from homeassistant.helpers import entity_registry as er
8
8
  from homeassistant.helpers.event import async_track_state_change_event as async_track_state_change_event
@@ -19,5 +19,6 @@ def extract_attr(source: Mapping[str, Any], attr: str) -> list[str]: ...
19
19
  def event_forwarder_filtered(target: Callable[[Event], None], entities_filter: Callable[[str], bool] | None, entity_ids: list[str] | None, device_ids: list[str] | None) -> Callable[[Event], None]: ...
20
20
  @callback
21
21
  def async_subscribe_events(hass: HomeAssistant, subscriptions: list[CALLBACK_TYPE], target: Callable[[Event[Any]], None], event_types: tuple[EventType[Any] | str, ...], entities_filter: Callable[[str], bool] | None, entity_ids: list[str] | None, device_ids: list[str] | None) -> None: ...
22
+ def _device_class_is_numeric(device_class: str | None) -> bool: ...
22
23
  def is_sensor_continuous(hass: HomeAssistant, ent_reg: er.EntityRegistry, entity_id: str) -> bool: ...
23
24
  def _is_state_filtered(new_state: State, old_state: State) -> bool: ...
@@ -13,3 +13,4 @@ ATTR_CONTENT_WARNING: str
13
13
  ATTR_MEDIA_WARNING: str
14
14
  ATTR_MEDIA: str
15
15
  ATTR_MEDIA_DESCRIPTION: str
16
+ ATTR_LANGUAGE: str
@@ -1,4 +1,4 @@
1
- from .const import ATTR_CONTENT_WARNING as ATTR_CONTENT_WARNING, ATTR_MEDIA as ATTR_MEDIA, ATTR_MEDIA_DESCRIPTION as ATTR_MEDIA_DESCRIPTION, ATTR_MEDIA_WARNING as ATTR_MEDIA_WARNING, ATTR_STATUS as ATTR_STATUS, ATTR_VISIBILITY as ATTR_VISIBILITY, DOMAIN as DOMAIN
1
+ from .const import ATTR_CONTENT_WARNING as ATTR_CONTENT_WARNING, ATTR_LANGUAGE as ATTR_LANGUAGE, ATTR_MEDIA as ATTR_MEDIA, ATTR_MEDIA_DESCRIPTION as ATTR_MEDIA_DESCRIPTION, ATTR_MEDIA_WARNING as ATTR_MEDIA_WARNING, ATTR_STATUS as ATTR_STATUS, ATTR_VISIBILITY as ATTR_VISIBILITY, DOMAIN as DOMAIN
2
2
  from .coordinator import MastodonConfigEntry as MastodonConfigEntry
3
3
  from .utils import get_media_type as get_media_type
4
4
  from _typeshed import Incomplete
@@ -38,6 +38,7 @@ class MatterDiscoverySchema:
38
38
  device_type: tuple[type[DeviceType] | DeviceType, ...] | None = ...
39
39
  not_device_type: tuple[type[DeviceType] | DeviceType, ...] | None = ...
40
40
  vendor_id: tuple[int, ...] | None = ...
41
+ product_id: tuple[int, ...] | None = ...
41
42
  product_name: tuple[str, ...] | None = ...
42
43
  endpoint_id: tuple[int, ...] | None = ...
43
44
  absent_attributes: tuple[type[ClusterAttributeDescriptor], ...] | None = ...
@@ -23,6 +23,7 @@ DEM_OPT_OUT_STATE_MAP: Incomplete
23
23
  ESA_STATE_MAP: Incomplete
24
24
  EVSE_FAULT_STATE_MAP: Incomplete
25
25
  PUMP_CONTROL_MODE_MAP: Incomplete
26
+ TEMPERATURE_SCALING_FACTOR: int
26
27
 
27
28
  async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
28
29
 
@@ -3,13 +3,13 @@ from anyio.streams.memory import MemoryObjectSendStream as MemoryObjectSendStrea
3
3
  from collections.abc import AsyncGenerator
4
4
  from contextlib import asynccontextmanager
5
5
  from dataclasses import dataclass
6
- from mcp import types as types
6
+ from mcp.shared.message import SessionMessage as SessionMessage
7
7
 
8
8
  _LOGGER: Incomplete
9
9
 
10
10
  @dataclass
11
11
  class Session:
12
- read_stream_writer: MemoryObjectSendStream[types.JSONRPCMessage | Exception]
12
+ read_stream_writer: MemoryObjectSendStream[SessionMessage | Exception]
13
13
 
14
14
  class SessionManager:
15
15
  _sessions: dict[str, Session]
@@ -1,12 +1,8 @@
1
1
  from .const import DOMAIN as DOMAIN, MEDIA_CLASS_MAP as MEDIA_CLASS_MAP, MEDIA_MIME_TYPES as MEDIA_MIME_TYPES
2
2
  from .error import MediaSourceError as MediaSourceError, Unresolvable as Unresolvable
3
+ from .helper import async_browse_media as async_browse_media, async_resolve_media as async_resolve_media
3
4
  from .models import BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia
4
- from collections.abc import Callable
5
- from homeassistant.components import websocket_api
6
- from homeassistant.components.media_player import BrowseMedia
7
- from homeassistant.core import HomeAssistant, callback
8
- from homeassistant.helpers.typing import UndefinedType
9
- from homeassistant.loader import bind_hass
5
+ from homeassistant.core import HomeAssistant
10
6
  from typing import Protocol
11
7
 
12
8
  __all__ = ['DOMAIN', 'MEDIA_CLASS_MAP', 'MEDIA_MIME_TYPES', 'BrowseMediaSource', 'MediaSource', 'MediaSourceError', 'MediaSourceItem', 'PlayMedia', 'Unresolvable', 'async_browse_media', 'async_resolve_media', 'generate_media_source_id', 'is_media_source_id']
@@ -16,7 +12,3 @@ class MediaSourceProtocol(Protocol):
16
12
 
17
13
  def is_media_source_id(media_content_id: str) -> bool: ...
18
14
  def generate_media_source_id(domain: str, identifier: str) -> str: ...
19
- @bind_hass
20
- async def async_browse_media(hass: HomeAssistant, media_content_id: str | None, *, content_filter: Callable[[BrowseMedia], bool] | None = None) -> BrowseMediaSource: ...
21
- @bind_hass
22
- async def async_resolve_media(hass: HomeAssistant, media_content_id: str, target_media_player: str | None | UndefinedType = ...) -> PlayMedia: ...
@@ -0,0 +1,16 @@
1
+ from .const import DOMAIN as DOMAIN, MEDIA_SOURCE_DATA as MEDIA_SOURCE_DATA
2
+ from .error import UnknownMediaSource as UnknownMediaSource, Unresolvable as Unresolvable
3
+ from .models import BrowseMediaSource as BrowseMediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia
4
+ from collections.abc import Callable as Callable
5
+ from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia
6
+ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
7
+ from homeassistant.helpers.frame import report_usage as report_usage
8
+ from homeassistant.helpers.typing import UNDEFINED as UNDEFINED, UndefinedType as UndefinedType
9
+ from homeassistant.loader import bind_hass as bind_hass
10
+
11
+ @callback
12
+ def _get_media_item(hass: HomeAssistant, media_content_id: str | None, target_media_player: str | None) -> MediaSourceItem: ...
13
+ @bind_hass
14
+ async def async_browse_media(hass: HomeAssistant, media_content_id: str | None, *, content_filter: Callable[[BrowseMedia], bool] | None = None) -> BrowseMediaSource: ...
15
+ @bind_hass
16
+ async def async_resolve_media(hass: HomeAssistant, media_content_id: str, target_media_player: str | None | UndefinedType = ...) -> PlayMedia: ...
@@ -0,0 +1,13 @@
1
+ from .error import Unresolvable as Unresolvable
2
+ from .helper import async_browse_media as async_browse_media, async_resolve_media as async_resolve_media
3
+ from homeassistant.components import frontend as frontend, websocket_api as websocket_api
4
+ from homeassistant.components.media_player import ATTR_MEDIA_CONTENT_ID as ATTR_MEDIA_CONTENT_ID, BrowseError as BrowseError, CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, async_process_play_media_url as async_process_play_media_url
5
+ from homeassistant.components.websocket_api import ActiveConnection as ActiveConnection
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from typing import Any
8
+
9
+ def async_setup(hass: HomeAssistant) -> None: ...
10
+ @websocket_api.async_response
11
+ async def websocket_browse_media(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]) -> None: ...
12
+ @websocket_api.async_response
13
+ async def websocket_resolve_media(hass: HomeAssistant, connection: ActiveConnection, msg: dict[str, Any]) -> None: ...
@@ -1,41 +1,53 @@
1
+ import io
1
2
  from .const import DOMAIN as DOMAIN, MEDIA_CLASS_MAP as MEDIA_CLASS_MAP, MEDIA_MIME_TYPES as MEDIA_MIME_TYPES, MEDIA_SOURCE_DATA as MEDIA_SOURCE_DATA
2
3
  from .error import Unresolvable as Unresolvable
3
4
  from .models import BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia
4
5
  from _typeshed import Incomplete
5
6
  from aiohttp import web
6
- from aiohttp.web_request import FileField
7
7
  from homeassistant.components import http as http, websocket_api as websocket_api
8
8
  from homeassistant.components.http import require_admin as require_admin
9
9
  from homeassistant.components.media_player import BrowseError as BrowseError, MediaClass as MediaClass
10
10
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
11
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
12
  from homeassistant.util import raise_if_invalid_filename as raise_if_invalid_filename, raise_if_invalid_path as raise_if_invalid_path
12
13
  from pathlib import Path
13
- from typing import Any
14
+ from typing import Any, Protocol
14
15
 
15
16
  MAX_UPLOAD_SIZE: Incomplete
16
17
  LOGGER: Incomplete
17
18
 
18
- @callback
19
- def async_setup(hass: HomeAssistant) -> None: ...
19
+ class PathNotSupportedError(HomeAssistantError): ...
20
+ class InvalidFileNameError(HomeAssistantError): ...
21
+
22
+ class UploadedFile(Protocol):
23
+ filename: str
24
+ file: io.IOBase
25
+ content_type: str
26
+
27
+ async def async_get_media_source(hass: HomeAssistant) -> LocalSource: ...
20
28
 
21
29
  class LocalSource(MediaSource):
22
- name: str
23
30
  hass: Incomplete
24
- def __init__(self, hass: HomeAssistant) -> None: ...
31
+ name: Incomplete
32
+ media_dirs: Incomplete
33
+ url_prefix: Incomplete
34
+ def __init__(self, hass: HomeAssistant, domain: str, name: str, media_dirs: dict[str, str], url_prefix: str) -> None: ...
25
35
  @callback
26
36
  def async_full_path(self, source_dir_id: str, location: str) -> Path: ...
27
37
  @callback
28
38
  def async_parse_identifier(self, item: MediaSourceItem) -> tuple[str, str]: ...
39
+ async def async_delete_media(self, item: MediaSourceItem) -> None: ...
40
+ async def async_upload_media(self, target_folder: MediaSourceItem, uploaded_file: UploadedFile) -> str: ...
29
41
  async def async_resolve_media(self, item: MediaSourceItem) -> PlayMedia: ...
30
42
  async def async_browse_media(self, item: MediaSourceItem) -> BrowseMediaSource: ...
31
43
  def _browse_media(self, source_dir_id: str | None, location: str) -> BrowseMediaSource: ...
32
44
  def _build_item_response(self, source_dir_id: str, path: Path, is_child: bool = False) -> BrowseMediaSource | None: ...
33
45
 
34
46
  class LocalMediaView(http.HomeAssistantView):
35
- url: str
36
47
  name: str
37
48
  hass: Incomplete
38
49
  source: Incomplete
50
+ url: Incomplete
39
51
  def __init__(self, hass: HomeAssistant, source: LocalSource) -> None: ...
40
52
  async def _validate_media_path(self, source_dir_id: str, location: str) -> Path: ...
41
53
  async def head(self, request: web.Request, source_dir_id: str, location: str) -> None: ...
@@ -44,13 +56,9 @@ class LocalMediaView(http.HomeAssistantView):
44
56
  class UploadMediaView(http.HomeAssistantView):
45
57
  url: str
46
58
  name: str
47
- hass: Incomplete
48
- source: Incomplete
49
59
  schema: Incomplete
50
- def __init__(self, hass: HomeAssistant, source: LocalSource) -> None: ...
51
60
  @require_admin
52
61
  async def post(self, request: web.Request) -> web.Response: ...
53
- def _move_file(self, target_dir: Path, uploaded_file: FileField) -> None: ...
54
62
 
55
63
  @websocket_api.require_admin
56
64
  @websocket_api.async_response
@@ -6,7 +6,7 @@ from dataclasses import dataclass
6
6
  from datapoint.Forecast import Forecast
7
7
  from homeassistant.components.sensor import EntityCategory as EntityCategory, SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
8
8
  from homeassistant.config_entries import ConfigEntry as ConfigEntry
9
- from homeassistant.const import DEGREE as DEGREE, PERCENTAGE as PERCENTAGE, UV_INDEX as UV_INDEX, UnitOfLength as UnitOfLength, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature
9
+ from homeassistant.const import DEGREE as DEGREE, PERCENTAGE as PERCENTAGE, UV_INDEX as UV_INDEX, UnitOfLength as UnitOfLength, UnitOfPressure as UnitOfPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature
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