homeassistant-stubs 2025.4.4__py3-none-any.whl → 2025.5.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant-stubs/components/adax/__init__.pyi +5 -4
- homeassistant-stubs/components/adax/climate.pyi +25 -17
- homeassistant-stubs/components/adax/const.pyi +2 -0
- homeassistant-stubs/components/adax/coordinator.pyi +21 -0
- homeassistant-stubs/components/androidtv_remote/media_player.pyi +1 -1
- homeassistant-stubs/components/apcupsd/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/apcupsd/coordinator.pyi +2 -0
- homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
- homeassistant-stubs/components/apsystems/coordinator.pyi +1 -0
- homeassistant-stubs/components/apsystems/switch.pyi +1 -1
- homeassistant-stubs/components/asuswrt/router.pyi +2 -3
- homeassistant-stubs/components/automation/__init__.pyi +2 -2
- homeassistant-stubs/components/automation/config.pyi +2 -2
- homeassistant-stubs/components/automation/const.pyi +0 -4
- homeassistant-stubs/components/axis/hub/api.pyi +2 -2
- homeassistant-stubs/components/backup/config.pyi +10 -2
- homeassistant-stubs/components/backup/onboarding.pyi +30 -0
- homeassistant-stubs/components/bluetooth/passive_update_processor.pyi +3 -0
- homeassistant-stubs/components/bluetooth/storage.pyi +1 -1
- homeassistant-stubs/components/bond/config_flow.pyi +3 -0
- homeassistant-stubs/components/bosch_alarm/__init__.pyi +1 -1
- homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +2 -11
- homeassistant-stubs/components/bosch_alarm/config_flow.pyi +5 -1
- homeassistant-stubs/components/bosch_alarm/diagnostics.pyi +11 -0
- homeassistant-stubs/components/bosch_alarm/entity.pyi +29 -0
- homeassistant-stubs/components/bosch_alarm/sensor.pyi +30 -0
- homeassistant-stubs/components/cambridge_audio/media_player.pyi +2 -0
- homeassistant-stubs/components/canary/__init__.pyi +1 -5
- homeassistant-stubs/components/canary/config_flow.pyi +0 -1
- homeassistant-stubs/components/cloud/const.pyi +1 -0
- homeassistant-stubs/components/cloud/http_api.pyi +1 -1
- homeassistant-stubs/components/cloud/onboarding.pyi +35 -0
- homeassistant-stubs/components/cloud/tts.pyi +4 -1
- homeassistant-stubs/components/comelit/__init__.pyi +1 -0
- homeassistant-stubs/components/comelit/alarm_control_panel.pyi +0 -1
- homeassistant-stubs/components/comelit/binary_sensor.pyi +0 -1
- homeassistant-stubs/components/comelit/climate.pyi +2 -7
- homeassistant-stubs/components/comelit/config_flow.pyi +1 -0
- homeassistant-stubs/components/comelit/coordinator.pyi +3 -2
- homeassistant-stubs/components/comelit/cover.pyi +2 -7
- homeassistant-stubs/components/comelit/entity.pyi +11 -0
- homeassistant-stubs/components/comelit/humidifier.pyi +2 -6
- homeassistant-stubs/components/comelit/light.pyi +2 -9
- homeassistant-stubs/components/comelit/sensor.pyi +2 -7
- homeassistant-stubs/components/comelit/switch.pyi +2 -6
- homeassistant-stubs/components/comelit/utils.pyi +5 -0
- homeassistant-stubs/components/command_line/__init__.pyi +1 -1
- homeassistant-stubs/components/command_line/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/command_line/cover.pyi +2 -2
- homeassistant-stubs/components/command_line/sensor.pyi +2 -2
- homeassistant-stubs/components/command_line/switch.pyi +2 -2
- homeassistant-stubs/components/config/config_entries.pyi +3 -1
- homeassistant-stubs/components/demo/light.pyi +3 -2
- homeassistant-stubs/components/demo/media_player.pyi +4 -0
- homeassistant-stubs/components/device_tracker/config_entry.pyi +2 -2
- homeassistant-stubs/components/devolo_home_control/__init__.pyi +2 -2
- homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +1 -2
- homeassistant-stubs/components/dhcp/__init__.pyi +6 -13
- homeassistant-stubs/components/dhcp/const.pyi +5 -0
- homeassistant-stubs/components/dhcp/helpers.pyi +8 -0
- homeassistant-stubs/components/dhcp/models.pyi +25 -0
- homeassistant-stubs/components/dhcp/websocket_api.pyi +13 -0
- homeassistant-stubs/components/ecovacs/image.pyi +1 -0
- homeassistant-stubs/components/eheimdigital/number.pyi +38 -0
- homeassistant-stubs/components/eheimdigital/sensor.pyi +32 -0
- homeassistant-stubs/components/eheimdigital/switch.pyi +26 -0
- homeassistant-stubs/components/eheimdigital/time.pyi +37 -0
- homeassistant-stubs/components/elevenlabs/tts.pyi +2 -2
- homeassistant-stubs/components/energy/sensor.pyi +5 -0
- homeassistant-stubs/components/enphase_envoy/config_flow.pyi +3 -1
- homeassistant-stubs/components/enphase_envoy/coordinator.pyi +12 -1
- homeassistant-stubs/components/esphome/__init__.pyi +5 -4
- homeassistant-stubs/components/esphome/alarm_control_panel.pyi +1 -0
- homeassistant-stubs/components/esphome/assist_satellite.pyi +7 -6
- homeassistant-stubs/components/esphome/binary_sensor.pyi +5 -13
- homeassistant-stubs/components/esphome/button.pyi +2 -0
- homeassistant-stubs/components/esphome/camera.pyi +2 -0
- homeassistant-stubs/components/esphome/climate.pyi +1 -0
- homeassistant-stubs/components/esphome/config_flow.pyi +26 -5
- homeassistant-stubs/components/esphome/const.pyi +2 -1
- homeassistant-stubs/components/esphome/coordinator.pyi +4 -3
- homeassistant-stubs/components/esphome/cover.pyi +2 -0
- homeassistant-stubs/components/esphome/dashboard.pyi +1 -1
- homeassistant-stubs/components/esphome/date.pyi +2 -0
- homeassistant-stubs/components/esphome/datetime.pyi +2 -0
- homeassistant-stubs/components/esphome/diagnostics.pyi +2 -0
- homeassistant-stubs/components/esphome/entity.pyi +12 -9
- homeassistant-stubs/components/esphome/event.pyi +2 -0
- homeassistant-stubs/components/esphome/fan.pyi +4 -3
- homeassistant-stubs/components/esphome/ffmpeg_proxy.pyi +10 -2
- homeassistant-stubs/components/esphome/light.pyi +8 -7
- homeassistant-stubs/components/esphome/lock.pyi +6 -4
- homeassistant-stubs/components/esphome/manager.pyi +7 -3
- homeassistant-stubs/components/esphome/media_player.pyi +2 -1
- homeassistant-stubs/components/esphome/number.pyi +1 -0
- homeassistant-stubs/components/esphome/repairs.pyi +21 -2
- homeassistant-stubs/components/esphome/select.pyi +3 -2
- homeassistant-stubs/components/esphome/sensor.pyi +4 -2
- homeassistant-stubs/components/esphome/switch.pyi +3 -1
- homeassistant-stubs/components/esphome/text.pyi +1 -0
- homeassistant-stubs/components/esphome/time.pyi +2 -0
- homeassistant-stubs/components/esphome/update.pyi +8 -9
- homeassistant-stubs/components/esphome/valve.pyi +3 -1
- homeassistant-stubs/components/fritz/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/fritz/button.pyi +1 -0
- homeassistant-stubs/components/fritz/coordinator.pyi +3 -4
- homeassistant-stubs/components/fritz/device_tracker.pyi +1 -0
- homeassistant-stubs/components/fritz/image.pyi +1 -0
- homeassistant-stubs/components/fritz/sensor.pyi +1 -0
- homeassistant-stubs/components/fritz/switch.pyi +1 -0
- homeassistant-stubs/components/fritz/update.pyi +1 -0
- homeassistant-stubs/components/fritzbox/binary_sensor.pyi +2 -5
- homeassistant-stubs/components/fritzbox/climate.pyi +4 -3
- homeassistant-stubs/components/fritzbox/coordinator.pyi +1 -1
- homeassistant-stubs/components/fritzbox/sensor.pyi +3 -6
- homeassistant-stubs/components/heos/const.pyi +4 -0
- homeassistant-stubs/components/heos/media_player.pyi +5 -4
- homeassistant-stubs/components/heos/services.pyi +22 -2
- homeassistant-stubs/components/history/websocket_api.pyi +1 -1
- homeassistant-stubs/components/history_stats/data.pyi +2 -1
- homeassistant-stubs/components/home_connect/__init__.pyi +0 -1
- homeassistant-stubs/components/home_connect/binary_sensor.pyi +2 -13
- homeassistant-stubs/components/home_connect/coordinator.pyi +5 -0
- homeassistant-stubs/components/home_connect/repairs.pyi +10 -0
- homeassistant-stubs/components/home_connect/select.pyi +6 -2
- homeassistant-stubs/components/home_connect/sensor.pyi +5 -3
- homeassistant-stubs/components/homee/climate.pyi +47 -0
- homeassistant-stubs/components/homee/const.pyi +1 -0
- homeassistant-stubs/components/homee/number.pyi +12 -4
- homeassistant-stubs/components/homekit/__init__.pyi +5 -3
- homeassistant-stubs/components/homekit/accessories.pyi +2 -1
- homeassistant-stubs/components/homekit/const.pyi +13 -0
- homeassistant-stubs/components/homekit/type_air_purifiers.pyi +69 -0
- homeassistant-stubs/components/homekit/type_fans.pyi +7 -4
- homeassistant-stubs/components/homekit/type_media_players.pyi +2 -1
- homeassistant-stubs/components/homekit/type_switches.pyi +1 -1
- homeassistant-stubs/components/homekit/type_triggers.pyi +1 -1
- homeassistant-stubs/components/homekit/util.pyi +2 -1
- homeassistant-stubs/components/http/headers.pyi +6 -0
- homeassistant-stubs/components/huawei_lte/binary_sensor.pyi +3 -1
- homeassistant-stubs/components/huawei_lte/config_flow.pyi +1 -1
- homeassistant-stubs/components/huawei_lte/entity.pyi +0 -3
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +1 -0
- homeassistant-stubs/components/husqvarna_automower/sensor.pyi +2 -1
- homeassistant-stubs/components/hyperion/__init__.pyi +12 -5
- homeassistant-stubs/components/hyperion/camera.pyi +3 -4
- homeassistant-stubs/components/hyperion/const.pyi +0 -3
- homeassistant-stubs/components/hyperion/light.pyi +4 -6
- homeassistant-stubs/components/hyperion/sensor.pyi +3 -4
- homeassistant-stubs/components/hyperion/switch.pyi +3 -4
- homeassistant-stubs/components/incomfort/climate.pyi +1 -2
- homeassistant-stubs/components/iron_os/__init__.pyi +1 -3
- homeassistant-stubs/components/iron_os/config_flow.pyi +3 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +4 -2
- homeassistant-stubs/components/iron_os/entity.pyi +2 -0
- homeassistant-stubs/components/iron_os/update.pyi +4 -2
- homeassistant-stubs/components/isy994/entity.pyi +1 -0
- homeassistant-stubs/components/isy994/services.pyi +1 -0
- homeassistant-stubs/components/isy994/switch.pyi +1 -1
- homeassistant-stubs/components/jewish_calendar/config_flow.pyi +1 -2
- homeassistant-stubs/components/jewish_calendar/const.pyi +1 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +0 -1
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +1 -0
- homeassistant-stubs/components/jewish_calendar/service.pyi +4 -3
- homeassistant-stubs/components/kulersky/__init__.pyi +14 -0
- homeassistant-stubs/components/kulersky/config_flow.pyi +17 -0
- homeassistant-stubs/components/kulersky/const.pyi +4 -0
- homeassistant-stubs/components/kulersky/light.pyi +34 -0
- homeassistant-stubs/components/lamarzocco/__init__.pyi +5 -3
- homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +3 -7
- homeassistant-stubs/components/lamarzocco/calendar.pyi +3 -4
- homeassistant-stubs/components/lamarzocco/config_flow.pyi +5 -4
- homeassistant-stubs/components/lamarzocco/coordinator.pyi +16 -16
- homeassistant-stubs/components/lamarzocco/diagnostics.pyi +3 -8
- homeassistant-stubs/components/lamarzocco/entity.pyi +1 -6
- homeassistant-stubs/components/lamarzocco/number.pyi +4 -29
- homeassistant-stubs/components/lamarzocco/select.pyi +3 -8
- homeassistant-stubs/components/lamarzocco/sensor.pyi +11 -24
- homeassistant-stubs/components/lamarzocco/switch.pyi +6 -5
- homeassistant-stubs/components/lamarzocco/update.pyi +4 -1
- homeassistant-stubs/components/lcn/__init__.pyi +4 -3
- homeassistant-stubs/components/lcn/entity.pyi +3 -3
- homeassistant-stubs/components/lcn/helpers.pyi +2 -2
- homeassistant-stubs/components/lcn/websocket.pyi +1 -1
- homeassistant-stubs/components/linkplay/__init__.pyi +1 -1
- homeassistant-stubs/components/linkplay/const.pyi +8 -2
- homeassistant-stubs/components/linkplay/media_player.pyi +6 -4
- homeassistant-stubs/components/logbook/websocket_api.pyi +1 -1
- homeassistant-stubs/components/logger/__init__.pyi +1 -1
- homeassistant-stubs/components/logger/helpers.pyi +4 -2
- homeassistant-stubs/components/logger/websocket_api.pyi +1 -1
- homeassistant-stubs/components/matter/entity.pyi +1 -0
- homeassistant-stubs/components/matter/select.pyi +1 -1
- homeassistant-stubs/components/matter/sensor.pyi +3 -1
- homeassistant-stubs/components/matter/switch.pyi +20 -0
- homeassistant-stubs/components/matter/water_heater.pyi +39 -0
- homeassistant-stubs/components/mcp/application_credentials.pyi +12 -0
- homeassistant-stubs/components/mcp/config_flow.pyi +27 -6
- homeassistant-stubs/components/mcp/const.pyi +3 -0
- homeassistant-stubs/components/mcp/coordinator.pyi +8 -5
- homeassistant-stubs/components/media_player/__init__.pyi +7 -3
- homeassistant-stubs/components/media_player/browse_media.pyi +16 -1
- homeassistant-stubs/components/media_player/const.pyi +4 -0
- homeassistant-stubs/components/media_player/errors.pyi +1 -0
- homeassistant-stubs/components/media_source/error.pyi +1 -0
- homeassistant-stubs/components/met_eireann/__init__.pyi +2 -2
- homeassistant-stubs/components/met_eireann/weather.pyi +3 -3
- homeassistant-stubs/components/mjpeg/config_flow.pyi +2 -2
- homeassistant-stubs/components/motionmount/select.pyi +1 -1
- homeassistant-stubs/components/mqtt/config_flow.pyi +18 -4
- homeassistant-stubs/components/mqtt/const.pyi +3 -0
- homeassistant-stubs/components/mqtt/device_tracker.pyi +11 -14
- homeassistant-stubs/components/mqtt/entity.pyi +3 -0
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +1 -2
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +3 -2
- homeassistant-stubs/components/music_assistant/media_browser.pyi +17 -2
- homeassistant-stubs/components/music_assistant/media_player.pyi +3 -2
- homeassistant-stubs/components/network/__init__.pyi +2 -0
- homeassistant-stubs/components/ntfy/__init__.pyi +16 -0
- homeassistant-stubs/components/ntfy/config_flow.pyi +29 -0
- homeassistant-stubs/components/ntfy/const.pyi +6 -0
- homeassistant-stubs/components/ntfy/diagnostics.pyi +7 -0
- homeassistant-stubs/components/ntfy/notify.pyi +25 -0
- homeassistant-stubs/components/nut/__init__.pyi +7 -3
- homeassistant-stubs/components/nut/config_flow.pyi +11 -14
- homeassistant-stubs/components/nut/const.pyi +0 -1
- homeassistant-stubs/components/nut/device_action.pyi +5 -1
- homeassistant-stubs/components/nut/sensor.pyi +6 -3
- homeassistant-stubs/components/ohme/__init__.pyi +15 -0
- homeassistant-stubs/components/ohme/button.pyi +26 -0
- homeassistant-stubs/components/ohme/config_flow.pyi +17 -0
- homeassistant-stubs/components/ohme/const.pyi +5 -0
- homeassistant-stubs/components/ohme/coordinator.pyi +44 -0
- homeassistant-stubs/components/ohme/diagnostics.pyi +5 -0
- homeassistant-stubs/components/ohme/entity.pyi +23 -0
- homeassistant-stubs/components/ohme/number.pyi +30 -0
- homeassistant-stubs/components/ohme/select.pyi +33 -0
- homeassistant-stubs/components/ohme/sensor.pyi +26 -0
- homeassistant-stubs/components/ohme/services.pyi +19 -0
- homeassistant-stubs/components/ohme/switch.pyi +45 -0
- homeassistant-stubs/components/ohme/time.pyi +30 -0
- homeassistant-stubs/components/onboarding/__init__.pyi +1 -0
- homeassistant-stubs/components/onboarding/views.pyi +29 -43
- homeassistant-stubs/components/oncue/__init__.pyi +5 -11
- homeassistant-stubs/components/oncue/config_flow.pyi +2 -13
- homeassistant-stubs/components/onewire/sensor.pyi +1 -2
- homeassistant-stubs/components/onkyo/config_flow.pyi +2 -3
- homeassistant-stubs/components/onkyo/const.pyi +0 -2
- homeassistant-stubs/components/onkyo/media_player.pyi +3 -14
- homeassistant-stubs/components/openai_conversation/config_flow.pyi +3 -3
- homeassistant-stubs/components/openai_conversation/const.pyi +1 -0
- homeassistant-stubs/components/openai_conversation/conversation.pyi +1 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_heater_with_adjustable_temperature_setpoint.pyi +4 -1
- homeassistant-stubs/components/overkiz/climate/atlantic_electrical_towel_dryer.pyi +2 -1
- homeassistant-stubs/components/overkiz/config_flow.pyi +1 -7
- homeassistant-stubs/components/overkiz/entity.pyi +2 -1
- homeassistant-stubs/components/overkiz/number.pyi +1 -1
- homeassistant-stubs/components/overkiz/sensor.pyi +1 -1
- homeassistant-stubs/components/pegel_online/__init__.pyi +13 -0
- homeassistant-stubs/components/pegel_online/config_flow.pyi +15 -0
- homeassistant-stubs/components/pegel_online/const.pyi +6 -0
- homeassistant-stubs/components/pegel_online/coordinator.pyi +16 -0
- homeassistant-stubs/components/pegel_online/diagnostics.pyi +5 -0
- homeassistant-stubs/components/pegel_online/entity.pyi +12 -0
- homeassistant-stubs/components/pegel_online/sensor.pyi +28 -0
- homeassistant-stubs/components/powerwall/sensor.pyi +0 -1
- homeassistant-stubs/components/recorder/core.pyi +2 -0
- homeassistant-stubs/components/recorder/entity_registry.pyi +2 -1
- homeassistant-stubs/components/recorder/tasks.pyi +2 -1
- homeassistant-stubs/components/remote_calendar/calendar.pyi +2 -0
- homeassistant-stubs/components/remote_calendar/config_flow.pyi +1 -0
- homeassistant-stubs/components/remote_calendar/coordinator.pyi +1 -0
- homeassistant-stubs/components/remote_calendar/ics.pyi +10 -0
- homeassistant-stubs/components/renault/binary_sensor.pyi +8 -2
- homeassistant-stubs/components/renault/config_flow.pyi +2 -1
- homeassistant-stubs/components/renault/const.pyi +2 -1
- homeassistant-stubs/components/renault/coordinator.pyi +4 -1
- homeassistant-stubs/components/renault/entity.pyi +2 -0
- homeassistant-stubs/components/renault/renault_hub.pyi +5 -2
- homeassistant-stubs/components/renault/renault_vehicle.pyi +5 -2
- homeassistant-stubs/components/renault/services.pyi +5 -0
- homeassistant-stubs/components/rest/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/rest/schema.pyi +1 -1
- homeassistant-stubs/components/rest/sensor.pyi +2 -2
- homeassistant-stubs/components/rest/switch.pyi +4 -3
- homeassistant-stubs/components/roborock/__init__.pyi +1 -0
- homeassistant-stubs/components/roborock/config_flow.pyi +1 -0
- homeassistant-stubs/components/samsungtv/__init__.pyi +6 -7
- homeassistant-stubs/components/samsungtv/config_flow.pyi +1 -1
- homeassistant-stubs/components/samsungtv/entity.pyi +3 -2
- homeassistant-stubs/components/samsungtv/media_player.pyi +1 -2
- homeassistant-stubs/components/samsungtv/remote.pyi +2 -2
- homeassistant-stubs/components/scrape/__init__.pyi +1 -1
- homeassistant-stubs/components/scrape/sensor.pyi +4 -5
- homeassistant-stubs/components/shelly/__init__.pyi +1 -0
- homeassistant-stubs/components/shelly/climate.pyi +2 -1
- homeassistant-stubs/components/shelly/const.pyi +2 -0
- homeassistant-stubs/components/shelly/coordinator.pyi +1 -0
- homeassistant-stubs/components/shelly/entity.pyi +5 -2
- homeassistant-stubs/components/shelly/number.pyi +4 -3
- homeassistant-stubs/components/shelly/repairs.pyi +19 -0
- homeassistant-stubs/components/shelly/select.pyi +3 -1
- homeassistant-stubs/components/shelly/text.pyi +4 -1
- homeassistant-stubs/components/shelly/utils.pyi +2 -3
- homeassistant-stubs/components/smlight/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/smlight/button.pyi +1 -0
- homeassistant-stubs/components/smlight/sensor.pyi +2 -0
- homeassistant-stubs/components/smlight/switch.pyi +1 -0
- homeassistant-stubs/components/smlight/update.pyi +3 -1
- homeassistant-stubs/components/smtp/__init__.pyi +0 -0
- homeassistant-stubs/components/smtp/const.pyi +17 -0
- homeassistant-stubs/components/smtp/notify.pyi +47 -0
- homeassistant-stubs/components/sql/__init__.pyi +1 -1
- homeassistant-stubs/components/sql/sensor.pyi +4 -4
- homeassistant-stubs/components/ssdp/__init__.pyi +6 -96
- homeassistant-stubs/components/ssdp/common.pyi +5 -0
- homeassistant-stubs/components/ssdp/const.pyi +3 -0
- homeassistant-stubs/components/ssdp/scanner.pyi +75 -0
- homeassistant-stubs/components/ssdp/server.pyi +30 -0
- homeassistant-stubs/components/ssdp/websocket_api.pyi +16 -0
- homeassistant-stubs/components/switcher_kis/button.pyi +2 -1
- homeassistant-stubs/components/switcher_kis/climate.pyi +2 -4
- homeassistant-stubs/components/switcher_kis/config_flow.pyi +3 -2
- homeassistant-stubs/components/switcher_kis/cover.pyi +0 -2
- homeassistant-stubs/components/switcher_kis/entity.pyi +4 -0
- homeassistant-stubs/components/switcher_kis/light.pyi +3 -8
- homeassistant-stubs/components/switcher_kis/sensor.pyi +13 -6
- homeassistant-stubs/components/switcher_kis/switch.pyi +9 -15
- homeassistant-stubs/components/switcher_kis/utils.pyi +1 -1
- homeassistant-stubs/components/synology_dsm/common.pyi +3 -0
- homeassistant-stubs/components/synology_dsm/sensor.pyi +9 -1
- homeassistant-stubs/components/todo/__init__.pyi +1 -0
- homeassistant-stubs/components/tplink_omada/config_flow.pyi +1 -2
- homeassistant-stubs/components/tractive/__init__.pyi +1 -1
- homeassistant-stubs/components/tractive/binary_sensor.pyi +9 -3
- homeassistant-stubs/components/tractive/const.pyi +1 -0
- homeassistant-stubs/components/tractive/device_tracker.pyi +1 -1
- homeassistant-stubs/components/tts/__init__.pyi +22 -13
- homeassistant-stubs/components/tts/legacy.pyi +1 -0
- homeassistant-stubs/components/tts/media_source.pyi +5 -2
- homeassistant-stubs/components/unifi/hub/api.pyi +2 -2
- homeassistant-stubs/components/uptimerobot/__init__.pyi +4 -5
- homeassistant-stubs/components/uptimerobot/binary_sensor.pyi +4 -4
- homeassistant-stubs/components/uptimerobot/coordinator.pyi +3 -2
- homeassistant-stubs/components/uptimerobot/diagnostics.pyi +2 -4
- homeassistant-stubs/components/uptimerobot/entity.pyi +0 -2
- homeassistant-stubs/components/uptimerobot/sensor.pyi +3 -4
- homeassistant-stubs/components/uptimerobot/switch.pyi +5 -4
- homeassistant-stubs/components/vodafone_station/__init__.pyi +1 -0
- homeassistant-stubs/components/vodafone_station/config_flow.pyi +1 -0
- homeassistant-stubs/components/vodafone_station/coordinator.pyi +2 -1
- homeassistant-stubs/components/vodafone_station/utils.pyi +5 -0
- homeassistant-stubs/components/websocket_api/commands.pyi +3 -1
- homeassistant-stubs/components/websocket_api/http.pyi +4 -1
- homeassistant-stubs/components/wemo/__init__.pyi +1 -1
- homeassistant-stubs/components/wemo/coordinator.pyi +1 -1
- homeassistant-stubs/components/wemo/models.pyi +3 -4
- homeassistant-stubs/components/workday/config_flow.pyi +1 -1
- homeassistant-stubs/components/xiaomi_ble/const.pyi +2 -0
- homeassistant-stubs/components/xiaomi_ble/device_trigger.pyi +1 -1
- homeassistant-stubs/components/xiaomi_ble/sensor.pyi +2 -2
- homeassistant-stubs/components/zeroconf/__init__.pyi +6 -49
- homeassistant-stubs/components/zeroconf/const.pyi +3 -0
- homeassistant-stubs/components/zeroconf/discovery.pyi +63 -0
- homeassistant-stubs/components/zeroconf/websocket_api.pyi +40 -0
- homeassistant-stubs/components/zone/__init__.pyi +4 -1
- homeassistant-stubs/components/zwave_js/__init__.pyi +2 -2
- homeassistant-stubs/components/zwave_js/api.pyi +9 -3
- homeassistant-stubs/components/zwave_js/config_flow.pyi +42 -59
- homeassistant-stubs/components/zwave_js/helpers.pyi +2 -1
- homeassistant-stubs/config_entries.pyi +13 -9
- homeassistant-stubs/const.pyi +5 -0
- homeassistant-stubs/core.pyi +1 -3
- homeassistant-stubs/core_config.pyi +1 -1
- homeassistant-stubs/data_entry_flow.pyi +5 -1
- homeassistant-stubs/helpers/aiohttp_client.pyi +9 -1
- homeassistant-stubs/helpers/area_registry.pyi +5 -1
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +1 -1
- homeassistant-stubs/helpers/config_validation.pyi +1 -0
- homeassistant-stubs/helpers/device_registry.pyi +1 -3
- homeassistant-stubs/helpers/entity.pyi +1 -1
- homeassistant-stubs/helpers/entity_platform.pyi +3 -3
- homeassistant-stubs/helpers/entity_registry.pyi +6 -6
- homeassistant-stubs/helpers/event.pyi +2 -0
- homeassistant-stubs/helpers/floor_registry.pyi +12 -3
- homeassistant-stubs/helpers/llm.pyi +24 -1
- homeassistant-stubs/helpers/network.pyi +1 -1
- homeassistant-stubs/helpers/script.pyi +2 -1
- homeassistant-stubs/helpers/template.pyi +1 -0
- homeassistant-stubs/helpers/trigger_template_entity.pyi +17 -2
- homeassistant-stubs/loader.pyi +2 -11
- homeassistant-stubs/setup.pyi +7 -6
- homeassistant-stubs/util/ssl.pyi +2 -0
- {homeassistant_stubs-2025.4.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/METADATA +3 -3
- {homeassistant_stubs-2025.4.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/RECORD +397 -339
- homeassistant-stubs/components/oncue/binary_sensor.pyi +0 -16
- homeassistant-stubs/components/oncue/const.pyi +0 -6
- homeassistant-stubs/components/oncue/entity.pyi +0 -20
- homeassistant-stubs/components/oncue/sensor.pyi +0 -21
- homeassistant-stubs/components/oncue/types.pyi +0 -5
- {homeassistant_stubs-2025.4.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.4.4.dist-info → homeassistant_stubs-2025.5.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
import contextvars
|
2
|
+
from collections.abc import Generator
|
3
|
+
from contextlib import contextmanager
|
4
|
+
from homeassistant.components.application_credentials import AuthorizationServer as AuthorizationServer
|
5
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
|
+
|
7
|
+
CONF_ACTIVE_AUTHORIZATION_SERVER: str
|
8
|
+
_mcp_context: contextvars.ContextVar[AuthorizationServer]
|
9
|
+
|
10
|
+
@contextmanager
|
11
|
+
def authorization_server_context(authorization_server: AuthorizationServer) -> Generator[None]: ...
|
12
|
+
async def async_get_authorization_server(hass: HomeAssistant) -> AuthorizationServer: ...
|
@@ -1,20 +1,41 @@
|
|
1
|
-
from .
|
2
|
-
from .
|
1
|
+
from . import async_get_config_entry_implementation as async_get_config_entry_implementation
|
2
|
+
from .application_credentials import authorization_server_context as authorization_server_context
|
3
|
+
from .const import CONF_ACCESS_TOKEN as CONF_ACCESS_TOKEN, CONF_AUTHORIZATION_URL as CONF_AUTHORIZATION_URL, CONF_TOKEN_URL as CONF_TOKEN_URL, DOMAIN as DOMAIN
|
4
|
+
from .coordinator import TokenManager as TokenManager, mcp_client as mcp_client
|
3
5
|
from _typeshed import Incomplete
|
4
|
-
from
|
5
|
-
from homeassistant.
|
6
|
+
from collections.abc import Mapping
|
7
|
+
from homeassistant.components.application_credentials import AuthorizationServer as AuthorizationServer
|
8
|
+
from homeassistant.config_entries import ConfigFlowResult as ConfigFlowResult, SOURCE_REAUTH as SOURCE_REAUTH
|
9
|
+
from homeassistant.const import CONF_TOKEN as CONF_TOKEN, CONF_URL as CONF_URL
|
6
10
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
7
11
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
12
|
+
from homeassistant.helpers.config_entry_oauth2_flow import AbstractOAuth2FlowHandler as AbstractOAuth2FlowHandler, async_get_implementations as async_get_implementations
|
8
13
|
from typing import Any
|
9
14
|
|
10
15
|
_LOGGER: Incomplete
|
11
16
|
STEP_USER_DATA_SCHEMA: Incomplete
|
17
|
+
OAUTH_DISCOVERY_ENDPOINT: str
|
18
|
+
MCP_DISCOVERY_HEADERS: Incomplete
|
12
19
|
|
13
|
-
async def
|
20
|
+
async def async_discover_oauth_config(hass: HomeAssistant, mcp_server_url: str) -> AuthorizationServer: ...
|
21
|
+
async def validate_input(hass: HomeAssistant, data: dict[str, Any], token_manager: TokenManager | None = None) -> dict[str, Any]: ...
|
14
22
|
|
15
|
-
class ModelContextProtocolConfigFlow(
|
23
|
+
class ModelContextProtocolConfigFlow(AbstractOAuth2FlowHandler, domain=DOMAIN):
|
16
24
|
VERSION: int
|
25
|
+
DOMAIN = DOMAIN
|
26
|
+
logger = _LOGGER
|
27
|
+
data: dict[str, Any]
|
28
|
+
def __init__(self) -> None: ...
|
17
29
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
30
|
+
async def async_step_auth_discovery(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
31
|
+
def authorization_server(self) -> AuthorizationServer: ...
|
32
|
+
async def async_step_credentials_choice(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
33
|
+
async def async_step_new_credentials(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
34
|
+
async def async_step_pick_implementation(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
35
|
+
async def async_oauth_create_entry(self, data: dict) -> ConfigFlowResult: ...
|
36
|
+
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
37
|
+
flow_impl: Incomplete
|
38
|
+
async def async_step_reauth_confirm(self, user_input: Mapping[str, Any] | None = None) -> ConfigFlowResult: ...
|
18
39
|
|
19
40
|
class InvalidUrl(HomeAssistantError): ...
|
20
41
|
class CannotConnect(HomeAssistantError): ...
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import voluptuous as vol
|
2
2
|
from .const import DOMAIN as DOMAIN
|
3
3
|
from _typeshed import Incomplete
|
4
|
-
from collections.abc import AsyncGenerator
|
4
|
+
from collections.abc import AsyncGenerator, Awaitable, Callable
|
5
5
|
from contextlib import asynccontextmanager
|
6
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
7
7
|
from homeassistant.const import CONF_URL as CONF_URL
|
8
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
|
-
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
9
|
+
from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, HomeAssistantError as HomeAssistantError
|
10
10
|
from homeassistant.helpers import llm as llm
|
11
11
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
12
12
|
from homeassistant.util.json import JsonObjectType as JsonObjectType
|
@@ -15,19 +15,22 @@ from mcp.client.session import ClientSession
|
|
15
15
|
_LOGGER: Incomplete
|
16
16
|
UPDATE_INTERVAL: Incomplete
|
17
17
|
TIMEOUT: int
|
18
|
+
TokenManager = Callable[[], Awaitable[str]]
|
18
19
|
|
19
20
|
@asynccontextmanager
|
20
|
-
async def mcp_client(url: str) -> AsyncGenerator[ClientSession]: ...
|
21
|
+
async def mcp_client(url: str, token_manager: TokenManager | None = None) -> AsyncGenerator[ClientSession]: ...
|
21
22
|
|
22
23
|
class ModelContextProtocolTool(llm.Tool):
|
23
24
|
name: Incomplete
|
24
25
|
description: Incomplete
|
25
26
|
parameters: Incomplete
|
26
27
|
server_url: Incomplete
|
27
|
-
|
28
|
+
token_manager: Incomplete
|
29
|
+
def __init__(self, name: str, description: str | None, parameters: vol.Schema, server_url: str, token_manager: TokenManager | None = None) -> None: ...
|
28
30
|
async def async_call(self, hass: HomeAssistant, tool_input: llm.ToolInput, llm_context: llm.LLMContext) -> JsonObjectType: ...
|
29
31
|
|
30
32
|
class ModelContextProtocolCoordinator(DataUpdateCoordinator[list[llm.Tool]]):
|
31
33
|
config_entry: ConfigEntry
|
32
|
-
|
34
|
+
token_manager: Incomplete
|
35
|
+
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry, token_manager: TokenManager | None = None) -> None: ...
|
33
36
|
async def _async_update_data(self) -> list[llm.Tool]: ...
|
@@ -2,9 +2,9 @@ import asyncio
|
|
2
2
|
import collections
|
3
3
|
import datetime as dt
|
4
4
|
import logging
|
5
|
-
from .browse_media import BrowseMedia as BrowseMedia, async_process_play_media_url as async_process_play_media_url
|
6
|
-
from .const import ATTR_APP_ID as ATTR_APP_ID, ATTR_APP_NAME as ATTR_APP_NAME, ATTR_ENTITY_PICTURE_LOCAL as ATTR_ENTITY_PICTURE_LOCAL, ATTR_GROUP_MEMBERS as ATTR_GROUP_MEMBERS, ATTR_INPUT_SOURCE as ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST as ATTR_INPUT_SOURCE_LIST, ATTR_MEDIA_ALBUM_ARTIST as ATTR_MEDIA_ALBUM_ARTIST, ATTR_MEDIA_ALBUM_NAME as ATTR_MEDIA_ALBUM_NAME, ATTR_MEDIA_ANNOUNCE as ATTR_MEDIA_ANNOUNCE, ATTR_MEDIA_ARTIST as ATTR_MEDIA_ARTIST, ATTR_MEDIA_CHANNEL as ATTR_MEDIA_CHANNEL, ATTR_MEDIA_CONTENT_ID as ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE as ATTR_MEDIA_CONTENT_TYPE, ATTR_MEDIA_DURATION as ATTR_MEDIA_DURATION, ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EPISODE as ATTR_MEDIA_EPISODE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, ATTR_MEDIA_PLAYLIST as ATTR_MEDIA_PLAYLIST, ATTR_MEDIA_POSITION as ATTR_MEDIA_POSITION, ATTR_MEDIA_POSITION_UPDATED_AT as ATTR_MEDIA_POSITION_UPDATED_AT, ATTR_MEDIA_REPEAT as ATTR_MEDIA_REPEAT, ATTR_MEDIA_SEASON as ATTR_MEDIA_SEASON, ATTR_MEDIA_SEEK_POSITION as ATTR_MEDIA_SEEK_POSITION, ATTR_MEDIA_SERIES_TITLE as ATTR_MEDIA_SERIES_TITLE, ATTR_MEDIA_SHUFFLE as ATTR_MEDIA_SHUFFLE, ATTR_MEDIA_TITLE as ATTR_MEDIA_TITLE, ATTR_MEDIA_TRACK as ATTR_MEDIA_TRACK, ATTR_MEDIA_VOLUME_LEVEL as ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED as ATTR_MEDIA_VOLUME_MUTED, ATTR_SOUND_MODE as ATTR_SOUND_MODE, ATTR_SOUND_MODE_LIST as ATTR_SOUND_MODE_LIST, CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, DOMAIN as DOMAIN, MediaClass as MediaClass, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType, REPEAT_MODES as REPEAT_MODES, RepeatMode as RepeatMode, SERVICE_BROWSE_MEDIA as SERVICE_BROWSE_MEDIA, SERVICE_CLEAR_PLAYLIST as SERVICE_CLEAR_PLAYLIST, SERVICE_JOIN as SERVICE_JOIN, SERVICE_PLAY_MEDIA as SERVICE_PLAY_MEDIA, SERVICE_SELECT_SOUND_MODE as SERVICE_SELECT_SOUND_MODE, SERVICE_SELECT_SOURCE as SERVICE_SELECT_SOURCE, SERVICE_UNJOIN as SERVICE_UNJOIN, _DEPRECATED_MEDIA_CLASS_DIRECTORY as _DEPRECATED_MEDIA_CLASS_DIRECTORY, _DEPRECATED_SUPPORT_BROWSE_MEDIA as _DEPRECATED_SUPPORT_BROWSE_MEDIA, _DEPRECATED_SUPPORT_CLEAR_PLAYLIST as _DEPRECATED_SUPPORT_CLEAR_PLAYLIST, _DEPRECATED_SUPPORT_GROUPING as _DEPRECATED_SUPPORT_GROUPING, _DEPRECATED_SUPPORT_NEXT_TRACK as _DEPRECATED_SUPPORT_NEXT_TRACK, _DEPRECATED_SUPPORT_PAUSE as _DEPRECATED_SUPPORT_PAUSE, _DEPRECATED_SUPPORT_PLAY as _DEPRECATED_SUPPORT_PLAY, _DEPRECATED_SUPPORT_PLAY_MEDIA as _DEPRECATED_SUPPORT_PLAY_MEDIA, _DEPRECATED_SUPPORT_PREVIOUS_TRACK as _DEPRECATED_SUPPORT_PREVIOUS_TRACK, _DEPRECATED_SUPPORT_REPEAT_SET as _DEPRECATED_SUPPORT_REPEAT_SET, _DEPRECATED_SUPPORT_SEEK as _DEPRECATED_SUPPORT_SEEK, _DEPRECATED_SUPPORT_SELECT_SOUND_MODE as _DEPRECATED_SUPPORT_SELECT_SOUND_MODE, _DEPRECATED_SUPPORT_SELECT_SOURCE as _DEPRECATED_SUPPORT_SELECT_SOURCE, _DEPRECATED_SUPPORT_SHUFFLE_SET as _DEPRECATED_SUPPORT_SHUFFLE_SET, _DEPRECATED_SUPPORT_STOP as _DEPRECATED_SUPPORT_STOP, _DEPRECATED_SUPPORT_TURN_OFF as _DEPRECATED_SUPPORT_TURN_OFF, _DEPRECATED_SUPPORT_TURN_ON as _DEPRECATED_SUPPORT_TURN_ON, _DEPRECATED_SUPPORT_VOLUME_MUTE as _DEPRECATED_SUPPORT_VOLUME_MUTE, _DEPRECATED_SUPPORT_VOLUME_SET as _DEPRECATED_SUPPORT_VOLUME_SET, _DEPRECATED_SUPPORT_VOLUME_STEP as _DEPRECATED_SUPPORT_VOLUME_STEP
|
7
|
-
from .errors import BrowseError as BrowseError
|
5
|
+
from .browse_media import BrowseMedia as BrowseMedia, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery, async_process_play_media_url as async_process_play_media_url
|
6
|
+
from .const import ATTR_APP_ID as ATTR_APP_ID, ATTR_APP_NAME as ATTR_APP_NAME, ATTR_ENTITY_PICTURE_LOCAL as ATTR_ENTITY_PICTURE_LOCAL, ATTR_GROUP_MEMBERS as ATTR_GROUP_MEMBERS, ATTR_INPUT_SOURCE as ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST as ATTR_INPUT_SOURCE_LIST, ATTR_MEDIA_ALBUM_ARTIST as ATTR_MEDIA_ALBUM_ARTIST, ATTR_MEDIA_ALBUM_NAME as ATTR_MEDIA_ALBUM_NAME, ATTR_MEDIA_ANNOUNCE as ATTR_MEDIA_ANNOUNCE, ATTR_MEDIA_ARTIST as ATTR_MEDIA_ARTIST, ATTR_MEDIA_CHANNEL as ATTR_MEDIA_CHANNEL, ATTR_MEDIA_CONTENT_ID as ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_CONTENT_TYPE as ATTR_MEDIA_CONTENT_TYPE, ATTR_MEDIA_DURATION as ATTR_MEDIA_DURATION, ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EPISODE as ATTR_MEDIA_EPISODE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, ATTR_MEDIA_FILTER_CLASSES as ATTR_MEDIA_FILTER_CLASSES, ATTR_MEDIA_PLAYLIST as ATTR_MEDIA_PLAYLIST, ATTR_MEDIA_POSITION as ATTR_MEDIA_POSITION, ATTR_MEDIA_POSITION_UPDATED_AT as ATTR_MEDIA_POSITION_UPDATED_AT, ATTR_MEDIA_REPEAT as ATTR_MEDIA_REPEAT, ATTR_MEDIA_SEARCH_QUERY as ATTR_MEDIA_SEARCH_QUERY, ATTR_MEDIA_SEASON as ATTR_MEDIA_SEASON, ATTR_MEDIA_SEEK_POSITION as ATTR_MEDIA_SEEK_POSITION, ATTR_MEDIA_SERIES_TITLE as ATTR_MEDIA_SERIES_TITLE, ATTR_MEDIA_SHUFFLE as ATTR_MEDIA_SHUFFLE, ATTR_MEDIA_TITLE as ATTR_MEDIA_TITLE, ATTR_MEDIA_TRACK as ATTR_MEDIA_TRACK, ATTR_MEDIA_VOLUME_LEVEL as ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED as ATTR_MEDIA_VOLUME_MUTED, ATTR_SOUND_MODE as ATTR_SOUND_MODE, ATTR_SOUND_MODE_LIST as ATTR_SOUND_MODE_LIST, CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, DOMAIN as DOMAIN, MediaClass as MediaClass, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType, REPEAT_MODES as REPEAT_MODES, RepeatMode as RepeatMode, SERVICE_BROWSE_MEDIA as SERVICE_BROWSE_MEDIA, SERVICE_CLEAR_PLAYLIST as SERVICE_CLEAR_PLAYLIST, SERVICE_JOIN as SERVICE_JOIN, SERVICE_PLAY_MEDIA as SERVICE_PLAY_MEDIA, SERVICE_SEARCH_MEDIA as SERVICE_SEARCH_MEDIA, SERVICE_SELECT_SOUND_MODE as SERVICE_SELECT_SOUND_MODE, SERVICE_SELECT_SOURCE as SERVICE_SELECT_SOURCE, SERVICE_UNJOIN as SERVICE_UNJOIN, _DEPRECATED_MEDIA_CLASS_DIRECTORY as _DEPRECATED_MEDIA_CLASS_DIRECTORY, _DEPRECATED_SUPPORT_BROWSE_MEDIA as _DEPRECATED_SUPPORT_BROWSE_MEDIA, _DEPRECATED_SUPPORT_CLEAR_PLAYLIST as _DEPRECATED_SUPPORT_CLEAR_PLAYLIST, _DEPRECATED_SUPPORT_GROUPING as _DEPRECATED_SUPPORT_GROUPING, _DEPRECATED_SUPPORT_NEXT_TRACK as _DEPRECATED_SUPPORT_NEXT_TRACK, _DEPRECATED_SUPPORT_PAUSE as _DEPRECATED_SUPPORT_PAUSE, _DEPRECATED_SUPPORT_PLAY as _DEPRECATED_SUPPORT_PLAY, _DEPRECATED_SUPPORT_PLAY_MEDIA as _DEPRECATED_SUPPORT_PLAY_MEDIA, _DEPRECATED_SUPPORT_PREVIOUS_TRACK as _DEPRECATED_SUPPORT_PREVIOUS_TRACK, _DEPRECATED_SUPPORT_REPEAT_SET as _DEPRECATED_SUPPORT_REPEAT_SET, _DEPRECATED_SUPPORT_SEEK as _DEPRECATED_SUPPORT_SEEK, _DEPRECATED_SUPPORT_SELECT_SOUND_MODE as _DEPRECATED_SUPPORT_SELECT_SOUND_MODE, _DEPRECATED_SUPPORT_SELECT_SOURCE as _DEPRECATED_SUPPORT_SELECT_SOURCE, _DEPRECATED_SUPPORT_SHUFFLE_SET as _DEPRECATED_SUPPORT_SHUFFLE_SET, _DEPRECATED_SUPPORT_STOP as _DEPRECATED_SUPPORT_STOP, _DEPRECATED_SUPPORT_TURN_OFF as _DEPRECATED_SUPPORT_TURN_OFF, _DEPRECATED_SUPPORT_TURN_ON as _DEPRECATED_SUPPORT_TURN_ON, _DEPRECATED_SUPPORT_VOLUME_MUTE as _DEPRECATED_SUPPORT_VOLUME_MUTE, _DEPRECATED_SUPPORT_VOLUME_SET as _DEPRECATED_SUPPORT_VOLUME_SET, _DEPRECATED_SUPPORT_VOLUME_STEP as _DEPRECATED_SUPPORT_VOLUME_STEP
|
7
|
+
from .errors import BrowseError as BrowseError, SearchError as SearchError
|
8
8
|
from _typeshed import Incomplete
|
9
9
|
from aiohttp import web
|
10
10
|
from aiohttp.typedefs import LooseHeaders as LooseHeaders
|
@@ -283,6 +283,8 @@ class MediaPlayerEntity(Entity, cached_properties=CACHED_PROPERTIES_WITH_ATTR_):
|
|
283
283
|
@property
|
284
284
|
def state_attributes(self) -> dict[str, Any]: ...
|
285
285
|
async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
|
286
|
+
async def async_internal_search_media(self, search_query: str, media_content_type: MediaType | str | None = None, media_content_id: str | None = None, media_filter_classes: list[MediaClass] | None = None) -> SearchMedia: ...
|
287
|
+
async def async_search_media(self, query: SearchMediaQuery) -> SearchMedia: ...
|
286
288
|
def join_players(self, group_members: list[str]) -> None: ...
|
287
289
|
async def async_join_players(self, group_members: list[str]) -> None: ...
|
288
290
|
def unjoin_player(self) -> None: ...
|
@@ -302,6 +304,8 @@ class MediaPlayerImageView(HomeAssistantView):
|
|
302
304
|
|
303
305
|
@websocket_api.async_response
|
304
306
|
async def websocket_browse_media(hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
307
|
+
@websocket_api.async_response
|
308
|
+
async def websocket_search_media(hass: HomeAssistant, connection: websocket_api.connection.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
305
309
|
|
306
310
|
_FETCH_TIMEOUT: Incomplete
|
307
311
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from .const import CONTENT_AUTH_EXPIRY_TIME as CONTENT_AUTH_EXPIRY_TIME, MediaClass as MediaClass, MediaType as MediaType
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from collections.abc import Sequence
|
4
|
+
from dataclasses import dataclass, field
|
4
5
|
from homeassistant.components.http.auth import async_sign_path as async_sign_path
|
5
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
6
7
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
@@ -23,7 +24,21 @@ class BrowseMedia:
|
|
23
24
|
children_media_class: Incomplete
|
24
25
|
thumbnail: Incomplete
|
25
26
|
not_shown: Incomplete
|
26
|
-
|
27
|
+
can_search: Incomplete
|
28
|
+
def __init__(self, *, media_class: MediaClass | str, media_content_id: str, media_content_type: MediaType | str, title: str, can_play: bool, can_expand: bool, children: Sequence[BrowseMedia] | None = None, children_media_class: MediaClass | str | None = None, thumbnail: str | None = None, not_shown: int = 0, can_search: bool = False) -> None: ...
|
27
29
|
def as_dict(self, *, parent: bool = True) -> dict[str, Any]: ...
|
28
30
|
def calculate_children_class(self) -> None: ...
|
29
31
|
def __repr__(self) -> str: ...
|
32
|
+
|
33
|
+
@dataclass(kw_only=True, frozen=True)
|
34
|
+
class SearchMedia:
|
35
|
+
version: int = field(default=1)
|
36
|
+
result: list[BrowseMedia]
|
37
|
+
def as_dict(self, *, parent: bool = True) -> dict[str, Any]: ...
|
38
|
+
|
39
|
+
@dataclass(kw_only=True, frozen=True)
|
40
|
+
class SearchMediaQuery:
|
41
|
+
search_query: str
|
42
|
+
media_content_type: MediaType | str | None = field(default=None)
|
43
|
+
media_content_id: str | None = ...
|
44
|
+
media_filter_classes: list[MediaClass] | None = field(default=None)
|
@@ -16,6 +16,8 @@ ATTR_MEDIA_ARTIST: str
|
|
16
16
|
ATTR_MEDIA_CHANNEL: str
|
17
17
|
ATTR_MEDIA_CONTENT_ID: str
|
18
18
|
ATTR_MEDIA_CONTENT_TYPE: str
|
19
|
+
ATTR_MEDIA_SEARCH_QUERY: str
|
20
|
+
ATTR_MEDIA_FILTER_CLASSES: str
|
19
21
|
ATTR_MEDIA_DURATION: str
|
20
22
|
ATTR_MEDIA_ENQUEUE: str
|
21
23
|
ATTR_MEDIA_EXTRA: str
|
@@ -136,6 +138,7 @@ SERVICE_CLEAR_PLAYLIST: str
|
|
136
138
|
SERVICE_JOIN: str
|
137
139
|
SERVICE_PLAY_MEDIA: str
|
138
140
|
SERVICE_BROWSE_MEDIA: str
|
141
|
+
SERVICE_SEARCH_MEDIA: str
|
139
142
|
SERVICE_SELECT_SOUND_MODE: str
|
140
143
|
SERVICE_SELECT_SOURCE: str
|
141
144
|
SERVICE_UNJOIN: str
|
@@ -172,6 +175,7 @@ class MediaPlayerEntityFeature(IntFlag):
|
|
172
175
|
GROUPING = 524288
|
173
176
|
MEDIA_ANNOUNCE = 1048576
|
174
177
|
MEDIA_ENQUEUE = 2097152
|
178
|
+
SEARCH_MEDIA = 4194304
|
175
179
|
|
176
180
|
_DEPRECATED_SUPPORT_PAUSE: Incomplete
|
177
181
|
_DEPRECATED_SUPPORT_SEEK: Incomplete
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import meteireann
|
2
2
|
from .const import DOMAIN as DOMAIN
|
3
3
|
from _typeshed import Incomplete
|
4
|
+
from collections.abc import Mapping
|
4
5
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
5
6
|
from homeassistant.const import CONF_ELEVATION as CONF_ELEVATION, CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, Platform as Platform
|
6
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
7
8
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
8
9
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
|
9
|
-
from types import MappingProxyType
|
10
10
|
from typing import Any, Self
|
11
11
|
|
12
12
|
_LOGGER: Incomplete
|
@@ -22,5 +22,5 @@ class MetEireannWeatherData:
|
|
22
22
|
current_weather_data: dict[str, Any]
|
23
23
|
daily_forecast: list[dict[str, Any]]
|
24
24
|
hourly_forecast: list[dict[str, Any]]
|
25
|
-
def __init__(self, config:
|
25
|
+
def __init__(self, config: Mapping[str, Any], weather_data: meteireann.WeatherData) -> None: ...
|
26
26
|
async def fetch_data(self) -> Self: ...
|
@@ -1,6 +1,7 @@
|
|
1
1
|
from . import MetEireannWeatherData as MetEireannWeatherData
|
2
2
|
from .const import CONDITION_MAP as CONDITION_MAP, DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN, FORECAST_MAP as FORECAST_MAP
|
3
3
|
from _typeshed import Incomplete
|
4
|
+
from collections.abc import Mapping
|
4
5
|
from homeassistant.components.weather import ATTR_FORECAST_CONDITION as ATTR_FORECAST_CONDITION, ATTR_FORECAST_TIME as ATTR_FORECAST_TIME, Forecast as Forecast, SingleCoordinatorWeatherEntity as SingleCoordinatorWeatherEntity, WeatherEntityFeature as WeatherEntityFeature
|
5
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
6
7
|
from homeassistant.const import CONF_LATITUDE as CONF_LATITUDE, CONF_LONGITUDE as CONF_LONGITUDE, CONF_NAME as CONF_NAME, UnitOfPrecipitationDepth as UnitOfPrecipitationDepth, UnitOfPressure as UnitOfPressure, UnitOfSpeed as UnitOfSpeed, UnitOfTemperature as UnitOfTemperature
|
@@ -8,14 +9,13 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
|
|
8
9
|
from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
|
9
10
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
10
11
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
|
11
|
-
from types import MappingProxyType
|
12
12
|
from typing import Any
|
13
13
|
|
14
14
|
_LOGGER: Incomplete
|
15
15
|
|
16
16
|
def format_condition(condition: str | None) -> str | None: ...
|
17
17
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
18
|
-
def _calculate_unique_id(config:
|
18
|
+
def _calculate_unique_id(config: Mapping[str, Any], hourly: bool) -> str: ...
|
19
19
|
|
20
20
|
class MetEireannWeather(SingleCoordinatorWeatherEntity[DataUpdateCoordinator[MetEireannWeatherData]]):
|
21
21
|
_attr_attribution: str
|
@@ -28,7 +28,7 @@ class MetEireannWeather(SingleCoordinatorWeatherEntity[DataUpdateCoordinator[Met
|
|
28
28
|
_config: Incomplete
|
29
29
|
_attr_name: Incomplete
|
30
30
|
_attr_device_info: Incomplete
|
31
|
-
def __init__(self, coordinator: DataUpdateCoordinator[MetEireannWeatherData], config:
|
31
|
+
def __init__(self, coordinator: DataUpdateCoordinator[MetEireannWeatherData], config: Mapping[str, Any]) -> None: ...
|
32
32
|
@property
|
33
33
|
def condition(self) -> str | None: ...
|
34
34
|
@property
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import voluptuous as vol
|
2
2
|
from .const import CONF_MJPEG_URL as CONF_MJPEG_URL, CONF_STILL_IMAGE_URL as CONF_STILL_IMAGE_URL, DOMAIN as DOMAIN, LOGGER as LOGGER
|
3
|
+
from collections.abc import Mapping
|
3
4
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
|
4
5
|
from homeassistant.const import CONF_AUTHENTICATION as CONF_AUTHENTICATION, CONF_NAME as CONF_NAME, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME, CONF_VERIFY_SSL as CONF_VERIFY_SSL, HTTP_BASIC_AUTHENTICATION as HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION as HTTP_DIGEST_AUTHENTICATION
|
5
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
6
7
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
7
|
-
from types import MappingProxyType
|
8
8
|
from typing import Any
|
9
9
|
|
10
10
|
@callback
|
11
|
-
def async_get_schema(defaults:
|
11
|
+
def async_get_schema(defaults: Mapping[str, Any], show_name: bool = False) -> vol.Schema: ...
|
12
12
|
def validate_url(url: str, username: str | None, password: str, verify_ssl: bool, authentication: str = ...) -> str: ...
|
13
13
|
async def async_validate_input(hass: HomeAssistant, user_input: dict[str, Any]) -> tuple[dict[str, str], str]: ...
|
14
14
|
|
@@ -19,13 +19,13 @@ class MotionMountPresets(MotionMountEntity, SelectEntity):
|
|
19
19
|
_attr_translation_key: str
|
20
20
|
_attr_unique_id: Incomplete
|
21
21
|
_presets: list[motionmount.Preset]
|
22
|
+
_attr_current_option: Incomplete
|
22
23
|
def __init__(self, mm: motionmount.MotionMount, config_entry: MotionMountConfigEntry) -> None: ...
|
23
24
|
_attr_options: Incomplete
|
24
25
|
def _update_options(self, presets: list[motionmount.Preset]) -> None: ...
|
25
26
|
pin: Incomplete
|
26
27
|
async def _ensure_connected(self) -> bool: ...
|
27
28
|
async def async_update(self) -> None: ...
|
28
|
-
_attr_current_option: Incomplete
|
29
29
|
@property
|
30
30
|
def current_option(self) -> str | None: ...
|
31
31
|
async def async_select_option(self, option: str) -> None: ...
|
@@ -2,7 +2,7 @@ import asyncio
|
|
2
2
|
import voluptuous as vol
|
3
3
|
from .addon import get_addon_manager as get_addon_manager
|
4
4
|
from .client import MqttClientSetup as MqttClientSetup
|
5
|
-
from .const import ATTR_PAYLOAD as ATTR_PAYLOAD, ATTR_QOS as ATTR_QOS, ATTR_RETAIN as ATTR_RETAIN, ATTR_TOPIC as ATTR_TOPIC, CONFIG_ENTRY_MINOR_VERSION as CONFIG_ENTRY_MINOR_VERSION, CONFIG_ENTRY_VERSION as CONFIG_ENTRY_VERSION, CONF_AVAILABILITY_TEMPLATE as CONF_AVAILABILITY_TEMPLATE, CONF_AVAILABILITY_TOPIC as CONF_AVAILABILITY_TOPIC, CONF_BIRTH_MESSAGE as CONF_BIRTH_MESSAGE, CONF_BROKER as CONF_BROKER, CONF_CERTIFICATE as CONF_CERTIFICATE, CONF_CLIENT_CERT as CONF_CLIENT_CERT, CONF_CLIENT_KEY as CONF_CLIENT_KEY, CONF_COMMAND_TEMPLATE as CONF_COMMAND_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_DISCOVERY_PREFIX as CONF_DISCOVERY_PREFIX, CONF_ENTITY_PICTURE as CONF_ENTITY_PICTURE, CONF_EXPIRE_AFTER as CONF_EXPIRE_AFTER, CONF_KEEPALIVE as CONF_KEEPALIVE, CONF_LAST_RESET_VALUE_TEMPLATE as CONF_LAST_RESET_VALUE_TEMPLATE, CONF_OPTIONS as CONF_OPTIONS, CONF_PAYLOAD_AVAILABLE as CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE as CONF_PAYLOAD_NOT_AVAILABLE, CONF_QOS as CONF_QOS, CONF_RETAIN as CONF_RETAIN, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_SUGGESTED_DISPLAY_PRECISION as CONF_SUGGESTED_DISPLAY_PRECISION, CONF_TLS_INSECURE as CONF_TLS_INSECURE, CONF_TRANSPORT as CONF_TRANSPORT, CONF_WILL_MESSAGE as CONF_WILL_MESSAGE, CONF_WS_HEADERS as CONF_WS_HEADERS, CONF_WS_PATH as CONF_WS_PATH, DEFAULT_BIRTH as DEFAULT_BIRTH, DEFAULT_DISCOVERY as DEFAULT_DISCOVERY, DEFAULT_ENCODING as DEFAULT_ENCODING, DEFAULT_KEEPALIVE as DEFAULT_KEEPALIVE, DEFAULT_PAYLOAD_AVAILABLE as DEFAULT_PAYLOAD_AVAILABLE, DEFAULT_PAYLOAD_NOT_AVAILABLE as DEFAULT_PAYLOAD_NOT_AVAILABLE, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_PREFIX as DEFAULT_PREFIX, DEFAULT_PROTOCOL as DEFAULT_PROTOCOL, DEFAULT_QOS as DEFAULT_QOS, DEFAULT_TRANSPORT as DEFAULT_TRANSPORT, DEFAULT_WILL as DEFAULT_WILL, DEFAULT_WS_PATH as DEFAULT_WS_PATH, DOMAIN as DOMAIN, Platform as Platform, SUPPORTED_PROTOCOLS as SUPPORTED_PROTOCOLS, TRANSPORT_TCP as TRANSPORT_TCP, TRANSPORT_WEBSOCKETS as TRANSPORT_WEBSOCKETS
|
5
|
+
from .const import ATTR_PAYLOAD as ATTR_PAYLOAD, ATTR_QOS as ATTR_QOS, ATTR_RETAIN as ATTR_RETAIN, ATTR_TOPIC as ATTR_TOPIC, CONFIG_ENTRY_MINOR_VERSION as CONFIG_ENTRY_MINOR_VERSION, CONFIG_ENTRY_VERSION as CONFIG_ENTRY_VERSION, CONF_AVAILABILITY_TEMPLATE as CONF_AVAILABILITY_TEMPLATE, CONF_AVAILABILITY_TOPIC as CONF_AVAILABILITY_TOPIC, CONF_BIRTH_MESSAGE as CONF_BIRTH_MESSAGE, CONF_BLUE_TEMPLATE as CONF_BLUE_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TEMPLATE as CONF_BRIGHTNESS_COMMAND_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TOPIC as CONF_BRIGHTNESS_COMMAND_TOPIC, CONF_BRIGHTNESS_SCALE as CONF_BRIGHTNESS_SCALE, CONF_BRIGHTNESS_STATE_TOPIC as CONF_BRIGHTNESS_STATE_TOPIC, CONF_BRIGHTNESS_TEMPLATE as CONF_BRIGHTNESS_TEMPLATE, CONF_BRIGHTNESS_VALUE_TEMPLATE as CONF_BRIGHTNESS_VALUE_TEMPLATE, CONF_BROKER as CONF_BROKER, CONF_CERTIFICATE as CONF_CERTIFICATE, CONF_CLIENT_CERT as CONF_CLIENT_CERT, CONF_CLIENT_KEY as CONF_CLIENT_KEY, CONF_COLOR_MODE_STATE_TOPIC as CONF_COLOR_MODE_STATE_TOPIC, CONF_COLOR_MODE_VALUE_TEMPLATE as CONF_COLOR_MODE_VALUE_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TEMPLATE as CONF_COLOR_TEMP_COMMAND_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TOPIC as CONF_COLOR_TEMP_COMMAND_TOPIC, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COLOR_TEMP_STATE_TOPIC as CONF_COLOR_TEMP_STATE_TOPIC, CONF_COLOR_TEMP_TEMPLATE as CONF_COLOR_TEMP_TEMPLATE, CONF_COLOR_TEMP_VALUE_TEMPLATE as CONF_COLOR_TEMP_VALUE_TEMPLATE, CONF_COMMAND_OFF_TEMPLATE as CONF_COMMAND_OFF_TEMPLATE, CONF_COMMAND_ON_TEMPLATE as CONF_COMMAND_ON_TEMPLATE, CONF_COMMAND_TEMPLATE as CONF_COMMAND_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_DISCOVERY_PREFIX as CONF_DISCOVERY_PREFIX, CONF_EFFECT_COMMAND_TEMPLATE as CONF_EFFECT_COMMAND_TEMPLATE, CONF_EFFECT_COMMAND_TOPIC as CONF_EFFECT_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_EFFECT_STATE_TOPIC as CONF_EFFECT_STATE_TOPIC, CONF_EFFECT_TEMPLATE as CONF_EFFECT_TEMPLATE, CONF_EFFECT_VALUE_TEMPLATE as CONF_EFFECT_VALUE_TEMPLATE, CONF_ENTITY_PICTURE as CONF_ENTITY_PICTURE, CONF_EXPIRE_AFTER as CONF_EXPIRE_AFTER, CONF_FLASH as CONF_FLASH, CONF_FLASH_TIME_LONG as CONF_FLASH_TIME_LONG, CONF_FLASH_TIME_SHORT as CONF_FLASH_TIME_SHORT, CONF_GREEN_TEMPLATE as CONF_GREEN_TEMPLATE, CONF_HS_COMMAND_TEMPLATE as CONF_HS_COMMAND_TEMPLATE, CONF_HS_COMMAND_TOPIC as CONF_HS_COMMAND_TOPIC, CONF_HS_STATE_TOPIC as CONF_HS_STATE_TOPIC, CONF_HS_VALUE_TEMPLATE as CONF_HS_VALUE_TEMPLATE, CONF_KEEPALIVE as CONF_KEEPALIVE, CONF_LAST_RESET_VALUE_TEMPLATE as CONF_LAST_RESET_VALUE_TEMPLATE, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_ON_COMMAND_TYPE as CONF_ON_COMMAND_TYPE, CONF_OPTIONS as CONF_OPTIONS, CONF_PAYLOAD_AVAILABLE as CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE as CONF_PAYLOAD_NOT_AVAILABLE, CONF_QOS as CONF_QOS, CONF_RED_TEMPLATE as CONF_RED_TEMPLATE, CONF_RETAIN as CONF_RETAIN, CONF_RGBWW_COMMAND_TEMPLATE as CONF_RGBWW_COMMAND_TEMPLATE, CONF_RGBWW_COMMAND_TOPIC as CONF_RGBWW_COMMAND_TOPIC, CONF_RGBWW_STATE_TOPIC as CONF_RGBWW_STATE_TOPIC, CONF_RGBWW_VALUE_TEMPLATE as CONF_RGBWW_VALUE_TEMPLATE, CONF_RGBW_COMMAND_TEMPLATE as CONF_RGBW_COMMAND_TEMPLATE, CONF_RGBW_COMMAND_TOPIC as CONF_RGBW_COMMAND_TOPIC, CONF_RGBW_STATE_TOPIC as CONF_RGBW_STATE_TOPIC, CONF_RGBW_VALUE_TEMPLATE as CONF_RGBW_VALUE_TEMPLATE, CONF_RGB_COMMAND_TEMPLATE as CONF_RGB_COMMAND_TEMPLATE, CONF_RGB_COMMAND_TOPIC as CONF_RGB_COMMAND_TOPIC, CONF_RGB_STATE_TOPIC as CONF_RGB_STATE_TOPIC, CONF_RGB_VALUE_TEMPLATE as CONF_RGB_VALUE_TEMPLATE, CONF_SCHEMA as CONF_SCHEMA, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_STATE_VALUE_TEMPLATE as CONF_STATE_VALUE_TEMPLATE, CONF_SUGGESTED_DISPLAY_PRECISION as CONF_SUGGESTED_DISPLAY_PRECISION, CONF_SUPPORTED_COLOR_MODES as CONF_SUPPORTED_COLOR_MODES, CONF_TLS_INSECURE as CONF_TLS_INSECURE, CONF_TRANSITION as CONF_TRANSITION, CONF_TRANSPORT as CONF_TRANSPORT, CONF_WHITE_COMMAND_TOPIC as CONF_WHITE_COMMAND_TOPIC, CONF_WHITE_SCALE as CONF_WHITE_SCALE, CONF_WILL_MESSAGE as CONF_WILL_MESSAGE, CONF_WS_HEADERS as CONF_WS_HEADERS, CONF_WS_PATH as CONF_WS_PATH, CONF_XY_COMMAND_TEMPLATE as CONF_XY_COMMAND_TEMPLATE, CONF_XY_COMMAND_TOPIC as CONF_XY_COMMAND_TOPIC, CONF_XY_STATE_TOPIC as CONF_XY_STATE_TOPIC, CONF_XY_VALUE_TEMPLATE as CONF_XY_VALUE_TEMPLATE, DEFAULT_BIRTH as DEFAULT_BIRTH, DEFAULT_DISCOVERY as DEFAULT_DISCOVERY, DEFAULT_ENCODING as DEFAULT_ENCODING, DEFAULT_KEEPALIVE as DEFAULT_KEEPALIVE, DEFAULT_ON_COMMAND_TYPE as DEFAULT_ON_COMMAND_TYPE, DEFAULT_PAYLOAD_AVAILABLE as DEFAULT_PAYLOAD_AVAILABLE, DEFAULT_PAYLOAD_NOT_AVAILABLE as DEFAULT_PAYLOAD_NOT_AVAILABLE, DEFAULT_PAYLOAD_OFF as DEFAULT_PAYLOAD_OFF, DEFAULT_PAYLOAD_ON as DEFAULT_PAYLOAD_ON, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_PREFIX as DEFAULT_PREFIX, DEFAULT_PROTOCOL as DEFAULT_PROTOCOL, DEFAULT_QOS as DEFAULT_QOS, DEFAULT_TRANSPORT as DEFAULT_TRANSPORT, DEFAULT_WILL as DEFAULT_WILL, DEFAULT_WS_PATH as DEFAULT_WS_PATH, DOMAIN as DOMAIN, Platform as Platform, SUPPORTED_PROTOCOLS as SUPPORTED_PROTOCOLS, TRANSPORT_TCP as TRANSPORT_TCP, TRANSPORT_WEBSOCKETS as TRANSPORT_WEBSOCKETS, VALUES_ON_COMMAND_TYPE as VALUES_ON_COMMAND_TYPE
|
6
6
|
from .models import MqttAvailabilityData as MqttAvailabilityData, MqttDeviceData as MqttDeviceData, MqttSubentryData as MqttSubentryData
|
7
7
|
from .util import async_create_certificate_temp_files as async_create_certificate_temp_files, get_file_path as get_file_path, learn_more_url as learn_more_url, valid_birth_will as valid_birth_will, valid_publish_topic as valid_publish_topic, valid_subscribe_topic as valid_subscribe_topic, valid_subscribe_topic_template as valid_subscribe_topic_template
|
8
8
|
from _typeshed import Incomplete
|
@@ -12,10 +12,11 @@ from dataclasses import dataclass
|
|
12
12
|
from enum import IntEnum
|
13
13
|
from homeassistant.components.file_upload import process_uploaded_file as process_uploaded_file
|
14
14
|
from homeassistant.components.hassio import AddonError as AddonError, AddonManager as AddonManager, AddonState as AddonState
|
15
|
+
from homeassistant.components.light import DEFAULT_MAX_KELVIN as DEFAULT_MAX_KELVIN, DEFAULT_MIN_KELVIN as DEFAULT_MIN_KELVIN, VALID_COLOR_MODES as VALID_COLOR_MODES, valid_supported_color_modes as valid_supported_color_modes
|
15
16
|
from homeassistant.components.sensor import CONF_STATE_CLASS as CONF_STATE_CLASS, DEVICE_CLASS_UNITS as DEVICE_CLASS_UNITS, SensorDeviceClass as SensorDeviceClass, SensorStateClass as SensorStateClass
|
16
17
|
from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass
|
17
18
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryFlow as ConfigSubentryFlow, OptionsFlow as OptionsFlow, SOURCE_RECONFIGURE as SOURCE_RECONFIGURE, SubentryFlowResult as SubentryFlowResult
|
18
|
-
from homeassistant.const import ATTR_CONFIGURATION_URL as ATTR_CONFIGURATION_URL, ATTR_HW_VERSION as ATTR_HW_VERSION, ATTR_MODEL as ATTR_MODEL, ATTR_MODEL_ID as ATTR_MODEL_ID, ATTR_NAME as ATTR_NAME, ATTR_SW_VERSION as ATTR_SW_VERSION, CONF_CLIENT_ID as CONF_CLIENT_ID, CONF_DEVICE as CONF_DEVICE, CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_DISCOVERY as CONF_DISCOVERY, CONF_HOST as CONF_HOST, CONF_NAME as CONF_NAME, CONF_OPTIMISTIC as CONF_OPTIMISTIC, CONF_PASSWORD as CONF_PASSWORD, CONF_PAYLOAD as CONF_PAYLOAD, CONF_PLATFORM as CONF_PLATFORM, CONF_PORT as CONF_PORT, CONF_PROTOCOL as CONF_PROTOCOL, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_USERNAME as CONF_USERNAME, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE
|
19
|
+
from homeassistant.const import ATTR_CONFIGURATION_URL as ATTR_CONFIGURATION_URL, ATTR_HW_VERSION as ATTR_HW_VERSION, ATTR_MODEL as ATTR_MODEL, ATTR_MODEL_ID as ATTR_MODEL_ID, ATTR_NAME as ATTR_NAME, ATTR_SW_VERSION as ATTR_SW_VERSION, CONF_BRIGHTNESS as CONF_BRIGHTNESS, CONF_CLIENT_ID as CONF_CLIENT_ID, CONF_DEVICE as CONF_DEVICE, CONF_DEVICE_CLASS as CONF_DEVICE_CLASS, CONF_DISCOVERY as CONF_DISCOVERY, CONF_EFFECT as CONF_EFFECT, CONF_HOST as CONF_HOST, CONF_NAME as CONF_NAME, CONF_OPTIMISTIC as CONF_OPTIMISTIC, CONF_PASSWORD as CONF_PASSWORD, CONF_PAYLOAD as CONF_PAYLOAD, CONF_PAYLOAD_OFF as CONF_PAYLOAD_OFF, CONF_PAYLOAD_ON as CONF_PAYLOAD_ON, CONF_PLATFORM as CONF_PLATFORM, CONF_PORT as CONF_PORT, CONF_PROTOCOL as CONF_PROTOCOL, CONF_STATE_TEMPLATE as CONF_STATE_TEMPLATE, CONF_UNIT_OF_MEASUREMENT as CONF_UNIT_OF_MEASUREMENT, CONF_USERNAME as CONF_USERNAME, CONF_VALUE_TEMPLATE as CONF_VALUE_TEMPLATE
|
19
20
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
20
21
|
from homeassistant.data_entry_flow import AbortFlow as AbortFlow, SectionConfig as SectionConfig, section as section
|
21
22
|
from homeassistant.helpers.hassio import is_hassio as is_hassio
|
@@ -60,17 +61,24 @@ OPTIONS_SELECTOR: Incomplete
|
|
60
61
|
SUGGESTED_DISPLAY_PRECISION_SELECTOR: Incomplete
|
61
62
|
EXPIRE_AFTER_SELECTOR: Incomplete
|
62
63
|
SWITCH_DEVICE_CLASS_SELECTOR: Incomplete
|
64
|
+
LIGHT_SCHEMA_SELECTOR: Incomplete
|
65
|
+
KELVIN_SELECTOR: Incomplete
|
66
|
+
SCALE_SELECTOR: Incomplete
|
67
|
+
FLASH_TIME_SELECTOR: Incomplete
|
68
|
+
ON_COMMAND_TYPE_SELECTOR: Incomplete
|
69
|
+
SUPPORTED_COLOR_MODES_SELECTOR: Incomplete
|
63
70
|
|
64
71
|
@callback
|
65
72
|
def validate_sensor_platform_config(config: dict[str, Any]) -> dict[str, str]: ...
|
66
73
|
|
67
|
-
@dataclass(frozen=True)
|
74
|
+
@dataclass(frozen=True, kw_only=True)
|
68
75
|
class PlatformField:
|
69
76
|
selector: Selector[Any] | Callable[..., Selector[Any]]
|
70
77
|
required: bool
|
71
78
|
validator: Callable[..., Any]
|
72
79
|
error: str | None = ...
|
73
|
-
default: str | int | vol.Undefined = ...
|
80
|
+
default: str | int | bool | None | vol.Undefined = ...
|
81
|
+
is_schema_default: bool = ...
|
74
82
|
exclude_from_reconfig: bool = ...
|
75
83
|
conditions: tuple[dict[str, Any], ...] | None = ...
|
76
84
|
custom_filtering: bool = ...
|
@@ -78,6 +86,8 @@ class PlatformField:
|
|
78
86
|
|
79
87
|
@callback
|
80
88
|
def unit_of_measurement_selector(user_data: dict[str, Any | None]) -> Selector: ...
|
89
|
+
@callback
|
90
|
+
def validate_light_platform_config(user_data: dict[str, Any]) -> dict[str, str]: ...
|
81
91
|
|
82
92
|
COMMON_ENTITY_FIELDS: Incomplete
|
83
93
|
PLATFORM_ENTITY_FIELDS: Incomplete
|
@@ -99,6 +109,8 @@ def calculate_merged_config(merged_user_input: dict[str, Any], data_schema_field
|
|
99
109
|
def validate_user_input(user_input: dict[str, Any], data_schema_fields: dict[str, PlatformField], *, component_data: dict[str, Any] | None = None, config_validator: Callable[[dict[str, Any]], dict[str, str]] | None = None) -> tuple[dict[str, Any], dict[str, str]]: ...
|
100
110
|
@callback
|
101
111
|
def data_schema_from_fields(data_schema_fields: dict[str, PlatformField], reconfig: bool, component_data: dict[str, Any] | None = None, user_input: dict[str, Any] | None = None, device_data: MqttDeviceData | None = None) -> vol.Schema: ...
|
112
|
+
@callback
|
113
|
+
def subentry_schema_default_data_from_fields(data_schema_fields: dict[str, PlatformField], component_data: dict[str, Any]) -> dict[str, Any]: ...
|
102
114
|
|
103
115
|
class FlowHandler(ConfigFlow, domain=DOMAIN):
|
104
116
|
VERSION = CONFIG_ENTRY_VERSION
|
@@ -154,6 +166,8 @@ class MQTTSubentryFlowHandler(ConfigSubentryFlow):
|
|
154
166
|
async def async_step_entity_platform_config(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
155
167
|
async def async_step_mqtt_platform_config(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
156
168
|
@callback
|
169
|
+
def _async_update_component_data_defaults(self) -> None: ...
|
170
|
+
@callback
|
157
171
|
def _async_create_subentry(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
158
172
|
async def async_step_availability(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
159
173
|
async def async_step_summary_menu(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
|
@@ -76,6 +76,7 @@ CONF_EFFECT_TEMPLATE: str
|
|
76
76
|
CONF_EFFECT_VALUE_TEMPLATE: str
|
77
77
|
CONF_ENTITY_PICTURE: str
|
78
78
|
CONF_EXPIRE_AFTER: str
|
79
|
+
CONF_FLASH: str
|
79
80
|
CONF_FLASH_TIME_LONG: str
|
80
81
|
CONF_FLASH_TIME_SHORT: str
|
81
82
|
CONF_GREEN_TEMPLATE: str
|
@@ -128,6 +129,7 @@ CONF_TEMP_STATE_TOPIC: str
|
|
128
129
|
CONF_TEMP_INITIAL: str
|
129
130
|
CONF_TEMP_MAX: str
|
130
131
|
CONF_TEMP_MIN: str
|
132
|
+
CONF_TRANSITION: str
|
131
133
|
CONF_XY_COMMAND_TEMPLATE: str
|
132
134
|
CONF_XY_COMMAND_TOPIC: str
|
133
135
|
CONF_XY_STATE_TOPIC: str
|
@@ -176,6 +178,7 @@ DEFAULT_WS_PATH: str
|
|
176
178
|
DEFAULT_POSITION_CLOSED: int
|
177
179
|
DEFAULT_POSITION_OPEN: int
|
178
180
|
DEFAULT_WHITE_SCALE: int
|
181
|
+
VALUES_ON_COMMAND_TYPE: Incomplete
|
179
182
|
PROTOCOL_31: str
|
180
183
|
PROTOCOL_311: str
|
181
184
|
PROTOCOL_5: str
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from . import subscription as subscription
|
2
2
|
from .config import MQTT_BASE_SCHEMA as MQTT_BASE_SCHEMA
|
3
|
-
from .const import CONF_PAYLOAD_RESET as CONF_PAYLOAD_RESET, CONF_STATE_TOPIC as CONF_STATE_TOPIC
|
4
|
-
from .entity import
|
3
|
+
from .const import CONF_JSON_ATTRS_TEMPLATE as CONF_JSON_ATTRS_TEMPLATE, CONF_JSON_ATTRS_TOPIC as CONF_JSON_ATTRS_TOPIC, CONF_PAYLOAD_RESET as CONF_PAYLOAD_RESET, CONF_STATE_TOPIC as CONF_STATE_TOPIC
|
4
|
+
from .entity import MqttEntity as MqttEntity, async_setup_entity_entry_helper as async_setup_entity_entry_helper
|
5
5
|
from .models import MqttValueTemplate as MqttValueTemplate, ReceiveMessage as ReceiveMessage
|
6
6
|
from .schemas import MQTT_ENTITY_COMMON_SCHEMA as MQTT_ENTITY_COMMON_SCHEMA
|
7
7
|
from .util import valid_subscribe_topic as valid_subscribe_topic
|
@@ -15,6 +15,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant, callback as callb
|
|
15
15
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
16
16
|
from homeassistant.helpers.service_info.mqtt import ReceivePayloadType as ReceivePayloadType
|
17
17
|
from homeassistant.helpers.typing import ConfigType as ConfigType, VolSchemaType as VolSchemaType
|
18
|
+
from typing import Any
|
18
19
|
|
19
20
|
_LOGGER: Incomplete
|
20
21
|
PARALLEL_UPDATES: int
|
@@ -39,21 +40,17 @@ class MqttDeviceTracker(MqttEntity, TrackerEntity):
|
|
39
40
|
_value_template: Callable[[ReceivePayloadType], ReceivePayloadType]
|
40
41
|
@staticmethod
|
41
42
|
def config_schema() -> VolSchemaType: ...
|
43
|
+
_attr_source_type: Incomplete
|
42
44
|
def _setup_from_config(self, config: ConfigType) -> None: ...
|
45
|
+
_attr_location_name: Incomplete
|
43
46
|
@callback
|
44
47
|
def _tracker_message_received(self, msg: ReceiveMessage) -> None: ...
|
45
48
|
@callback
|
46
49
|
def _prepare_subscribe_topics(self) -> None: ...
|
47
|
-
@property
|
48
|
-
def force_update(self) -> bool: ...
|
49
50
|
async def _subscribe_topics(self) -> None: ...
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
@
|
55
|
-
def
|
56
|
-
@property
|
57
|
-
def location_name(self) -> str | None: ...
|
58
|
-
@property
|
59
|
-
def source_type(self) -> SourceType: ...
|
51
|
+
_attr_latitude: Incomplete
|
52
|
+
_attr_longitude: Incomplete
|
53
|
+
_attr_location_accuracy: Incomplete
|
54
|
+
_attr_extra_state_attributes: Incomplete
|
55
|
+
@callback
|
56
|
+
def _process_update_extra_state_attributes(self, extra_state_attributes: dict[str, Any]) -> None: ...
|
@@ -46,6 +46,8 @@ def init_entity_id_from_config(hass: HomeAssistant, entity: Entity, config: Conf
|
|
46
46
|
class MqttAttributesMixin(Entity):
|
47
47
|
_attributes_extra_blocked: frozenset[str]
|
48
48
|
_attr_tpl: Callable[[ReceivePayloadType], ReceivePayloadType] | None
|
49
|
+
_message_callback: Callable[[MessageCallbackType, set[str] | None, ReceiveMessage], None]
|
50
|
+
_process_update_extra_state_attributes: Callable[[dict[str, Any]], None]
|
49
51
|
_attributes_sub_state: dict[str, EntitySubscription]
|
50
52
|
_attributes_config: Incomplete
|
51
53
|
def __init__(self, config: ConfigType) -> None: ...
|
@@ -61,6 +63,7 @@ class MqttAttributesMixin(Entity):
|
|
61
63
|
def _attributes_message_received(self, msg: ReceiveMessage) -> None: ...
|
62
64
|
|
63
65
|
class MqttAvailabilityMixin(Entity):
|
66
|
+
_message_callback: Callable[[MessageCallbackType, set[str] | None, ReceiveMessage], None]
|
64
67
|
_availability_sub_state: dict[str, EntitySubscription]
|
65
68
|
_available: dict[str, str | bool]
|
66
69
|
_available_latest: bool
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from .. import subscription as subscription
|
2
2
|
from ..config import MQTT_RW_SCHEMA as MQTT_RW_SCHEMA
|
3
|
-
from ..const import CONF_BRIGHTNESS_COMMAND_TEMPLATE as CONF_BRIGHTNESS_COMMAND_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TOPIC as CONF_BRIGHTNESS_COMMAND_TOPIC, CONF_BRIGHTNESS_SCALE as CONF_BRIGHTNESS_SCALE, CONF_BRIGHTNESS_STATE_TOPIC as CONF_BRIGHTNESS_STATE_TOPIC, CONF_BRIGHTNESS_VALUE_TEMPLATE as CONF_BRIGHTNESS_VALUE_TEMPLATE, CONF_COLOR_MODE_STATE_TOPIC as CONF_COLOR_MODE_STATE_TOPIC, CONF_COLOR_MODE_VALUE_TEMPLATE as CONF_COLOR_MODE_VALUE_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TEMPLATE as CONF_COLOR_TEMP_COMMAND_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TOPIC as CONF_COLOR_TEMP_COMMAND_TOPIC, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COLOR_TEMP_STATE_TOPIC as CONF_COLOR_TEMP_STATE_TOPIC, CONF_COLOR_TEMP_VALUE_TEMPLATE as CONF_COLOR_TEMP_VALUE_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_COMMAND_TEMPLATE as CONF_EFFECT_COMMAND_TEMPLATE, CONF_EFFECT_COMMAND_TOPIC as CONF_EFFECT_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_EFFECT_STATE_TOPIC as CONF_EFFECT_STATE_TOPIC, CONF_EFFECT_VALUE_TEMPLATE as CONF_EFFECT_VALUE_TEMPLATE, CONF_HS_COMMAND_TEMPLATE as CONF_HS_COMMAND_TEMPLATE, CONF_HS_COMMAND_TOPIC as CONF_HS_COMMAND_TOPIC, CONF_HS_STATE_TOPIC as CONF_HS_STATE_TOPIC, CONF_HS_VALUE_TEMPLATE as CONF_HS_VALUE_TEMPLATE, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_ON_COMMAND_TYPE as CONF_ON_COMMAND_TYPE, CONF_RGBWW_COMMAND_TEMPLATE as CONF_RGBWW_COMMAND_TEMPLATE, CONF_RGBWW_COMMAND_TOPIC as CONF_RGBWW_COMMAND_TOPIC, CONF_RGBWW_STATE_TOPIC as CONF_RGBWW_STATE_TOPIC, CONF_RGBWW_VALUE_TEMPLATE as CONF_RGBWW_VALUE_TEMPLATE, CONF_RGBW_COMMAND_TEMPLATE as CONF_RGBW_COMMAND_TEMPLATE, CONF_RGBW_COMMAND_TOPIC as CONF_RGBW_COMMAND_TOPIC, CONF_RGBW_STATE_TOPIC as CONF_RGBW_STATE_TOPIC, CONF_RGBW_VALUE_TEMPLATE as CONF_RGBW_VALUE_TEMPLATE, CONF_RGB_COMMAND_TEMPLATE as CONF_RGB_COMMAND_TEMPLATE, CONF_RGB_COMMAND_TOPIC as CONF_RGB_COMMAND_TOPIC, CONF_RGB_STATE_TOPIC as CONF_RGB_STATE_TOPIC, CONF_RGB_VALUE_TEMPLATE as CONF_RGB_VALUE_TEMPLATE, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_STATE_VALUE_TEMPLATE as CONF_STATE_VALUE_TEMPLATE, CONF_WHITE_COMMAND_TOPIC as CONF_WHITE_COMMAND_TOPIC, CONF_WHITE_SCALE as CONF_WHITE_SCALE, CONF_XY_COMMAND_TEMPLATE as CONF_XY_COMMAND_TEMPLATE, CONF_XY_COMMAND_TOPIC as CONF_XY_COMMAND_TOPIC, CONF_XY_STATE_TOPIC as CONF_XY_STATE_TOPIC, CONF_XY_VALUE_TEMPLATE as CONF_XY_VALUE_TEMPLATE, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_ON_COMMAND_TYPE as DEFAULT_ON_COMMAND_TYPE, DEFAULT_PAYLOAD_OFF as DEFAULT_PAYLOAD_OFF, DEFAULT_PAYLOAD_ON as DEFAULT_PAYLOAD_ON, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE, PAYLOAD_NONE as PAYLOAD_NONE
|
3
|
+
from ..const import CONF_BRIGHTNESS_COMMAND_TEMPLATE as CONF_BRIGHTNESS_COMMAND_TEMPLATE, CONF_BRIGHTNESS_COMMAND_TOPIC as CONF_BRIGHTNESS_COMMAND_TOPIC, CONF_BRIGHTNESS_SCALE as CONF_BRIGHTNESS_SCALE, CONF_BRIGHTNESS_STATE_TOPIC as CONF_BRIGHTNESS_STATE_TOPIC, CONF_BRIGHTNESS_VALUE_TEMPLATE as CONF_BRIGHTNESS_VALUE_TEMPLATE, CONF_COLOR_MODE_STATE_TOPIC as CONF_COLOR_MODE_STATE_TOPIC, CONF_COLOR_MODE_VALUE_TEMPLATE as CONF_COLOR_MODE_VALUE_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TEMPLATE as CONF_COLOR_TEMP_COMMAND_TEMPLATE, CONF_COLOR_TEMP_COMMAND_TOPIC as CONF_COLOR_TEMP_COMMAND_TOPIC, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COLOR_TEMP_STATE_TOPIC as CONF_COLOR_TEMP_STATE_TOPIC, CONF_COLOR_TEMP_VALUE_TEMPLATE as CONF_COLOR_TEMP_VALUE_TEMPLATE, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_COMMAND_TEMPLATE as CONF_EFFECT_COMMAND_TEMPLATE, CONF_EFFECT_COMMAND_TOPIC as CONF_EFFECT_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_EFFECT_STATE_TOPIC as CONF_EFFECT_STATE_TOPIC, CONF_EFFECT_VALUE_TEMPLATE as CONF_EFFECT_VALUE_TEMPLATE, CONF_HS_COMMAND_TEMPLATE as CONF_HS_COMMAND_TEMPLATE, CONF_HS_COMMAND_TOPIC as CONF_HS_COMMAND_TOPIC, CONF_HS_STATE_TOPIC as CONF_HS_STATE_TOPIC, CONF_HS_VALUE_TEMPLATE as CONF_HS_VALUE_TEMPLATE, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_ON_COMMAND_TYPE as CONF_ON_COMMAND_TYPE, CONF_RGBWW_COMMAND_TEMPLATE as CONF_RGBWW_COMMAND_TEMPLATE, CONF_RGBWW_COMMAND_TOPIC as CONF_RGBWW_COMMAND_TOPIC, CONF_RGBWW_STATE_TOPIC as CONF_RGBWW_STATE_TOPIC, CONF_RGBWW_VALUE_TEMPLATE as CONF_RGBWW_VALUE_TEMPLATE, CONF_RGBW_COMMAND_TEMPLATE as CONF_RGBW_COMMAND_TEMPLATE, CONF_RGBW_COMMAND_TOPIC as CONF_RGBW_COMMAND_TOPIC, CONF_RGBW_STATE_TOPIC as CONF_RGBW_STATE_TOPIC, CONF_RGBW_VALUE_TEMPLATE as CONF_RGBW_VALUE_TEMPLATE, CONF_RGB_COMMAND_TEMPLATE as CONF_RGB_COMMAND_TEMPLATE, CONF_RGB_COMMAND_TOPIC as CONF_RGB_COMMAND_TOPIC, CONF_RGB_STATE_TOPIC as CONF_RGB_STATE_TOPIC, CONF_RGB_VALUE_TEMPLATE as CONF_RGB_VALUE_TEMPLATE, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_STATE_VALUE_TEMPLATE as CONF_STATE_VALUE_TEMPLATE, CONF_WHITE_COMMAND_TOPIC as CONF_WHITE_COMMAND_TOPIC, CONF_WHITE_SCALE as CONF_WHITE_SCALE, CONF_XY_COMMAND_TEMPLATE as CONF_XY_COMMAND_TEMPLATE, CONF_XY_COMMAND_TOPIC as CONF_XY_COMMAND_TOPIC, CONF_XY_STATE_TOPIC as CONF_XY_STATE_TOPIC, CONF_XY_VALUE_TEMPLATE as CONF_XY_VALUE_TEMPLATE, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_ON_COMMAND_TYPE as DEFAULT_ON_COMMAND_TYPE, DEFAULT_PAYLOAD_OFF as DEFAULT_PAYLOAD_OFF, DEFAULT_PAYLOAD_ON as DEFAULT_PAYLOAD_ON, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE, PAYLOAD_NONE as PAYLOAD_NONE, VALUES_ON_COMMAND_TYPE as VALUES_ON_COMMAND_TYPE
|
4
4
|
from ..entity import MqttEntity as MqttEntity
|
5
5
|
from ..models import MqttCommandTemplate as MqttCommandTemplate, MqttValueTemplate as MqttValueTemplate, PayloadSentinel as PayloadSentinel, PublishPayloadType as PublishPayloadType, ReceiveMessage as ReceiveMessage, TemplateVarsType as TemplateVarsType
|
6
6
|
from ..schemas import MQTT_ENTITY_COMMON_SCHEMA as MQTT_ENTITY_COMMON_SCHEMA
|
@@ -19,7 +19,6 @@ from typing import Any
|
|
19
19
|
_LOGGER: Incomplete
|
20
20
|
DEFAULT_NAME: str
|
21
21
|
MQTT_LIGHT_ATTRIBUTES_BLOCKED: Incomplete
|
22
|
-
VALUES_ON_COMMAND_TYPE: Incomplete
|
23
22
|
COMMAND_TEMPLATE_KEYS: Incomplete
|
24
23
|
VALUE_TEMPLATE_KEYS: Incomplete
|
25
24
|
PLATFORM_SCHEMA_MODERN_BASIC: Incomplete
|
@@ -1,6 +1,6 @@
|
|
1
1
|
from .. import subscription as subscription
|
2
2
|
from ..config import DEFAULT_QOS as DEFAULT_QOS, DEFAULT_RETAIN as DEFAULT_RETAIN, MQTT_RW_SCHEMA as MQTT_RW_SCHEMA
|
3
|
-
from ..const import CONF_COLOR_MODE as CONF_COLOR_MODE, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_FLASH_TIME_LONG as CONF_FLASH_TIME_LONG, CONF_FLASH_TIME_SHORT as CONF_FLASH_TIME_SHORT, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_QOS as CONF_QOS, CONF_RETAIN as CONF_RETAIN, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_SUPPORTED_COLOR_MODES as CONF_SUPPORTED_COLOR_MODES, DEFAULT_BRIGHTNESS as DEFAULT_BRIGHTNESS, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_EFFECT as DEFAULT_EFFECT, DEFAULT_FLASH_TIME_LONG as DEFAULT_FLASH_TIME_LONG, DEFAULT_FLASH_TIME_SHORT as DEFAULT_FLASH_TIME_SHORT, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE
|
3
|
+
from ..const import CONF_COLOR_MODE as CONF_COLOR_MODE, CONF_COLOR_TEMP_KELVIN as CONF_COLOR_TEMP_KELVIN, CONF_COMMAND_TOPIC as CONF_COMMAND_TOPIC, CONF_EFFECT_LIST as CONF_EFFECT_LIST, CONF_FLASH as CONF_FLASH, CONF_FLASH_TIME_LONG as CONF_FLASH_TIME_LONG, CONF_FLASH_TIME_SHORT as CONF_FLASH_TIME_SHORT, CONF_MAX_KELVIN as CONF_MAX_KELVIN, CONF_MAX_MIREDS as CONF_MAX_MIREDS, CONF_MIN_KELVIN as CONF_MIN_KELVIN, CONF_MIN_MIREDS as CONF_MIN_MIREDS, CONF_QOS as CONF_QOS, CONF_RETAIN as CONF_RETAIN, CONF_STATE_TOPIC as CONF_STATE_TOPIC, CONF_SUPPORTED_COLOR_MODES as CONF_SUPPORTED_COLOR_MODES, CONF_TRANSITION as CONF_TRANSITION, DEFAULT_BRIGHTNESS as DEFAULT_BRIGHTNESS, DEFAULT_BRIGHTNESS_SCALE as DEFAULT_BRIGHTNESS_SCALE, DEFAULT_EFFECT as DEFAULT_EFFECT, DEFAULT_FLASH_TIME_LONG as DEFAULT_FLASH_TIME_LONG, DEFAULT_FLASH_TIME_SHORT as DEFAULT_FLASH_TIME_SHORT, DEFAULT_WHITE_SCALE as DEFAULT_WHITE_SCALE
|
4
4
|
from ..entity import MqttEntity as MqttEntity
|
5
5
|
from ..models import ReceiveMessage as ReceiveMessage
|
6
6
|
from ..schemas import MQTT_ENTITY_COMMON_SCHEMA as MQTT_ENTITY_COMMON_SCHEMA
|
@@ -20,6 +20,8 @@ from typing import Any
|
|
20
20
|
_LOGGER: Incomplete
|
21
21
|
DOMAIN: str
|
22
22
|
DEFAULT_NAME: str
|
23
|
+
DEFAULT_FLASH: bool
|
24
|
+
DEFAULT_TRANSITION: bool
|
23
25
|
_PLATFORM_SCHEMA_BASE: Incomplete
|
24
26
|
DISCOVERY_SCHEMA_JSON: Incomplete
|
25
27
|
PLATFORM_SCHEMA_MODERN_JSON: Incomplete
|
@@ -39,7 +41,6 @@ class MqttLightJson(MqttEntity, LightEntity, RestoreEntity):
|
|
39
41
|
_attr_max_color_temp_kelvin: Incomplete
|
40
42
|
_attr_effect_list: Incomplete
|
41
43
|
_attr_assumed_state: Incomplete
|
42
|
-
_attr_supported_features: Incomplete
|
43
44
|
_attr_supported_color_modes: Incomplete
|
44
45
|
_attr_color_mode: Incomplete
|
45
46
|
def _setup_from_config(self, config: ConfigType) -> None: ...
|
@@ -1,12 +1,14 @@
|
|
1
1
|
from .const import DEFAULT_NAME as DEFAULT_NAME, DOMAIN as DOMAIN
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from homeassistant.components import media_source as media_source
|
4
|
-
from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType
|
4
|
+
from homeassistant.components.media_player import BrowseError as BrowseError, BrowseMedia as BrowseMedia, MediaClass as MediaClass, MediaType as MediaType, SearchError as SearchError, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
6
|
from music_assistant_client import MusicAssistantClient as MusicAssistantClient
|
7
|
-
from music_assistant_models.
|
7
|
+
from music_assistant_models.enums import MediaType as MASSMediaType
|
8
|
+
from music_assistant_models.media_items import MediaItemType, SearchResults as SearchResults
|
8
9
|
from typing import Any
|
9
10
|
|
11
|
+
MEDIA_TYPE_AUDIOBOOK: str
|
10
12
|
MEDIA_TYPE_RADIO: str
|
11
13
|
PLAYABLE_MEDIA_TYPES: Incomplete
|
12
14
|
LIBRARY_ARTISTS: str
|
@@ -14,10 +16,14 @@ LIBRARY_ALBUMS: str
|
|
14
16
|
LIBRARY_TRACKS: str
|
15
17
|
LIBRARY_PLAYLISTS: str
|
16
18
|
LIBRARY_RADIO: str
|
19
|
+
LIBRARY_PODCASTS: str
|
20
|
+
LIBRARY_AUDIOBOOKS: str
|
17
21
|
LIBRARY_TITLE_MAP: Incomplete
|
18
22
|
LIBRARY_MEDIA_CLASS_MAP: Incomplete
|
19
23
|
MEDIA_CONTENT_TYPE_FLAC: str
|
20
24
|
THUMB_SIZE: int
|
25
|
+
SORT_NAME_DESC: str
|
26
|
+
LOGGER: Incomplete
|
21
27
|
|
22
28
|
def media_source_filter(item: BrowseMedia) -> bool: ...
|
23
29
|
async def async_browse_media(hass: HomeAssistant, mass: MusicAssistantClient, media_content_id: str | None, media_content_type: str | None) -> BrowseMedia: ...
|
@@ -29,5 +35,14 @@ async def build_artist_items_listing(mass: MusicAssistantClient, identifier: str
|
|
29
35
|
async def build_albums_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
30
36
|
async def build_album_items_listing(mass: MusicAssistantClient, identifier: str) -> BrowseMedia: ...
|
31
37
|
async def build_tracks_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
38
|
+
async def build_podcasts_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
39
|
+
async def build_audiobooks_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
32
40
|
async def build_radio_listing(mass: MusicAssistantClient) -> BrowseMedia: ...
|
33
41
|
def build_item(mass: MusicAssistantClient, item: MediaItemType, can_expand: bool = True, media_class: Any = None) -> BrowseMedia: ...
|
42
|
+
async def _search_within_album(mass: MusicAssistantClient, album_uri: str, search_query: str, limit: int) -> SearchMedia: ...
|
43
|
+
async def _search_within_artist(mass: MusicAssistantClient, artist_uri: str, search_query: str, limit: int) -> SearchResults: ...
|
44
|
+
def _get_media_types_from_query(query: SearchMediaQuery) -> list[MASSMediaType]: ...
|
45
|
+
def _process_search_results(mass: MusicAssistantClient, search_results: SearchResults, media_types: list[MASSMediaType]) -> list[BrowseMedia]: ...
|
46
|
+
def _should_expand_media_type(media_type: str) -> bool: ...
|
47
|
+
def _get_media_class_for_type(media_type: str) -> MediaClass | None: ...
|
48
|
+
async def async_search_media(mass: MusicAssistantClient, query: SearchMediaQuery) -> SearchMedia: ...
|
@@ -1,12 +1,12 @@
|
|
1
1
|
from . import MusicAssistantConfigEntry as MusicAssistantConfigEntry
|
2
2
|
from .const import ATTR_ACTIVE as ATTR_ACTIVE, ATTR_ACTIVE_QUEUE as ATTR_ACTIVE_QUEUE, ATTR_ALBUM as ATTR_ALBUM, ATTR_ANNOUNCE_VOLUME as ATTR_ANNOUNCE_VOLUME, ATTR_ARTIST as ATTR_ARTIST, ATTR_AUTO_PLAY as ATTR_AUTO_PLAY, ATTR_CURRENT_INDEX as ATTR_CURRENT_INDEX, ATTR_CURRENT_ITEM as ATTR_CURRENT_ITEM, ATTR_ELAPSED_TIME as ATTR_ELAPSED_TIME, ATTR_ITEMS as ATTR_ITEMS, ATTR_MASS_PLAYER_TYPE as ATTR_MASS_PLAYER_TYPE, ATTR_MEDIA_ID as ATTR_MEDIA_ID, ATTR_MEDIA_TYPE as ATTR_MEDIA_TYPE, ATTR_NEXT_ITEM as ATTR_NEXT_ITEM, ATTR_QUEUE_ID as ATTR_QUEUE_ID, ATTR_RADIO_MODE as ATTR_RADIO_MODE, ATTR_REPEAT_MODE as ATTR_REPEAT_MODE, ATTR_SHUFFLE_ENABLED as ATTR_SHUFFLE_ENABLED, ATTR_SOURCE_PLAYER as ATTR_SOURCE_PLAYER, ATTR_URL as ATTR_URL, ATTR_USE_PRE_ANNOUNCE as ATTR_USE_PRE_ANNOUNCE, DOMAIN as DOMAIN
|
3
3
|
from .entity import MusicAssistantEntity as MusicAssistantEntity
|
4
|
-
from .media_browser import async_browse_media as async_browse_media
|
4
|
+
from .media_browser import async_browse_media as async_browse_media, async_search_media as async_search_media
|
5
5
|
from .schemas import QUEUE_DETAILS_SCHEMA as QUEUE_DETAILS_SCHEMA, queue_item_dict_from_mass_item as queue_item_dict_from_mass_item
|
6
6
|
from _typeshed import Incomplete
|
7
7
|
from collections.abc import Callable as Callable, Coroutine, Mapping
|
8
8
|
from homeassistant.components import media_source as media_source
|
9
|
-
from homeassistant.components.media_player import ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEnqueue as MediaPlayerEnqueue, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, RepeatMode as RepeatMode, async_process_play_media_url as async_process_play_media_url
|
9
|
+
from homeassistant.components.media_player import ATTR_MEDIA_ENQUEUE as ATTR_MEDIA_ENQUEUE, ATTR_MEDIA_EXTRA as ATTR_MEDIA_EXTRA, BrowseMedia as BrowseMedia, MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEnqueue as MediaPlayerEnqueue, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, RepeatMode as RepeatMode, SearchMedia as SearchMedia, SearchMediaQuery as SearchMediaQuery, async_process_play_media_url as async_process_play_media_url
|
10
10
|
from homeassistant.const import ATTR_NAME as ATTR_NAME, STATE_OFF as STATE_OFF
|
11
11
|
from homeassistant.core import HomeAssistant as HomeAssistant, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
|
12
12
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
@@ -92,6 +92,7 @@ class MusicAssistantPlayer(MusicAssistantEntity, MediaPlayerEntity):
|
|
92
92
|
@catch_musicassistant_error
|
93
93
|
async def _async_handle_get_queue(self) -> ServiceResponse: ...
|
94
94
|
async def async_browse_media(self, media_content_type: MediaType | str | None = None, media_content_id: str | None = None) -> BrowseMedia: ...
|
95
|
+
async def async_search_media(self, query: SearchMediaQuery) -> SearchMedia: ...
|
95
96
|
_attr_media_image_url: Incomplete
|
96
97
|
def _update_media_image_url(self, player: Player, queue: PlayerQueue | None) -> None: ...
|
97
98
|
_attr_media_artist: Incomplete
|