homeassistant-stubs 2025.1.4__py3-none-any.whl → 2025.2.0b0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- homeassistant-stubs/auth/mfa_modules/__init__.pyi +2 -4
- homeassistant-stubs/auth/models.pyi +1 -1
- homeassistant-stubs/auth/permissions/__init__.pyi +1 -1
- homeassistant-stubs/auth/providers/__init__.pyi +2 -4
- homeassistant-stubs/backup_restore.pyi +2 -0
- homeassistant-stubs/components/airgradient/button.pyi +4 -1
- homeassistant-stubs/components/airgradient/config_flow.pyi +5 -3
- homeassistant-stubs/components/airgradient/entity.pyi +5 -0
- homeassistant-stubs/components/airgradient/number.pyi +4 -1
- homeassistant-stubs/components/airgradient/select.pyi +4 -1
- homeassistant-stubs/components/airgradient/sensor.pyi +2 -0
- homeassistant-stubs/components/airgradient/switch.pyi +5 -1
- homeassistant-stubs/components/airgradient/update.pyi +2 -1
- homeassistant-stubs/components/airnow/coordinator.pyi +1 -1
- homeassistant-stubs/components/airzone/__init__.pyi +2 -0
- homeassistant-stubs/components/airzone/config_flow.pyi +3 -2
- homeassistant-stubs/components/alarm_control_panel/__init__.pyi +1 -1
- homeassistant-stubs/components/androidtv_remote/config_flow.pyi +2 -2
- homeassistant-stubs/components/api/__init__.pyi +1 -1
- homeassistant-stubs/components/apple_tv/config_flow.pyi +2 -1
- homeassistant-stubs/components/apsystems/coordinator.pyi +1 -0
- homeassistant-stubs/components/aranet/sensor.pyi +1 -1
- homeassistant-stubs/components/arcam_fmj/config_flow.pyi +2 -2
- homeassistant-stubs/components/assist_pipeline/__init__.pyi +2 -2
- homeassistant-stubs/components/assist_pipeline/pipeline.pyi +4 -1
- homeassistant-stubs/components/assist_pipeline/select.pyi +2 -2
- homeassistant-stubs/components/assist_pipeline/websocket_api.pyi +2 -2
- homeassistant-stubs/components/assist_satellite/__init__.pyi +1 -1
- homeassistant-stubs/components/assist_satellite/entity.pyi +2 -0
- homeassistant-stubs/components/assist_satellite/intent.pyi +13 -0
- homeassistant-stubs/components/assist_satellite/websocket_api.pyi +0 -2
- homeassistant-stubs/components/automation/__init__.pyi +1 -1
- homeassistant-stubs/components/awair/config_flow.pyi +3 -2
- homeassistant-stubs/components/axis/config_flow.pyi +6 -4
- homeassistant-stubs/components/backup/__init__.pyi +6 -2
- homeassistant-stubs/components/backup/agent.pyi +6 -4
- homeassistant-stubs/components/backup/backup.pyi +1 -0
- homeassistant-stubs/components/backup/config.pyi +44 -1
- homeassistant-stubs/components/backup/http.pyi +7 -0
- homeassistant-stubs/components/backup/manager.pyi +42 -20
- homeassistant-stubs/components/backup/models.pyi +10 -3
- homeassistant-stubs/components/backup/store.pyi +7 -2
- homeassistant-stubs/components/backup/util.pyi +83 -0
- homeassistant-stubs/components/backup/websocket.pyi +5 -2
- homeassistant-stubs/components/baf/config_flow.pyi +2 -2
- homeassistant-stubs/components/bang_olufsen/config_flow.pyi +1 -1
- homeassistant-stubs/components/bang_olufsen/const.pyi +6 -0
- homeassistant-stubs/components/bang_olufsen/event.pyi +23 -0
- homeassistant-stubs/components/bang_olufsen/websocket.pyi +3 -2
- homeassistant-stubs/components/binary_sensor/__init__.pyi +1 -1
- homeassistant-stubs/components/blueprint/importer.pyi +0 -1
- homeassistant-stubs/components/blueprint/models.pyi +0 -1
- homeassistant-stubs/components/blueprint/websocket_api.pyi +0 -1
- homeassistant-stubs/components/bluesound/__init__.pyi +2 -0
- homeassistant-stubs/components/bluesound/config_flow.pyi +2 -3
- homeassistant-stubs/components/bluesound/coordinator.pyi +30 -0
- homeassistant-stubs/components/bluesound/media_player.pyi +10 -25
- homeassistant-stubs/components/bluetooth/__init__.pyi +2 -2
- homeassistant-stubs/components/bluetooth/api.pyi +3 -1
- homeassistant-stubs/components/bluetooth/config_flow.pyi +10 -3
- homeassistant-stubs/components/bluetooth/const.pyi +4 -0
- homeassistant-stubs/components/bluetooth/manager.pyi +5 -1
- homeassistant-stubs/components/bluetooth/passive_update_coordinator.pyi +1 -4
- homeassistant-stubs/components/bluetooth/storage.pyi +2 -0
- homeassistant-stubs/components/bluetooth/util.pyi +6 -1
- homeassistant-stubs/components/bluetooth/websocket_api.pyi +46 -0
- homeassistant-stubs/components/bond/config_flow.pyi +2 -2
- homeassistant-stubs/components/braviatv/config_flow.pyi +2 -2
- homeassistant-stubs/components/brother/config_flow.pyi +2 -2
- homeassistant-stubs/components/button/__init__.pyi +1 -1
- homeassistant-stubs/components/cambridge_audio/config_flow.pyi +2 -2
- homeassistant-stubs/components/camera/__init__.pyi +1 -1
- homeassistant-stubs/components/canary/__init__.pyi +7 -7
- homeassistant-stubs/components/canary/alarm_control_panel.pyi +2 -4
- homeassistant-stubs/components/canary/camera.pyi +3 -4
- homeassistant-stubs/components/canary/const.pyi +0 -2
- homeassistant-stubs/components/canary/coordinator.pyi +3 -1
- homeassistant-stubs/components/canary/sensor.pyi +3 -4
- homeassistant-stubs/components/climate/__init__.pyi +2 -2
- homeassistant-stubs/components/climate/const.pyi +1 -0
- homeassistant-stubs/components/climate/intent.pyi +9 -1
- homeassistant-stubs/components/cloud/__init__.pyi +1 -1
- homeassistant-stubs/components/cloud/backup.pyi +3 -9
- homeassistant-stubs/components/cloud/const.pyi +0 -1
- homeassistant-stubs/components/config/core.pyi +1 -1
- homeassistant-stubs/components/cookidoo/__init__.pyi +6 -2
- homeassistant-stubs/components/cookidoo/button.pyi +27 -0
- homeassistant-stubs/components/cookidoo/config_flow.pyi +4 -1
- homeassistant-stubs/components/cookidoo/const.pyi +3 -0
- homeassistant-stubs/components/cookidoo/coordinator.pyi +3 -1
- homeassistant-stubs/components/cookidoo/diagnostics.pyi +10 -0
- homeassistant-stubs/components/cookidoo/helpers.pyi +9 -0
- homeassistant-stubs/components/cookidoo/sensor.pyi +34 -0
- homeassistant-stubs/components/cover/__init__.pyi +1 -1
- homeassistant-stubs/components/crownstone/__init__.pyi +6 -5
- homeassistant-stubs/components/crownstone/config_flow.pyi +6 -4
- homeassistant-stubs/components/crownstone/entry_manager.pyi +6 -6
- homeassistant-stubs/components/crownstone/helpers.pyi +2 -1
- homeassistant-stubs/components/crownstone/light.pyi +3 -4
- homeassistant-stubs/components/date/__init__.pyi +1 -1
- homeassistant-stubs/components/datetime/__init__.pyi +1 -1
- homeassistant-stubs/components/deconz/__init__.pyi +5 -4
- homeassistant-stubs/components/deconz/alarm_control_panel.pyi +2 -2
- homeassistant-stubs/components/deconz/binary_sensor.pyi +2 -2
- homeassistant-stubs/components/deconz/button.pyi +2 -2
- homeassistant-stubs/components/deconz/climate.pyi +2 -2
- homeassistant-stubs/components/deconz/config_flow.pyi +3 -6
- homeassistant-stubs/components/deconz/cover.pyi +2 -2
- homeassistant-stubs/components/deconz/device_trigger.pyi +1 -2
- homeassistant-stubs/components/deconz/diagnostics.pyi +2 -3
- homeassistant-stubs/components/deconz/fan.pyi +2 -2
- homeassistant-stubs/components/deconz/hub/api.pyi +2 -2
- homeassistant-stubs/components/deconz/hub/config.pyi +3 -3
- homeassistant-stubs/components/deconz/hub/hub.pyi +4 -6
- homeassistant-stubs/components/deconz/light.pyi +2 -2
- homeassistant-stubs/components/deconz/lock.pyi +2 -3
- homeassistant-stubs/components/deconz/number.pyi +2 -2
- homeassistant-stubs/components/deconz/scene.pyi +2 -3
- homeassistant-stubs/components/deconz/select.pyi +2 -3
- homeassistant-stubs/components/deconz/sensor.pyi +2 -2
- homeassistant-stubs/components/deconz/services.pyi +2 -1
- homeassistant-stubs/components/deconz/siren.pyi +2 -3
- homeassistant-stubs/components/deconz/switch.pyi +2 -3
- homeassistant-stubs/components/deconz/util.pyi +7 -0
- homeassistant-stubs/components/device_tracker/config_entry.pyi +1 -1
- homeassistant-stubs/components/device_tracker/legacy.pyi +1 -1
- homeassistant-stubs/components/devolo_home_control/config_flow.pyi +2 -2
- homeassistant-stubs/components/devolo_home_network/config_flow.pyi +2 -1
- homeassistant-stubs/components/dhcp/__init__.pyi +6 -7
- homeassistant-stubs/components/discovergy/sensor.pyi +2 -0
- homeassistant-stubs/components/dlna_dmr/config_flow.pyi +7 -6
- homeassistant-stubs/components/dlna_dmr/media_player.pyi +2 -1
- homeassistant-stubs/components/dlna_dms/config_flow.pyi +5 -4
- homeassistant-stubs/components/dlna_dms/dms.pyi +3 -2
- homeassistant-stubs/components/doorbird/config_flow.pyi +2 -2
- homeassistant-stubs/components/doorbird/device.pyi +1 -1
- homeassistant-stubs/components/dormakaba_dkey/__init__.pyi +5 -9
- homeassistant-stubs/components/dormakaba_dkey/binary_sensor.pyi +3 -7
- homeassistant-stubs/components/dormakaba_dkey/coordinator.pyi +15 -0
- homeassistant-stubs/components/dormakaba_dkey/entity.pyi +4 -5
- homeassistant-stubs/components/dormakaba_dkey/lock.pyi +3 -7
- homeassistant-stubs/components/dormakaba_dkey/sensor.pyi +3 -7
- homeassistant-stubs/components/dunehd/__init__.pyi +4 -3
- homeassistant-stubs/components/dunehd/media_player.pyi +2 -2
- homeassistant-stubs/components/duotecno/__init__.pyi +4 -3
- homeassistant-stubs/components/duotecno/binary_sensor.pyi +2 -4
- homeassistant-stubs/components/duotecno/climate.pyi +2 -4
- homeassistant-stubs/components/duotecno/cover.pyi +2 -4
- homeassistant-stubs/components/duotecno/light.pyi +2 -4
- homeassistant-stubs/components/duotecno/switch.pyi +2 -4
- homeassistant-stubs/components/eheimdigital/climate.pyi +38 -0
- homeassistant-stubs/components/eheimdigital/config_flow.pyi +1 -1
- homeassistant-stubs/components/eheimdigital/const.pyi +4 -0
- homeassistant-stubs/components/electrasmart/__init__.pyi +6 -4
- homeassistant-stubs/components/electrasmart/climate.pyi +2 -2
- homeassistant-stubs/components/electric_kiwi/__init__.pyi +3 -5
- homeassistant-stubs/components/electric_kiwi/const.pyi +0 -2
- homeassistant-stubs/components/electric_kiwi/coordinator.pyi +10 -2
- homeassistant-stubs/components/electric_kiwi/select.pyi +3 -4
- homeassistant-stubs/components/electric_kiwi/sensor.pyi +3 -4
- homeassistant-stubs/components/elevenlabs/const.pyi +1 -0
- homeassistant-stubs/components/elevenlabs/tts.pyi +1 -1
- homeassistant-stubs/components/elgato/config_flow.pyi +3 -2
- homeassistant-stubs/components/elkm1/binary_sensor.pyi +1 -1
- homeassistant-stubs/components/elkm1/config_flow.pyi +2 -2
- homeassistant-stubs/components/elkm1/sensor.pyi +5 -5
- homeassistant-stubs/components/energenie_power_sockets/__init__.pyi +5 -4
- homeassistant-stubs/components/energenie_power_sockets/switch.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/config_flow.pyi +5 -5
- homeassistant-stubs/components/enphase_envoy/coordinator.pyi +7 -0
- homeassistant-stubs/components/enphase_envoy/select.pyi +2 -2
- homeassistant-stubs/components/enphase_envoy/sensor.pyi +1 -4
- homeassistant-stubs/components/esphome/__init__.pyi +1 -0
- homeassistant-stubs/components/esphome/bluetooth.pyi +1 -0
- homeassistant-stubs/components/esphome/config_flow.pyi +5 -3
- homeassistant-stubs/components/esphome/dashboard.pyi +2 -1
- homeassistant-stubs/components/esphome/manager.pyi +1 -1
- homeassistant-stubs/components/event/__init__.pyi +2 -2
- homeassistant-stubs/components/evil_genius_labs/__init__.pyi +3 -5
- homeassistant-stubs/components/evil_genius_labs/coordinator.pyi +4 -1
- homeassistant-stubs/components/evil_genius_labs/diagnostics.pyi +2 -4
- homeassistant-stubs/components/evil_genius_labs/light.pyi +2 -4
- homeassistant-stubs/components/fan/__init__.pyi +1 -1
- homeassistant-stubs/components/feedreader/__init__.pyi +3 -5
- homeassistant-stubs/components/feedreader/coordinator.pyi +5 -3
- homeassistant-stubs/components/filter/__init__.pyi +6 -4
- homeassistant-stubs/components/filter/config_flow.pyi +28 -0
- homeassistant-stubs/components/filter/const.pyi +29 -0
- homeassistant-stubs/components/filter/sensor.pyi +3 -24
- homeassistant-stubs/components/flux_led/config_flow.pyi +2 -2
- homeassistant-stubs/components/fritz/__init__.pyi +9 -7
- homeassistant-stubs/components/fritz/binary_sensor.pyi +2 -4
- homeassistant-stubs/components/fritz/button.pyi +3 -4
- homeassistant-stubs/components/fritz/config_flow.pyi +6 -5
- homeassistant-stubs/components/fritz/const.pyi +0 -3
- homeassistant-stubs/components/fritz/coordinator.pyi +12 -10
- homeassistant-stubs/components/fritz/device_tracker.pyi +2 -4
- homeassistant-stubs/components/fritz/diagnostics.pyi +2 -4
- homeassistant-stubs/components/fritz/image.pyi +2 -4
- homeassistant-stubs/components/fritz/sensor.pyi +3 -4
- homeassistant-stubs/components/fritz/services.pyi +5 -8
- homeassistant-stubs/components/fritz/switch.pyi +3 -4
- homeassistant-stubs/components/fritz/update.pyi +2 -4
- homeassistant-stubs/components/fritzbox/config_flow.pyi +2 -2
- homeassistant-stubs/components/fritzbox/coordinator.pyi +1 -1
- homeassistant-stubs/components/fronius/config_flow.pyi +1 -1
- homeassistant-stubs/components/frontend/__init__.pyi +1 -1
- homeassistant-stubs/components/fujitsu_fglair/climate.pyi +2 -8
- homeassistant-stubs/components/fujitsu_fglair/entity.pyi +15 -0
- homeassistant-stubs/components/fujitsu_fglair/sensor.pyi +21 -0
- homeassistant-stubs/components/fully_kiosk/config_flow.pyi +1 -1
- homeassistant-stubs/components/fyta/binary_sensor.pyi +23 -0
- homeassistant-stubs/components/fyta/entity.pyi +2 -2
- homeassistant-stubs/components/fyta/image.pyi +18 -0
- homeassistant-stubs/components/generic_thermostat/climate.pyi +1 -0
- homeassistant-stubs/components/geo_location/__init__.pyi +1 -1
- homeassistant-stubs/components/goalzero/config_flow.pyi +2 -2
- homeassistant-stubs/components/google_drive/__init__.pyi +17 -0
- homeassistant-stubs/components/google_drive/api.pyi +35 -0
- homeassistant-stubs/components/google_drive/application_credentials.pyi +5 -0
- homeassistant-stubs/components/google_drive/backup.pyi +28 -0
- homeassistant-stubs/components/google_drive/config_flow.pyi +24 -0
- homeassistant-stubs/components/google_drive/const.pyi +1 -0
- homeassistant-stubs/components/guardian/config_flow.pyi +4 -3
- homeassistant-stubs/components/habitica/__init__.pyi +16 -0
- homeassistant-stubs/components/habitica/binary_sensor.pyi +33 -0
- homeassistant-stubs/components/habitica/button.pyi +53 -0
- homeassistant-stubs/components/habitica/calendar.pyi +56 -0
- homeassistant-stubs/components/habitica/config_flow.pyi +27 -0
- homeassistant-stubs/components/habitica/const.pyi +44 -0
- homeassistant-stubs/components/habitica/coordinator.pyi +29 -0
- homeassistant-stubs/components/habitica/diagnostics.pyi +7 -0
- homeassistant-stubs/components/habitica/entity.pyi +14 -0
- homeassistant-stubs/components/habitica/image.pyi +26 -0
- homeassistant-stubs/components/habitica/sensor.pyi +81 -0
- homeassistant-stubs/components/habitica/services.pyi +24 -0
- homeassistant-stubs/components/habitica/switch.pyi +32 -0
- homeassistant-stubs/components/habitica/todo.pyi +43 -0
- homeassistant-stubs/components/habitica/types.pyi +10 -0
- homeassistant-stubs/components/habitica/util.pyi +15 -0
- homeassistant-stubs/components/heos/__init__.pyi +15 -0
- homeassistant-stubs/components/heos/config_flow.pyi +32 -0
- homeassistant-stubs/components/heos/const.pyi +5 -0
- homeassistant-stubs/components/heos/coordinator.pyi +44 -0
- homeassistant-stubs/components/heos/diagnostics.pyi +14 -0
- homeassistant-stubs/components/heos/media_player.pyi +95 -0
- homeassistant-stubs/components/heos/services.pyi +16 -0
- homeassistant-stubs/components/holiday/config_flow.pyi +3 -1
- homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +1 -3
- homeassistant-stubs/components/homeassistant_hardware/util.pyi +13 -1
- homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +4 -2
- homeassistant-stubs/components/homeassistant_sky_connect/util.pyi +2 -2
- homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -0
- homeassistant-stubs/components/homee/__init__.pyi +14 -0
- homeassistant-stubs/components/homee/config_flow.pyi +14 -0
- homeassistant-stubs/components/homee/const.pyi +9 -0
- homeassistant-stubs/components/homee/cover.pyi +43 -0
- homeassistant-stubs/components/homee/entity.pyi +43 -0
- homeassistant-stubs/components/homee/helpers.pyi +6 -0
- homeassistant-stubs/components/homee/sensor.pyi +49 -0
- homeassistant-stubs/components/homekit_controller/config_flow.pyi +3 -2
- homeassistant-stubs/components/homewizard/__init__.pyi +5 -0
- homeassistant-stubs/components/homewizard/config_flow.pyi +19 -19
- homeassistant-stubs/components/homewizard/const.pyi +0 -11
- homeassistant-stubs/components/homewizard/coordinator.pyi +6 -12
- homeassistant-stubs/components/homewizard/number.pyi +0 -1
- homeassistant-stubs/components/homewizard/repairs.pyi +17 -0
- homeassistant-stubs/components/homewizard/sensor.pyi +8 -5
- homeassistant-stubs/components/homewizard/switch.pyi +4 -4
- homeassistant-stubs/components/http/ban.pyi +0 -1
- homeassistant-stubs/components/huawei_lte/config_flow.pyi +2 -2
- homeassistant-stubs/components/humidifier/__init__.pyi +1 -1
- homeassistant-stubs/components/husqvarna_automower/__init__.pyi +0 -3
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +14 -0
- homeassistant-stubs/components/husqvarna_automower/number.pyi +1 -1
- homeassistant-stubs/components/hydrawise/__init__.pyi +3 -1
- homeassistant-stubs/components/hydrawise/config_flow.pyi +13 -5
- homeassistant-stubs/components/hydrawise/coordinator.pyi +4 -4
- homeassistant-stubs/components/hydrawise/switch.pyi +3 -3
- homeassistant-stubs/components/hyperion/config_flow.pyi +2 -2
- homeassistant-stubs/components/image/__init__.pyi +1 -1
- homeassistant-stubs/components/imgw_pib/__init__.pyi +1 -1
- homeassistant-stubs/components/imgw_pib/sensor.pyi +2 -1
- homeassistant-stubs/components/incomfort/__init__.pyi +18 -0
- homeassistant-stubs/components/incomfort/binary_sensor.pyi +33 -0
- homeassistant-stubs/components/incomfort/climate.pyi +42 -0
- homeassistant-stubs/components/incomfort/config_flow.pyi +37 -0
- homeassistant-stubs/components/incomfort/const.pyi +2 -0
- homeassistant-stubs/components/incomfort/coordinator.pyi +25 -0
- homeassistant-stubs/components/incomfort/diagnostics.pyi +12 -0
- homeassistant-stubs/components/incomfort/entity.pyi +14 -0
- homeassistant-stubs/components/incomfort/errors.pyi +18 -0
- homeassistant-stubs/components/incomfort/sensor.pyi +33 -0
- homeassistant-stubs/components/incomfort/water_heater.pyi +32 -0
- homeassistant-stubs/components/intent/__init__.pyi +1 -1
- homeassistant-stubs/components/intent/timers.pyi +1 -2
- homeassistant-stubs/components/ipp/config_flow.pyi +2 -2
- homeassistant-stubs/components/iron_os/button.pyi +31 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +4 -1
- homeassistant-stubs/components/iron_os/diagnostics.pyi +6 -0
- homeassistant-stubs/components/iron_os/number.pyi +1 -2
- homeassistant-stubs/components/iron_os/select.pyi +2 -4
- homeassistant-stubs/components/iron_os/switch.pyi +43 -0
- homeassistant-stubs/components/isy994/__init__.pyi +1 -2
- homeassistant-stubs/components/isy994/config_flow.pyi +4 -3
- homeassistant-stubs/components/kaleidescape/config_flow.pyi +2 -2
- homeassistant-stubs/components/knx/binary_sensor.pyi +18 -10
- homeassistant-stubs/components/knx/climate.pyi +10 -2
- homeassistant-stubs/components/knx/const.pyi +2 -0
- homeassistant-stubs/components/knx/entity.pyi +1 -1
- homeassistant-stubs/components/knx/light.pyi +1 -1
- homeassistant-stubs/components/knx/schema.pyi +5 -7
- homeassistant-stubs/components/knx/sensor.pyi +1 -1
- homeassistant-stubs/components/knx/storage/const.pyi +1 -0
- homeassistant-stubs/components/knx/storage/entity_store_schema.pyi +4 -2
- homeassistant-stubs/components/lamarzocco/config_flow.pyi +2 -2
- homeassistant-stubs/components/lametric/config_flow.pyi +2 -2
- homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -1
- homeassistant-stubs/components/lcn/__init__.pyi +2 -2
- homeassistant-stubs/components/lcn/climate.pyi +2 -1
- homeassistant-stubs/components/lcn/const.pyi +1 -0
- homeassistant-stubs/components/lcn/schemas.pyi +1 -1
- homeassistant-stubs/components/lektrico/config_flow.pyi +1 -1
- homeassistant-stubs/components/letpot/__init__.pyi +13 -0
- homeassistant-stubs/components/letpot/config_flow.pyi +19 -0
- homeassistant-stubs/components/letpot/const.pyi +6 -0
- homeassistant-stubs/components/letpot/coordinator.pyi +20 -0
- homeassistant-stubs/components/letpot/entity.pyi +10 -0
- homeassistant-stubs/components/letpot/time.pyi +33 -0
- homeassistant-stubs/components/lifx/config_flow.pyi +3 -3
- homeassistant-stubs/components/lifx/coordinator.pyi +1 -1
- homeassistant-stubs/components/lifx/manager.pyi +16 -1
- homeassistant-stubs/components/light/__init__.pyi +1 -1
- homeassistant-stubs/components/linkplay/config_flow.pyi +2 -2
- homeassistant-stubs/components/litterrobot/__init__.pyi +2 -6
- homeassistant-stubs/components/litterrobot/binary_sensor.pyi +6 -9
- homeassistant-stubs/components/litterrobot/button.pyi +6 -10
- homeassistant-stubs/components/litterrobot/{hub.pyi → coordinator.pyi} +11 -10
- homeassistant-stubs/components/litterrobot/entity.pyi +5 -7
- homeassistant-stubs/components/litterrobot/select.pyi +5 -14
- homeassistant-stubs/components/litterrobot/sensor.pyi +7 -7
- homeassistant-stubs/components/litterrobot/switch.pyi +7 -9
- homeassistant-stubs/components/litterrobot/time.pyi +3 -6
- homeassistant-stubs/components/litterrobot/update.pyi +1 -1
- homeassistant-stubs/components/litterrobot/vacuum.pyi +1 -5
- homeassistant-stubs/components/lock/__init__.pyi +1 -1
- homeassistant-stubs/components/logbook/models.pyi +1 -1
- homeassistant-stubs/components/lookin/config_flow.pyi +2 -2
- homeassistant-stubs/components/lovelace/__init__.pyi +39 -0
- homeassistant-stubs/components/lovelace/cast.pyi +18 -0
- homeassistant-stubs/components/lovelace/const.pyi +33 -0
- homeassistant-stubs/components/lovelace/dashboard.pyi +83 -0
- homeassistant-stubs/components/lovelace/resources.pyi +42 -0
- homeassistant-stubs/components/lovelace/system_health.pyi +9 -0
- homeassistant-stubs/components/lovelace/websocket.pyi +26 -0
- homeassistant-stubs/components/mastodon/config_flow.pyi +2 -3
- homeassistant-stubs/components/mastodon/notify.pyi +1 -3
- homeassistant-stubs/components/matter/config_flow.pyi +1 -1
- homeassistant-stubs/components/matter/cover.pyi +0 -1
- homeassistant-stubs/components/matter/discovery.pyi +2 -2
- homeassistant-stubs/components/matter/entity.pyi +11 -4
- homeassistant-stubs/components/matter/light.pyi +0 -1
- homeassistant-stubs/components/matter/lock.pyi +0 -2
- homeassistant-stubs/components/matter/models.pyi +10 -1
- homeassistant-stubs/components/matter/number.pyi +1 -1
- homeassistant-stubs/components/matter/select.pyi +32 -2
- homeassistant-stubs/components/matter/sensor.pyi +24 -0
- homeassistant-stubs/components/matter/switch.pyi +15 -2
- homeassistant-stubs/components/matter/vacuum.pyi +0 -1
- homeassistant-stubs/components/matter/valve.pyi +0 -2
- homeassistant-stubs/components/mcp/__init__.pyi +16 -0
- homeassistant-stubs/components/mcp/config_flow.pyi +23 -0
- homeassistant-stubs/components/mcp/const.pyi +1 -0
- homeassistant-stubs/components/mcp/coordinator.pyi +40 -0
- homeassistant-stubs/components/mcp/types.pyi +4 -0
- homeassistant-stubs/components/mcp_server/__init__.pyi +13 -0
- homeassistant-stubs/components/mcp_server/config_flow.pyi +14 -0
- homeassistant-stubs/components/mcp_server/const.pyi +2 -0
- homeassistant-stubs/components/mcp_server/http.pyi +31 -0
- homeassistant-stubs/components/mcp_server/server.pyi +13 -0
- homeassistant-stubs/components/mcp_server/session.pyi +20 -0
- homeassistant-stubs/components/mcp_server/types.pyi +4 -0
- homeassistant-stubs/components/media_player/__init__.pyi +1 -1
- homeassistant-stubs/components/media_source/__init__.pyi +1 -1
- homeassistant-stubs/components/media_source/models.pyi +1 -2
- homeassistant-stubs/components/minecraft_server/__init__.pyi +1 -1
- homeassistant-stubs/components/modbus/__init__.pyi +2 -2
- homeassistant-stubs/components/modbus/binary_sensor.pyi +1 -3
- homeassistant-stubs/components/modbus/climate.pyi +4 -3
- homeassistant-stubs/components/modbus/const.pyi +4 -0
- homeassistant-stubs/components/modbus/cover.pyi +1 -2
- homeassistant-stubs/components/modbus/entity.pyi +15 -8
- homeassistant-stubs/components/modbus/light.pyi +0 -1
- homeassistant-stubs/components/modbus/modbus.pyi +4 -0
- homeassistant-stubs/components/modbus/sensor.pyi +1 -2
- homeassistant-stubs/components/modbus/switch.pyi +0 -1
- homeassistant-stubs/components/modem_callerid/config_flow.pyi +2 -1
- homeassistant-stubs/components/motionmount/__init__.pyi +2 -2
- homeassistant-stubs/components/motionmount/config_flow.pyi +16 -6
- homeassistant-stubs/components/motionmount/entity.pyi +3 -2
- homeassistant-stubs/components/motionmount/select.pyi +2 -0
- homeassistant-stubs/components/mqtt/__init__.pyi +11 -34
- homeassistant-stubs/components/mqtt/alarm_control_panel.pyi +1 -1
- homeassistant-stubs/components/mqtt/config_flow.pyi +3 -5
- homeassistant-stubs/components/mqtt/const.pyi +7 -1
- homeassistant-stubs/components/mqtt/diagnostics.pyi +0 -1
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -1
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +2 -1
- homeassistant-stubs/components/mqtt/light/schema_template.pyi +2 -1
- homeassistant-stubs/components/music_assistant/config_flow.pyi +2 -2
- homeassistant-stubs/components/nam/config_flow.pyi +2 -2
- homeassistant-stubs/components/nanoleaf/config_flow.pyi +6 -5
- homeassistant-stubs/components/nest/__init__.pyi +3 -4
- homeassistant-stubs/components/nest/api.pyi +2 -2
- homeassistant-stubs/components/nest/climate.pyi +2 -0
- homeassistant-stubs/components/nest/config_flow.pyi +6 -2
- homeassistant-stubs/components/netatmo/button.pyi +25 -0
- homeassistant-stubs/components/netatmo/const.pyi +1 -0
- homeassistant-stubs/components/netatmo/data_handler.pyi +1 -1
- homeassistant-stubs/components/network/system_health.pyi +11 -0
- homeassistant-stubs/components/notify/__init__.pyi +1 -1
- homeassistant-stubs/components/number/__init__.pyi +2 -2
- homeassistant-stubs/components/nut/config_flow.pyi +2 -2
- homeassistant-stubs/components/onboarding/views.pyi +30 -2
- homeassistant-stubs/components/onedrive/__init__.pyi +25 -0
- homeassistant-stubs/components/onedrive/api.pyi +20 -0
- homeassistant-stubs/components/onedrive/application_credentials.pyi +5 -0
- homeassistant-stubs/components/onedrive/backup.pyi +40 -0
- homeassistant-stubs/components/onedrive/config_flow.pyi +19 -0
- homeassistant-stubs/components/onedrive/const.pyi +10 -0
- homeassistant-stubs/components/onewire/__init__.pyi +4 -4
- homeassistant-stubs/components/onewire/binary_sensor.pyi +8 -4
- homeassistant-stubs/components/onewire/config_flow.pyi +12 -7
- homeassistant-stubs/components/onewire/const.pyi +0 -2
- homeassistant-stubs/components/onewire/diagnostics.pyi +1 -1
- homeassistant-stubs/components/onewire/onewirehub.pyi +22 -14
- homeassistant-stubs/components/onewire/select.pyi +27 -0
- homeassistant-stubs/components/onewire/sensor.pyi +7 -4
- homeassistant-stubs/components/onewire/switch.pyi +8 -4
- homeassistant-stubs/components/onkyo/config_flow.pyi +9 -4
- homeassistant-stubs/components/open_meteo/__init__.pyi +4 -8
- homeassistant-stubs/components/open_meteo/coordinator.pyi +15 -0
- homeassistant-stubs/components/open_meteo/diagnostics.pyi +2 -5
- homeassistant-stubs/components/open_meteo/weather.pyi +3 -3
- homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -6
- homeassistant-stubs/components/overkiz/__init__.pyi +1 -1
- homeassistant-stubs/components/overkiz/climate/__init__.pyi +1 -0
- homeassistant-stubs/components/overkiz/climate/atlantic_pass_apc_zone_control_zone.pyi +1 -1
- homeassistant-stubs/components/overkiz/climate/evo_home_controller.pyi +24 -0
- homeassistant-stubs/components/overkiz/config_flow.pyi +4 -3
- homeassistant-stubs/components/overkiz/const.pyi +1 -0
- homeassistant-stubs/components/overkiz/coordinator.pyi +5 -3
- homeassistant-stubs/components/overseerr/__init__.pyi +37 -0
- homeassistant-stubs/components/overseerr/config_flow.pyi +14 -0
- homeassistant-stubs/components/overseerr/const.pyi +12 -0
- homeassistant-stubs/components/overseerr/coordinator.pyi +18 -0
- homeassistant-stubs/components/overseerr/diagnostics.pyi +6 -0
- homeassistant-stubs/components/overseerr/entity.pyi +11 -0
- homeassistant-stubs/components/overseerr/event.pyi +35 -0
- homeassistant-stubs/components/overseerr/sensor.pyi +27 -0
- homeassistant-stubs/components/overseerr/services.pyi +16 -0
- homeassistant-stubs/components/pandora/__init__.pyi +0 -0
- homeassistant-stubs/components/pandora/media_player.pyi +51 -0
- homeassistant-stubs/components/peblar/config_flow.pyi +3 -3
- homeassistant-stubs/components/person/__init__.pyi +103 -0
- homeassistant-stubs/components/person/const.pyi +1 -0
- homeassistant-stubs/components/person/significant_change.pyi +5 -0
- homeassistant-stubs/components/plugwise/config_flow.pyi +1 -1
- homeassistant-stubs/components/powerfox/sensor.pyi +3 -2
- homeassistant-stubs/components/powerwall/__init__.pyi +8 -3
- homeassistant-stubs/components/powerwall/config_flow.pyi +3 -3
- homeassistant-stubs/components/powerwall/const.pyi +2 -0
- homeassistant-stubs/components/proximity/__init__.pyi +2 -3
- homeassistant-stubs/components/proximity/coordinator.pyi +1 -2
- homeassistant-stubs/components/pure_energie/config_flow.pyi +2 -2
- homeassistant-stubs/components/python_script/__init__.pyi +48 -0
- homeassistant-stubs/components/qbus/__init__.pyi +15 -0
- homeassistant-stubs/components/qbus/config_flow.pyi +26 -0
- homeassistant-stubs/components/qbus/const.pyi +7 -0
- homeassistant-stubs/components/qbus/coordinator.pyi +48 -0
- homeassistant-stubs/components/qbus/entity.pyi +29 -0
- homeassistant-stubs/components/qbus/switch.pyi +21 -0
- homeassistant-stubs/components/qnap_qsw/config_flow.pyi +2 -2
- homeassistant-stubs/components/qnap_qsw/sensor.pyi +1 -4
- homeassistant-stubs/components/rabbitair/config_flow.pyi +2 -1
- homeassistant-stubs/components/rainforest_raven/config_flow.pyi +3 -2
- homeassistant-stubs/components/rainmachine/config_flow.pyi +4 -4
- homeassistant-stubs/components/recorder/auto_repairs/statistics/duplicates.pyi +1 -1
- homeassistant-stubs/components/recorder/const.pyi +0 -2
- homeassistant-stubs/components/recorder/core.pyi +2 -2
- homeassistant-stubs/components/recorder/db_schema.pyi +5 -2
- homeassistant-stubs/components/recorder/migration.pyi +1 -1
- homeassistant-stubs/components/recorder/models/state.pyi +1 -1
- homeassistant-stubs/components/recorder/util.pyi +1 -7
- homeassistant-stubs/components/remote/__init__.pyi +1 -1
- homeassistant-stubs/components/reolink/__init__.pyi +1 -0
- homeassistant-stubs/components/reolink/config_flow.pyi +6 -2
- homeassistant-stubs/components/reolink/entity.pyi +1 -1
- homeassistant-stubs/components/reolink/host.pyi +3 -0
- homeassistant-stubs/components/reolink/switch.pyi +5 -1
- homeassistant-stubs/components/reolink/util.pyi +2 -5
- homeassistant-stubs/components/repairs/__init__.pyi +1 -1
- homeassistant-stubs/components/ring/__init__.pyi +4 -15
- homeassistant-stubs/components/ring/binary_sensor.pyi +2 -0
- homeassistant-stubs/components/ring/button.pyi +1 -0
- homeassistant-stubs/components/ring/camera.pyi +1 -0
- homeassistant-stubs/components/ring/config_flow.pyi +2 -2
- homeassistant-stubs/components/ring/coordinator.pyi +14 -4
- homeassistant-stubs/components/ring/entity.pyi +1 -2
- homeassistant-stubs/components/ring/event.pyi +2 -0
- homeassistant-stubs/components/ring/light.pyi +1 -0
- homeassistant-stubs/components/ring/number.pyi +2 -0
- homeassistant-stubs/components/ring/sensor.pyi +2 -0
- homeassistant-stubs/components/ring/siren.pyi +1 -0
- homeassistant-stubs/components/ring/switch.pyi +1 -0
- homeassistant-stubs/components/roborock/__init__.pyi +2 -0
- homeassistant-stubs/components/roborock/const.pyi +4 -0
- homeassistant-stubs/components/roborock/coordinator.pyi +8 -4
- homeassistant-stubs/components/roborock/image.pyi +10 -11
- homeassistant-stubs/components/roborock/roborock_storage.pyi +21 -0
- homeassistant-stubs/components/roborock/sensor.pyi +1 -1
- homeassistant-stubs/components/roborock/vacuum.pyi +5 -1
- homeassistant-stubs/components/roku/config_flow.pyi +4 -3
- homeassistant-stubs/components/romy/config_flow.pyi +2 -2
- homeassistant-stubs/components/russound_rio/config_flow.pyi +6 -2
- homeassistant-stubs/components/russound_rio/const.pyi +0 -2
- homeassistant-stubs/components/russound_rio/media_player.pyi +13 -6
- homeassistant-stubs/components/ruuvi_gateway/config_flow.pyi +2 -2
- homeassistant-stubs/components/samsungtv/config_flow.pyi +6 -4
- homeassistant-stubs/components/scrape/sensor.pyi +2 -0
- homeassistant-stubs/components/script/__init__.pyi +1 -1
- homeassistant-stubs/components/select/__init__.pyi +2 -2
- homeassistant-stubs/components/sensibo/__init__.pyi +3 -3
- homeassistant-stubs/components/sensibo/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/sensibo/climate.pyi +13 -7
- homeassistant-stubs/components/sensibo/config_flow.pyi +1 -1
- homeassistant-stubs/components/sensibo/coordinator.pyi +2 -0
- homeassistant-stubs/components/sensibo/entity.pyi +5 -1
- homeassistant-stubs/components/sensibo/select.pyi +6 -1
- homeassistant-stubs/components/sensibo/sensor.pyi +2 -0
- homeassistant-stubs/components/sensor/__init__.pyi +2 -2
- homeassistant-stubs/components/shelly/__init__.pyi +2 -0
- homeassistant-stubs/components/shelly/binary_sensor.pyi +11 -6
- homeassistant-stubs/components/shelly/climate.pyi +25 -2
- homeassistant-stubs/components/shelly/config_flow.pyi +1 -1
- homeassistant-stubs/components/shelly/const.pyi +3 -0
- homeassistant-stubs/components/shelly/coordinator.pyi +3 -2
- homeassistant-stubs/components/shelly/entity.pyi +4 -1
- homeassistant-stubs/components/shelly/number.pyi +21 -13
- homeassistant-stubs/components/shelly/sensor.pyi +12 -7
- homeassistant-stubs/components/shelly/utils.pyi +1 -1
- homeassistant-stubs/components/siren/__init__.pyi +1 -1
- homeassistant-stubs/components/slack/config_flow.pyi +2 -1
- homeassistant-stubs/components/slack/entity.pyi +3 -5
- homeassistant-stubs/components/slack/notify.pyi +4 -2
- homeassistant-stubs/components/slack/sensor.pyi +2 -2
- homeassistant-stubs/components/slack/utils.pyi +6 -0
- homeassistant-stubs/components/smhi/config_flow.pyi +1 -1
- homeassistant-stubs/components/smhi/weather.pyi +3 -3
- homeassistant-stubs/components/smlight/config_flow.pyi +2 -2
- homeassistant-stubs/components/spotify/__init__.pyi +1 -1
- homeassistant-stubs/components/spotify/browse_media.pyi +1 -1
- homeassistant-stubs/components/spotify/coordinator.pyi +2 -0
- homeassistant-stubs/components/squeezebox/config_flow.pyi +2 -2
- homeassistant-stubs/components/ssdp/__init__.pyi +34 -44
- homeassistant-stubs/components/starlink/coordinator.pyi +1 -0
- homeassistant-stubs/components/steamist/config_flow.pyi +2 -2
- homeassistant-stubs/components/stream/__init__.pyi +3 -15
- homeassistant-stubs/components/stream/const.pyi +9 -1
- homeassistant-stubs/components/stream/exceptions.pyi +13 -0
- homeassistant-stubs/components/stream/worker.pyi +4 -5
- homeassistant-stubs/components/stt/__init__.pyi +1 -1
- homeassistant-stubs/components/suez_water/__init__.pyi +4 -0
- homeassistant-stubs/components/switch/__init__.pyi +1 -1
- homeassistant-stubs/components/switchbot_cloud/__init__.pyi +5 -5
- homeassistant-stubs/components/switchbot_cloud/button.pyi +17 -0
- homeassistant-stubs/components/switchbot_cloud/entity.pyi +5 -0
- homeassistant-stubs/components/switchbot_cloud/lock.pyi +2 -3
- homeassistant-stubs/components/switchbot_cloud/sensor.pyi +5 -5
- homeassistant-stubs/components/switchbot_cloud/switch.pyi +3 -6
- homeassistant-stubs/components/switchbot_cloud/vacuum.pyi +1 -2
- homeassistant-stubs/components/switcher_kis/switch.pyi +29 -0
- homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -2
- homeassistant-stubs/components/synology_dsm/backup.pyi +34 -0
- homeassistant-stubs/components/synology_dsm/common.pyi +5 -2
- homeassistant-stubs/components/synology_dsm/config_flow.pyi +11 -4
- homeassistant-stubs/components/synology_dsm/const.pyi +6 -0
- homeassistant-stubs/components/synology_dsm/coordinator.pyi +1 -1
- homeassistant-stubs/components/systemmonitor/__init__.pyi +3 -3
- homeassistant-stubs/components/systemmonitor/config_flow.pyi +0 -4
- homeassistant-stubs/components/systemmonitor/coordinator.pyi +2 -1
- homeassistant-stubs/components/tailwind/config_flow.pyi +3 -3
- homeassistant-stubs/components/technove/binary_sensor.pyi +0 -4
- homeassistant-stubs/components/technove/config_flow.pyi +3 -2
- homeassistant-stubs/components/tedee/coordinator.pyi +1 -1
- homeassistant-stubs/components/text/__init__.pyi +1 -1
- homeassistant-stubs/components/tile/__init__.pyi +4 -15
- homeassistant-stubs/components/tile/binary_sensor.pyi +24 -0
- homeassistant-stubs/components/tile/config_flow.pyi +0 -1
- homeassistant-stubs/components/tile/coordinator.pyi +18 -0
- homeassistant-stubs/components/tile/device_tracker.pyi +6 -20
- homeassistant-stubs/components/tile/diagnostics.pyi +2 -4
- homeassistant-stubs/components/tile/entity.pyi +13 -0
- homeassistant-stubs/components/time/__init__.pyi +1 -1
- homeassistant-stubs/components/todo/__init__.pyi +1 -1
- homeassistant-stubs/components/tolo/config_flow.pyi +2 -2
- homeassistant-stubs/components/tplink/__init__.pyi +3 -6
- homeassistant-stubs/components/tplink/binary_sensor.pyi +1 -0
- homeassistant-stubs/components/tplink/button.pyi +2 -1
- homeassistant-stubs/components/tplink/camera.pyi +9 -9
- homeassistant-stubs/components/tplink/climate.pyi +18 -12
- homeassistant-stubs/components/tplink/config_flow.pyi +3 -2
- homeassistant-stubs/components/tplink/const.pyi +1 -1
- homeassistant-stubs/components/tplink/coordinator.pyi +20 -4
- homeassistant-stubs/components/tplink/deprecate.pyi +5 -3
- homeassistant-stubs/components/tplink/entity.pyi +30 -11
- homeassistant-stubs/components/tplink/fan.pyi +15 -7
- homeassistant-stubs/components/tplink/light.pyi +22 -11
- homeassistant-stubs/components/tplink/number.pyi +1 -0
- homeassistant-stubs/components/tplink/select.pyi +1 -0
- homeassistant-stubs/components/tplink/sensor.pyi +7 -2
- homeassistant-stubs/components/tplink/siren.pyi +22 -7
- homeassistant-stubs/components/tplink/switch.pyi +1 -0
- homeassistant-stubs/components/tplink/vacuum.pyi +43 -0
- homeassistant-stubs/components/tradfri/config_flow.pyi +2 -2
- homeassistant-stubs/components/trafikverket_camera/__init__.pyi +2 -2
- homeassistant-stubs/components/trafikverket_camera/camera.pyi +2 -0
- homeassistant-stubs/components/trafikverket_ferry/__init__.pyi +1 -1
- homeassistant-stubs/components/trafikverket_ferry/coordinator.pyi +1 -1
- homeassistant-stubs/components/trafikverket_ferry/sensor.pyi +1 -0
- homeassistant-stubs/components/trafikverket_train/__init__.pyi +6 -3
- homeassistant-stubs/components/trafikverket_train/config_flow.pyi +10 -4
- homeassistant-stubs/components/trafikverket_train/coordinator.pyi +2 -2
- homeassistant-stubs/components/trafikverket_train/sensor.pyi +1 -0
- homeassistant-stubs/components/trafikverket_weatherstation/__init__.pyi +1 -1
- homeassistant-stubs/components/trafikverket_weatherstation/coordinator.pyi +1 -1
- homeassistant-stubs/components/trafikverket_weatherstation/diagnostics.pyi +5 -0
- homeassistant-stubs/components/trafikverket_weatherstation/sensor.pyi +1 -0
- homeassistant-stubs/components/tts/__init__.pyi +2 -2
- homeassistant-stubs/components/unifi/config_flow.pyi +2 -2
- homeassistant-stubs/components/unifi/device_tracker.pyi +1 -1
- homeassistant-stubs/components/unifi/switch.pyi +1 -0
- homeassistant-stubs/components/unifiprotect/__init__.pyi +1 -1
- homeassistant-stubs/components/unifiprotect/config_flow.pyi +4 -3
- homeassistant-stubs/components/unifiprotect/light.pyi +1 -1
- homeassistant-stubs/components/unifiprotect/views.pyi +8 -0
- homeassistant-stubs/components/upcloud/__init__.pyi +6 -12
- homeassistant-stubs/components/upcloud/binary_sensor.pyi +2 -4
- homeassistant-stubs/components/upcloud/config_flow.pyi +3 -2
- homeassistant-stubs/components/upcloud/const.pyi +0 -1
- homeassistant-stubs/components/upcloud/coordinator.pyi +3 -2
- homeassistant-stubs/components/upcloud/entity.pyi +3 -3
- homeassistant-stubs/components/upcloud/switch.pyi +3 -4
- homeassistant-stubs/components/update/__init__.pyi +2 -2
- homeassistant-stubs/components/usb/__init__.pyi +21 -18
- homeassistant-stubs/components/usb/models.pyi +1 -1
- homeassistant-stubs/components/vacuum/__init__.pyi +1 -1
- homeassistant-stubs/components/velbus/config_flow.pyi +2 -2
- homeassistant-stubs/components/velbus/const.pyi +1 -0
- homeassistant-stubs/components/velbus/diagnostics.pyi +1 -3
- homeassistant-stubs/components/velbus/entity.pyi +4 -0
- homeassistant-stubs/components/velbus/services.pyi +5 -1
- homeassistant-stubs/components/wake_word/__init__.pyi +1 -1
- homeassistant-stubs/components/water_heater/__init__.pyi +7 -3
- homeassistant-stubs/components/weather/__init__.pyi +2 -3
- homeassistant-stubs/components/webhook/__init__.pyi +0 -1
- homeassistant-stubs/components/webostv/__init__.pyi +8 -24
- homeassistant-stubs/components/webostv/config_flow.pyi +14 -13
- homeassistant-stubs/components/webostv/const.pyi +0 -1
- homeassistant-stubs/components/webostv/device_trigger.pyi +1 -2
- homeassistant-stubs/components/webostv/diagnostics.pyi +2 -3
- homeassistant-stubs/components/webostv/helpers.pyi +11 -4
- homeassistant-stubs/components/webostv/media_player.pyi +17 -13
- homeassistant-stubs/components/webostv/notify.pyi +6 -4
- homeassistant-stubs/components/webostv/trigger.pyi +2 -0
- homeassistant-stubs/components/wiz/config_flow.pyi +3 -2
- homeassistant-stubs/components/wled/config_flow.pyi +3 -2
- homeassistant-stubs/components/worldclock/sensor.pyi +2 -7
- homeassistant-stubs/components/zeroconf/__init__.pyi +12 -20
- homeassistant-stubs/components/zwave_js/api.pyi +1 -1
- homeassistant-stubs/components/zwave_js/config_flow.pyi +3 -2
- homeassistant-stubs/config_entries.pyi +7 -9
- homeassistant-stubs/const.pyi +2 -0
- homeassistant-stubs/core.pyi +2 -3
- homeassistant-stubs/core_config.pyi +3 -3
- homeassistant-stubs/data_entry_flow.pyi +1 -2
- homeassistant-stubs/helpers/aiohttp_client.pyi +12 -1
- homeassistant-stubs/helpers/area_registry.pyi +11 -4
- homeassistant-stubs/helpers/collection.pyi +5 -7
- homeassistant-stubs/helpers/config_entry_flow.pyi +3 -3
- homeassistant-stubs/helpers/data_entry_flow.pyi +1 -2
- homeassistant-stubs/helpers/deprecation.pyi +2 -2
- homeassistant-stubs/helpers/device_registry.pyi +1 -1
- homeassistant-stubs/helpers/entity.pyi +1 -1
- homeassistant-stubs/helpers/entity_component.pyi +2 -4
- homeassistant-stubs/helpers/entity_registry.pyi +2 -2
- homeassistant-stubs/helpers/frame.pyi +1 -1
- homeassistant-stubs/helpers/httpx_client.pyi +2 -1
- homeassistant-stubs/helpers/intent.pyi +4 -2
- homeassistant-stubs/helpers/llm.pyi +17 -7
- homeassistant-stubs/helpers/script.pyi +1 -1
- homeassistant-stubs/helpers/service_info/dhcp.pyi +8 -0
- homeassistant-stubs/helpers/service_info/ssdp.pyi +34 -0
- homeassistant-stubs/helpers/service_info/usb.pyi +11 -0
- homeassistant-stubs/helpers/service_info/zeroconf.pyi +20 -0
- homeassistant-stubs/helpers/singleton.pyi +6 -2
- homeassistant-stubs/helpers/storage.pyi +1 -1
- homeassistant-stubs/helpers/template.pyi +4 -4
- homeassistant-stubs/helpers/update_coordinator.pyi +3 -5
- homeassistant-stubs/loader.pyi +1 -1
- homeassistant-stubs/scripts/benchmark/__init__.pyi +8 -8
- homeassistant-stubs/util/event_type.pyi +1 -2
- homeassistant-stubs/util/ulid.pyi +1 -1
- homeassistant-stubs/util/yaml/__init__.pyi +1 -1
- homeassistant-stubs/util/yaml/loader.pyi +1 -1
- {homeassistant_stubs-2025.1.4.dist-info → homeassistant_stubs-2025.2.0b0.dist-info}/METADATA +4 -4
- {homeassistant_stubs-2025.1.4.dist-info → homeassistant_stubs-2025.2.0b0.dist-info}/RECORD +719 -584
- homeassistant-stubs/components/dormakaba_dkey/models.pyi +0 -8
- homeassistant-stubs/components/imgw_pib/binary_sensor.pyi +0 -27
- homeassistant-stubs/components/tplink/models.pyi +0 -10
- {homeassistant_stubs-2025.1.4.dist-info → homeassistant_stubs-2025.2.0b0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.1.4.dist-info → homeassistant_stubs-2025.2.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -14,6 +14,7 @@ async def async_get_backup_agents(hass: HomeAssistant, **kwargs: Any) -> list[Ba
|
|
14
14
|
class CoreLocalBackupAgent(LocalBackupAgent):
|
15
15
|
domain = DOMAIN
|
16
16
|
name: str
|
17
|
+
unique_id: str
|
17
18
|
_hass: Incomplete
|
18
19
|
_backup_dir: Incomplete
|
19
20
|
_backups: dict[str, AgentBackup]
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import datetime as dt
|
1
2
|
from .const import LOGGER as LOGGER
|
2
3
|
from .manager import BackupManager as BackupManager, ManagerBackup as ManagerBackup
|
3
4
|
from .models import BackupManagerError as BackupManagerError, Folder as Folder
|
@@ -14,9 +15,11 @@ from typing import Self, TypedDict
|
|
14
15
|
|
15
16
|
CRON_PATTERN_DAILY: str
|
16
17
|
CRON_PATTERN_WEEKLY: str
|
18
|
+
DEFAULT_BACKUP_TIME: Incomplete
|
17
19
|
BACKUP_START_TIME_JITTER: Incomplete
|
18
20
|
|
19
21
|
class StoredBackupConfig(TypedDict):
|
22
|
+
agents: dict[str, StoredAgentConfig]
|
20
23
|
create_backup: StoredCreateBackupConfig
|
21
24
|
last_attempted_automatic_backup: str | None
|
22
25
|
last_completed_automatic_backup: str | None
|
@@ -25,6 +28,7 @@ class StoredBackupConfig(TypedDict):
|
|
25
28
|
|
26
29
|
@dataclass(kw_only=True)
|
27
30
|
class BackupConfigData:
|
31
|
+
agents: dict[str, AgentConfig]
|
28
32
|
create_backup: CreateBackupConfig
|
29
33
|
last_attempted_automatic_backup: datetime | None = ...
|
30
34
|
last_completed_automatic_backup: datetime | None = ...
|
@@ -39,7 +43,18 @@ class BackupConfig:
|
|
39
43
|
_manager: Incomplete
|
40
44
|
def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
|
41
45
|
def load(self, stored_config: StoredBackupConfig) -> None: ...
|
42
|
-
async def update(self, *, create_backup: CreateBackupParametersDict | UndefinedType = ..., retention: RetentionParametersDict | UndefinedType = ..., schedule:
|
46
|
+
async def update(self, *, agents: dict[str, AgentParametersDict] | UndefinedType = ..., create_backup: CreateBackupParametersDict | UndefinedType = ..., retention: RetentionParametersDict | UndefinedType = ..., schedule: ScheduleParametersDict | UndefinedType = ...) -> None: ...
|
47
|
+
|
48
|
+
@dataclass(kw_only=True)
|
49
|
+
class AgentConfig:
|
50
|
+
protected: bool
|
51
|
+
def to_dict(self) -> StoredAgentConfig: ...
|
52
|
+
|
53
|
+
class StoredAgentConfig(TypedDict):
|
54
|
+
protected: bool
|
55
|
+
|
56
|
+
class AgentParametersDict(TypedDict, total=False):
|
57
|
+
protected: bool
|
43
58
|
|
44
59
|
@dataclass(kw_only=True)
|
45
60
|
class RetentionConfig:
|
@@ -61,7 +76,30 @@ class RetentionParametersDict(TypedDict, total=False):
|
|
61
76
|
days: int | None
|
62
77
|
|
63
78
|
class StoredBackupSchedule(TypedDict):
|
79
|
+
days: list[Day]
|
80
|
+
recurrence: ScheduleRecurrence
|
64
81
|
state: ScheduleState
|
82
|
+
time: str | None
|
83
|
+
|
84
|
+
class ScheduleParametersDict(TypedDict, total=False):
|
85
|
+
days: list[Day]
|
86
|
+
recurrence: ScheduleRecurrence
|
87
|
+
state: ScheduleState
|
88
|
+
time: dt.time | None
|
89
|
+
|
90
|
+
class Day(StrEnum):
|
91
|
+
MONDAY = 'mon'
|
92
|
+
TUESDAY = 'tue'
|
93
|
+
WEDNESDAY = 'wed'
|
94
|
+
THURSDAY = 'thu'
|
95
|
+
FRIDAY = 'fri'
|
96
|
+
SATURDAY = 'sat'
|
97
|
+
SUNDAY = 'sun'
|
98
|
+
|
99
|
+
class ScheduleRecurrence(StrEnum):
|
100
|
+
NEVER = 'never'
|
101
|
+
DAILY = 'daily'
|
102
|
+
CUSTOM_DAYS = 'custom_days'
|
65
103
|
|
66
104
|
class ScheduleState(StrEnum):
|
67
105
|
NEVER = 'never'
|
@@ -76,8 +114,13 @@ class ScheduleState(StrEnum):
|
|
76
114
|
|
77
115
|
@dataclass(kw_only=True)
|
78
116
|
class BackupSchedule:
|
117
|
+
days: list[Day] = field(default_factory=list)
|
118
|
+
recurrence: ScheduleRecurrence = ...
|
79
119
|
state: ScheduleState = ...
|
120
|
+
time: dt.time | None = ...
|
80
121
|
cron_event: CronSim | None = field(init=False, default=None)
|
122
|
+
next_automatic_backup: datetime | None = field(init=False, default=None)
|
123
|
+
next_automatic_backup_additional = ...
|
81
124
|
@callback
|
82
125
|
def apply(self, manager: BackupManager) -> None: ...
|
83
126
|
@callback
|
@@ -1,9 +1,13 @@
|
|
1
|
+
from . import util as util
|
2
|
+
from .agent import BackupAgent as BackupAgent
|
1
3
|
from .const import DATA_MANAGER as DATA_MANAGER
|
4
|
+
from .manager import BackupManager as BackupManager
|
2
5
|
from aiohttp.web import FileResponse, Request as Request, Response, StreamResponse
|
3
6
|
from homeassistant.components.http import HomeAssistantView as HomeAssistantView, KEY_HASS as KEY_HASS, require_admin as require_admin
|
4
7
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
5
8
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
9
|
from homeassistant.util import slugify as slugify
|
10
|
+
from multidict import istr
|
7
11
|
|
8
12
|
@callback
|
9
13
|
def async_register_http_views(hass: HomeAssistant) -> None: ...
|
@@ -12,9 +16,12 @@ class DownloadBackupView(HomeAssistantView):
|
|
12
16
|
url: str
|
13
17
|
name: str
|
14
18
|
async def get(self, request: Request, backup_id: str) -> StreamResponse | FileResponse | Response: ...
|
19
|
+
async def _send_backup_no_password(self, request: Request, headers: dict[istr, str], backup_id: str, agent_id: str, agent: BackupAgent, manager: BackupManager) -> StreamResponse | FileResponse | Response: ...
|
20
|
+
async def _send_backup_with_password(self, hass: HomeAssistant, request: Request, headers: dict[istr, str], backup_id: str, agent_id: str, password: str, agent: BackupAgent, manager: BackupManager) -> StreamResponse | FileResponse | Response: ...
|
15
21
|
|
16
22
|
class UploadBackupView(HomeAssistantView):
|
17
23
|
url: str
|
18
24
|
name: str
|
19
25
|
@require_admin
|
20
26
|
async def post(self, request: Request) -> Response: ...
|
27
|
+
async def _post(self, request: Request) -> Response: ...
|
@@ -4,16 +4,15 @@ import asyncio
|
|
4
4
|
from .agent import BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupAgentPlatformProtocol as BackupAgentPlatformProtocol, LocalBackupAgent as LocalBackupAgent
|
5
5
|
from .config import BackupConfig as BackupConfig, delete_backups_exceeding_configured_count as delete_backups_exceeding_configured_count
|
6
6
|
from .const import BUF_SIZE as BUF_SIZE, DATA_MANAGER as DATA_MANAGER, DOMAIN as DOMAIN, EXCLUDE_DATABASE_FROM_BACKUP as EXCLUDE_DATABASE_FROM_BACKUP, EXCLUDE_FROM_BACKUP as EXCLUDE_FROM_BACKUP, LOGGER as LOGGER
|
7
|
-
from .models import AgentBackup as AgentBackup, BackupManagerError as BackupManagerError, Folder as Folder
|
7
|
+
from .models import AgentBackup as AgentBackup, BackupError as BackupError, BackupManagerError as BackupManagerError, BaseBackup as BaseBackup, Folder as Folder
|
8
8
|
from .store import BackupStore as BackupStore
|
9
|
-
from .util import make_backup_dir as make_backup_dir, read_backup as read_backup, validate_password as validate_password
|
9
|
+
from .util import AsyncIteratorReader as AsyncIteratorReader, DecryptedBackupStreamer as DecryptedBackupStreamer, EncryptedBackupStreamer as EncryptedBackupStreamer, make_backup_dir as make_backup_dir, read_backup as read_backup, validate_password as validate_password, validate_password_stream as validate_password_stream
|
10
10
|
from _typeshed import Incomplete
|
11
11
|
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
12
12
|
from dataclasses import dataclass
|
13
13
|
from enum import StrEnum
|
14
|
-
from homeassistant.backup_restore import RESTORE_BACKUP_FILE as RESTORE_BACKUP_FILE, password_to_key as password_to_key
|
14
|
+
from homeassistant.backup_restore import RESTORE_BACKUP_FILE as RESTORE_BACKUP_FILE, RESTORE_BACKUP_RESULT_FILE as RESTORE_BACKUP_RESULT_FILE, password_to_key as password_to_key
|
15
15
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
16
|
-
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
17
16
|
from homeassistant.helpers import instance_id as instance_id, integration_platform as integration_platform
|
18
17
|
from homeassistant.helpers.json import json_bytes as json_bytes
|
19
18
|
from pathlib import Path
|
@@ -24,8 +23,13 @@ class NewBackup:
|
|
24
23
|
backup_job_id: str
|
25
24
|
|
26
25
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
27
|
-
class
|
28
|
-
|
26
|
+
class AgentBackupStatus:
|
27
|
+
protected: bool
|
28
|
+
size: int
|
29
|
+
|
30
|
+
@dataclass(frozen=True, kw_only=True, slots=True)
|
31
|
+
class ManagerBackup(BaseBackup):
|
32
|
+
agents: dict[str, AgentBackupStatus]
|
29
33
|
failed_agent_ids: list[str]
|
30
34
|
with_automatic_settings: bool | None
|
31
35
|
|
@@ -79,6 +83,7 @@ class RestoreBackupStage(StrEnum):
|
|
79
83
|
|
80
84
|
class RestoreBackupState(StrEnum):
|
81
85
|
COMPLETED = 'completed'
|
86
|
+
CORE_RESTART = 'core_restart'
|
82
87
|
FAILED = 'failed'
|
83
88
|
IN_PROGRESS = 'in_progress'
|
84
89
|
|
@@ -93,18 +98,21 @@ class IdleEvent(ManagerStateEvent):
|
|
93
98
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
94
99
|
class CreateBackupEvent(ManagerStateEvent):
|
95
100
|
manager_state: BackupManagerState = ...
|
101
|
+
reason: str | None
|
96
102
|
stage: CreateBackupStage | None
|
97
103
|
state: CreateBackupState
|
98
104
|
|
99
105
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
100
106
|
class ReceiveBackupEvent(ManagerStateEvent):
|
101
107
|
manager_state: BackupManagerState = ...
|
108
|
+
reason: str | None
|
102
109
|
stage: ReceiveBackupStage | None
|
103
110
|
state: ReceiveBackupState
|
104
111
|
|
105
112
|
@dataclass(frozen=True, kw_only=True, slots=True)
|
106
113
|
class RestoreBackupEvent(ManagerStateEvent):
|
107
114
|
manager_state: BackupManagerState = ...
|
115
|
+
reason: str | None
|
108
116
|
stage: RestoreBackupStage | None
|
109
117
|
state: RestoreBackupState
|
110
118
|
|
@@ -114,14 +122,24 @@ class BackupPlatformProtocol(Protocol):
|
|
114
122
|
|
115
123
|
class BackupReaderWriter(abc.ABC, metaclass=abc.ABCMeta):
|
116
124
|
@abc.abstractmethod
|
117
|
-
async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[
|
125
|
+
async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[CreateBackupEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
|
118
126
|
@abc.abstractmethod
|
119
127
|
async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
|
120
128
|
@abc.abstractmethod
|
121
|
-
async def async_restore_backup(self, backup_id: str, *, agent_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
129
|
+
async def async_restore_backup(self, backup_id: str, *, agent_id: str, on_progress: Callable[[RestoreBackupEvent], None], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
130
|
+
@abc.abstractmethod
|
131
|
+
async def async_resume_restore_progress_after_restart(self, *, on_progress: Callable[[RestoreBackupEvent | IdleEvent], None]) -> None: ...
|
132
|
+
|
133
|
+
class BackupReaderWriterError(BackupError):
|
134
|
+
error_code: str
|
135
|
+
|
136
|
+
class IncorrectPasswordError(BackupReaderWriterError):
|
137
|
+
error_code: str
|
138
|
+
_message: str
|
122
139
|
|
123
|
-
class
|
124
|
-
|
140
|
+
class DecryptOnDowloadNotSupported(BackupManagerError):
|
141
|
+
error_code: str
|
142
|
+
_message: str
|
125
143
|
|
126
144
|
class BackupManager:
|
127
145
|
hass: Incomplete
|
@@ -138,6 +156,7 @@ class BackupManager:
|
|
138
156
|
remove_next_backup_event: Callable[[], None] | None
|
139
157
|
remove_next_delete_event: Callable[[], None] | None
|
140
158
|
last_event: ManagerStateEvent
|
159
|
+
last_non_idle_event: ManagerStateEvent | None
|
141
160
|
_backup_event_subscriptions: list[Callable[[ManagerStateEvent], None]]
|
142
161
|
def __init__(self, hass: HomeAssistant, reader_writer: BackupReaderWriter) -> None: ...
|
143
162
|
async def async_setup(self) -> None: ...
|
@@ -152,18 +171,19 @@ class BackupManager:
|
|
152
171
|
async def async_pre_backup_actions(self) -> None: ...
|
153
172
|
async def async_post_backup_actions(self) -> None: ...
|
154
173
|
async def load_platforms(self) -> None: ...
|
155
|
-
async def _async_upload_backup(self, *, backup: AgentBackup, agent_ids: list[str], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]]) -> dict[str, Exception]: ...
|
174
|
+
async def _async_upload_backup(self, *, backup: AgentBackup, agent_ids: list[str], open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None) -> dict[str, Exception]: ...
|
156
175
|
async def async_get_backups(self) -> tuple[dict[str, ManagerBackup], dict[str, Exception]]: ...
|
157
176
|
async def async_get_backup(self, backup_id: str) -> tuple[ManagerBackup | None, dict[str, Exception]]: ...
|
158
177
|
@staticmethod
|
159
178
|
def is_our_automatic_backup(backup: AgentBackup, our_instance_id: str) -> bool | None: ...
|
160
179
|
async def async_delete_backup(self, backup_id: str) -> dict[str, Exception]: ...
|
161
|
-
async def async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) ->
|
162
|
-
async def _async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) ->
|
163
|
-
async def async_create_backup(self, *, agent_ids: list[str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
|
164
|
-
async def
|
165
|
-
async def
|
166
|
-
async def
|
180
|
+
async def async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> str: ...
|
181
|
+
async def _async_receive_backup(self, *, agent_ids: list[str], contents: aiohttp.BodyPartReader) -> str: ...
|
182
|
+
async def async_create_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None = None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, with_automatic_settings: bool = False) -> NewBackup: ...
|
183
|
+
async def async_create_automatic_backup(self) -> NewBackup: ...
|
184
|
+
async def async_initiate_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None = None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, raise_task_error: bool = False, with_automatic_settings: bool = False) -> NewBackup: ...
|
185
|
+
async def _async_create_backup(self, *, agent_ids: list[str], extra_metadata: dict[str, bool | str] | None, include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, name: str | None, password: str | None, raise_task_error: bool, with_automatic_settings: bool) -> NewBackup: ...
|
186
|
+
async def _async_finish_backup(self, agent_ids: list[str], with_automatic_settings: bool, password: str | None) -> None: ...
|
167
187
|
async def async_restore_backup(self, backup_id: str, *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
168
188
|
async def _async_restore_backup(self, backup_id: str, *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
169
189
|
@callback
|
@@ -172,6 +192,7 @@ class BackupManager:
|
|
172
192
|
def async_subscribe_events(self, on_event: Callable[[ManagerStateEvent], None]) -> Callable[[], None]: ...
|
173
193
|
def _update_issue_backup_failed(self) -> None: ...
|
174
194
|
def _update_issue_after_agent_upload(self, agent_errors: dict[str, Exception]) -> None: ...
|
195
|
+
async def async_can_decrypt_on_download(self, backup_id: str, *, agent_id: str, password: str | None) -> None: ...
|
175
196
|
|
176
197
|
class KnownBackups:
|
177
198
|
_backups: dict[str, KnownBackup]
|
@@ -198,10 +219,11 @@ class CoreBackupReaderWriter(BackupReaderWriter):
|
|
198
219
|
_hass: Incomplete
|
199
220
|
temp_backup_dir: Incomplete
|
200
221
|
def __init__(self, hass: HomeAssistant) -> None: ...
|
201
|
-
async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[
|
202
|
-
async def _async_create_backup(self, *, agent_ids: list[str], backup_id: str, backup_name: str, date_str: str, extra_metadata: dict[str, bool | str], include_database: bool, on_progress: Callable[[
|
222
|
+
async def async_create_backup(self, *, agent_ids: list[str], backup_name: str, extra_metadata: dict[str, bool | str], include_addons: list[str] | None, include_all_addons: bool, include_database: bool, include_folders: list[Folder] | None, include_homeassistant: bool, on_progress: Callable[[CreateBackupEvent], None], password: str | None) -> tuple[NewBackup, asyncio.Task[WrittenBackup]]: ...
|
223
|
+
async def _async_create_backup(self, *, agent_ids: list[str], backup_id: str, backup_name: str, date_str: str, extra_metadata: dict[str, bool | str], include_database: bool, on_progress: Callable[[CreateBackupEvent], None], password: str | None) -> WrittenBackup: ...
|
203
224
|
def _mkdir_and_generate_backup_contents(self, backup_data: dict[str, Any], database_included: bool, password: str | None, tar_file_path: Path | None) -> tuple[Path, int]: ...
|
204
225
|
async def async_receive_backup(self, *, agent_ids: list[str], stream: AsyncIterator[bytes], suggested_filename: str) -> WrittenBackup: ...
|
205
|
-
async def async_restore_backup(self, backup_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], *, agent_id: str, password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
226
|
+
async def async_restore_backup(self, backup_id: str, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], *, agent_id: str, on_progress: Callable[[RestoreBackupEvent], None], password: str | None, restore_addons: list[str] | None, restore_database: bool, restore_folders: list[Folder] | None, restore_homeassistant: bool) -> None: ...
|
227
|
+
async def async_resume_restore_progress_after_restart(self, *, on_progress: Callable[[RestoreBackupEvent | IdleEvent], None]) -> None: ...
|
206
228
|
|
207
229
|
def _generate_backup_id(date: str, name: str) -> str: ...
|
@@ -16,7 +16,7 @@ class Folder(StrEnum):
|
|
16
16
|
MEDIA = 'media'
|
17
17
|
|
18
18
|
@dataclass(frozen=True, kw_only=True)
|
19
|
-
class
|
19
|
+
class BaseBackup:
|
20
20
|
addons: list[AddonInfo]
|
21
21
|
backup_id: str
|
22
22
|
date: str
|
@@ -26,11 +26,18 @@ class AgentBackup:
|
|
26
26
|
homeassistant_included: bool
|
27
27
|
homeassistant_version: str | None
|
28
28
|
name: str
|
29
|
+
def as_frontend_json(self) -> dict: ...
|
30
|
+
|
31
|
+
@dataclass(frozen=True, kw_only=True)
|
32
|
+
class AgentBackup(BaseBackup):
|
29
33
|
protected: bool
|
30
34
|
size: int
|
31
35
|
def as_dict(self) -> dict: ...
|
32
|
-
def as_frontend_json(self) -> dict: ...
|
33
36
|
@classmethod
|
34
37
|
def from_dict(cls, data: dict[str, Any]) -> Self: ...
|
35
38
|
|
36
|
-
class
|
39
|
+
class BackupError(HomeAssistantError):
|
40
|
+
error_code: str
|
41
|
+
|
42
|
+
class BackupManagerError(BackupError):
|
43
|
+
error_code: str
|
@@ -4,20 +4,25 @@ from .manager import BackupManager as BackupManager, StoredKnownBackup as Stored
|
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
6
6
|
from homeassistant.helpers.storage import Store as Store
|
7
|
-
from typing import TypedDict
|
7
|
+
from typing import Any, TypedDict
|
8
8
|
|
9
9
|
STORE_DELAY_SAVE: int
|
10
10
|
STORAGE_KEY = DOMAIN
|
11
11
|
STORAGE_VERSION: int
|
12
|
+
STORAGE_VERSION_MINOR: int
|
12
13
|
|
13
14
|
class StoredBackupData(TypedDict):
|
14
15
|
backups: list[StoredKnownBackup]
|
15
16
|
config: StoredBackupConfig
|
16
17
|
|
18
|
+
class _BackupStore(Store[StoredBackupData]):
|
19
|
+
def __init__(self, hass: HomeAssistant) -> None: ...
|
20
|
+
async def _async_migrate_func(self, old_major_version: int, old_minor_version: int, old_data: dict[str, Any]) -> dict[str, Any]: ...
|
21
|
+
|
17
22
|
class BackupStore:
|
18
23
|
_hass: Incomplete
|
19
24
|
_manager: Incomplete
|
20
|
-
_store:
|
25
|
+
_store: Incomplete
|
21
26
|
def __init__(self, hass: HomeAssistant, manager: BackupManager) -> None: ...
|
22
27
|
async def load(self) -> StoredBackupData | None: ...
|
23
28
|
@callback
|
@@ -1,12 +1,95 @@
|
|
1
1
|
import aiohttp
|
2
|
+
import asyncio
|
3
|
+
import tarfile
|
2
4
|
from .const import BUF_SIZE as BUF_SIZE, LOGGER as LOGGER
|
3
5
|
from .models import AddonInfo as AddonInfo, AgentBackup as AgentBackup, Folder as Folder
|
6
|
+
from _typeshed import Incomplete
|
7
|
+
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
8
|
+
from dataclasses import dataclass
|
4
9
|
from homeassistant.backup_restore import password_to_key as password_to_key
|
5
10
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
11
|
+
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
6
12
|
from homeassistant.util.json import JsonObjectType as JsonObjectType, json_loads_object as json_loads_object
|
13
|
+
from homeassistant.util.thread import ThreadWithException as ThreadWithException
|
7
14
|
from pathlib import Path
|
15
|
+
from typing import Any, IO, Self
|
16
|
+
|
17
|
+
class DecryptError(HomeAssistantError):
|
18
|
+
_message: str
|
19
|
+
|
20
|
+
class EncryptError(HomeAssistantError):
|
21
|
+
_message: str
|
22
|
+
|
23
|
+
class UnsupportedSecureTarVersion(DecryptError):
|
24
|
+
_message: str
|
25
|
+
|
26
|
+
class IncorrectPassword(DecryptError):
|
27
|
+
_message: str
|
28
|
+
|
29
|
+
class BackupEmpty(DecryptError):
|
30
|
+
_message: str
|
31
|
+
|
32
|
+
class AbortCipher(HomeAssistantError):
|
33
|
+
_message: str
|
8
34
|
|
9
35
|
def make_backup_dir(path: Path) -> None: ...
|
10
36
|
def read_backup(backup_path: Path) -> AgentBackup: ...
|
11
37
|
def validate_password(path: Path, password: str | None) -> bool: ...
|
38
|
+
|
39
|
+
class AsyncIteratorReader:
|
40
|
+
_hass: Incomplete
|
41
|
+
_stream: Incomplete
|
42
|
+
_buffer: bytes | None
|
43
|
+
_pos: int
|
44
|
+
def __init__(self, hass: HomeAssistant, stream: AsyncIterator[bytes]) -> None: ...
|
45
|
+
async def _next(self) -> bytes | None: ...
|
46
|
+
def read(self, n: int = -1, /) -> bytes: ...
|
47
|
+
def close(self) -> None: ...
|
48
|
+
|
49
|
+
class AsyncIteratorWriter:
|
50
|
+
_hass: Incomplete
|
51
|
+
_pos: int
|
52
|
+
_queue: asyncio.Queue[bytes | None]
|
53
|
+
def __init__(self, hass: HomeAssistant) -> None: ...
|
54
|
+
def __aiter__(self) -> Self: ...
|
55
|
+
async def __anext__(self) -> bytes: ...
|
56
|
+
def tell(self) -> int: ...
|
57
|
+
def write(self, s: bytes, /) -> int: ...
|
58
|
+
|
59
|
+
def validate_password_stream(input_stream: IO[bytes], password: str | None) -> None: ...
|
60
|
+
def decrypt_backup(input_stream: IO[bytes], output_stream: IO[bytes], password: str | None, on_done: Callable[[Exception | None], None], minimum_size: int, nonces: list[bytes]) -> None: ...
|
61
|
+
def _decrypt_backup(input_tar: tarfile.TarFile, output_tar: tarfile.TarFile, password: str | None) -> None: ...
|
62
|
+
def encrypt_backup(input_stream: IO[bytes], output_stream: IO[bytes], password: str | None, on_done: Callable[[Exception | None], None], minimum_size: int, nonces: list[bytes]) -> None: ...
|
63
|
+
def _encrypt_backup(input_tar: tarfile.TarFile, output_tar: tarfile.TarFile, password: str | None, nonces: list[bytes]) -> None: ...
|
64
|
+
|
65
|
+
@dataclass(kw_only=True)
|
66
|
+
class _CipherWorkerStatus:
|
67
|
+
done: asyncio.Event
|
68
|
+
error: Exception | None = ...
|
69
|
+
thread: ThreadWithException
|
70
|
+
|
71
|
+
class _CipherBackupStreamer:
|
72
|
+
_cipher_func: Callable[[IO[bytes], IO[bytes], str | None, Callable[[Exception | None], None], int, list[bytes]], None]
|
73
|
+
_workers: list[_CipherWorkerStatus]
|
74
|
+
_backup: Incomplete
|
75
|
+
_hass: Incomplete
|
76
|
+
_open_stream: Incomplete
|
77
|
+
_password: Incomplete
|
78
|
+
_nonces: list[bytes]
|
79
|
+
def __init__(self, hass: HomeAssistant, backup: AgentBackup, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None) -> None: ...
|
80
|
+
def size(self) -> int: ...
|
81
|
+
def _num_tar_files(self) -> int: ...
|
82
|
+
async def open_stream(self) -> AsyncIterator[bytes]: ...
|
83
|
+
async def wait(self) -> None: ...
|
84
|
+
|
85
|
+
class DecryptedBackupStreamer(_CipherBackupStreamer):
|
86
|
+
_cipher_func: Incomplete
|
87
|
+
def backup(self) -> AgentBackup: ...
|
88
|
+
|
89
|
+
class EncryptedBackupStreamer(_CipherBackupStreamer):
|
90
|
+
_nonces: Incomplete
|
91
|
+
def __init__(self, hass: HomeAssistant, backup: AgentBackup, open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]], password: str | None) -> None: ...
|
92
|
+
_cipher_func: Incomplete
|
93
|
+
def backup(self) -> AgentBackup: ...
|
94
|
+
|
12
95
|
async def receive_file(hass: HomeAssistant, contents: aiohttp.BodyPartReader, path: Path) -> None: ...
|
@@ -1,6 +1,6 @@
|
|
1
|
-
from .config import
|
1
|
+
from .config import Day as Day, ScheduleRecurrence as ScheduleRecurrence
|
2
2
|
from .const import DATA_MANAGER as DATA_MANAGER, LOGGER as LOGGER
|
3
|
-
from .manager import IncorrectPasswordError as IncorrectPasswordError, ManagerStateEvent as ManagerStateEvent
|
3
|
+
from .manager import DecryptOnDowloadNotSupported as DecryptOnDowloadNotSupported, IncorrectPasswordError as IncorrectPasswordError, ManagerStateEvent as ManagerStateEvent
|
4
4
|
from .models import Folder as Folder
|
5
5
|
from homeassistant.components import websocket_api as websocket_api
|
6
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
@@ -22,6 +22,9 @@ async def handle_delete(hass: HomeAssistant, connection: websocket_api.ActiveCon
|
|
22
22
|
async def handle_restore(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
23
23
|
@websocket_api.require_admin
|
24
24
|
@websocket_api.async_response
|
25
|
+
async def handle_can_decrypt_on_download(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
26
|
+
@websocket_api.require_admin
|
27
|
+
@websocket_api.async_response
|
25
28
|
async def handle_create(hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]) -> None: ...
|
26
29
|
@websocket_api.require_admin
|
27
30
|
@websocket_api.async_response
|
@@ -2,9 +2,9 @@ from .const import DOMAIN as DOMAIN, RUN_TIMEOUT as RUN_TIMEOUT
|
|
2
2
|
from .models import BAFDiscovery as BAFDiscovery
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from aiobafi6 import Device
|
5
|
-
from homeassistant.components import zeroconf as zeroconf
|
6
5
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
7
6
|
from homeassistant.const import CONF_IP_ADDRESS as CONF_IP_ADDRESS
|
7
|
+
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
8
8
|
from typing import Any
|
9
9
|
|
10
10
|
_LOGGER: Incomplete
|
@@ -15,7 +15,7 @@ class BAFFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
15
15
|
VERSION: int
|
16
16
|
discovery: BAFDiscovery | None
|
17
17
|
def __init__(self) -> None: ...
|
18
|
-
async def async_step_zeroconf(self, discovery_info:
|
18
|
+
async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
|
19
19
|
async def async_step_discovery_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
20
20
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
21
21
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
from .const import ATTR_FRIENDLY_NAME as ATTR_FRIENDLY_NAME, ATTR_ITEM_NUMBER as ATTR_ITEM_NUMBER, ATTR_SERIAL_NUMBER as ATTR_SERIAL_NUMBER, ATTR_TYPE_NUMBER as ATTR_TYPE_NUMBER, COMPATIBLE_MODELS as COMPATIBLE_MODELS, CONF_SERIAL_NUMBER as CONF_SERIAL_NUMBER, DEFAULT_MODEL as DEFAULT_MODEL, DOMAIN as DOMAIN
|
2
2
|
from .util import get_serial_number_from_jid as get_serial_number_from_jid
|
3
3
|
from _typeshed import Incomplete
|
4
|
-
from homeassistant.components.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
5
4
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
6
5
|
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_MODEL as CONF_MODEL
|
7
6
|
from homeassistant.helpers.selector import SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig
|
7
|
+
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
8
8
|
from homeassistant.util.ssl import get_default_context as get_default_context
|
9
9
|
from mozart_api.mozart_client import MozartClient
|
10
10
|
from typing import Any, TypedDict
|
@@ -35,6 +35,7 @@ class BangOlufsenModel(StrEnum):
|
|
35
35
|
|
36
36
|
class WebsocketNotification(StrEnum):
|
37
37
|
ACTIVE_LISTENING_MODE = 'active_listening_mode'
|
38
|
+
BUTTON = 'button'
|
38
39
|
PLAYBACK_ERROR = 'playback_error'
|
39
40
|
PLAYBACK_METADATA = 'playback_metadata'
|
40
41
|
PLAYBACK_PROGRESS = 'playback_progress'
|
@@ -64,7 +65,12 @@ ATTR_FRIENDLY_NAME: Final[str]
|
|
64
65
|
BANG_OLUFSEN_ON: Final[str]
|
65
66
|
VALID_MEDIA_TYPES: Final[tuple]
|
66
67
|
FALLBACK_SOURCES: Final[SourceArray]
|
68
|
+
MODEL_SUPPORT_DEVICE_BUTTONS: Final[str]
|
69
|
+
MODEL_SUPPORT_MAP: Incomplete
|
67
70
|
BANG_OLUFSEN_WEBSOCKET_EVENT: Final[str]
|
71
|
+
EVENT_TRANSLATION_MAP: dict[str, str]
|
68
72
|
CONNECTION_STATUS: Final[str]
|
73
|
+
DEVICE_BUTTONS: Final[list[str]]
|
74
|
+
DEVICE_BUTTON_EVENTS: Final[list[str]]
|
69
75
|
BEOLINK_JOIN_SOURCES_TO_UPPER: Incomplete
|
70
76
|
BEOLINK_JOIN_SOURCES: Incomplete
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from . import BangOlufsenConfigEntry as BangOlufsenConfigEntry
|
2
|
+
from .const import CONNECTION_STATUS as CONNECTION_STATUS, DEVICE_BUTTONS as DEVICE_BUTTONS, DEVICE_BUTTON_EVENTS as DEVICE_BUTTON_EVENTS, MODEL_SUPPORT_DEVICE_BUTTONS as MODEL_SUPPORT_DEVICE_BUTTONS, MODEL_SUPPORT_MAP as MODEL_SUPPORT_MAP, WebsocketNotification as WebsocketNotification
|
3
|
+
from .entity import BangOlufsenEntity as BangOlufsenEntity
|
4
|
+
from _typeshed import Incomplete
|
5
|
+
from homeassistant.components.event import EventDeviceClass as EventDeviceClass, EventEntity as EventEntity
|
6
|
+
from homeassistant.const import CONF_MODEL as CONF_MODEL
|
7
|
+
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
8
|
+
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
9
|
+
from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
|
10
|
+
|
11
|
+
async def async_setup_entry(hass: HomeAssistant, config_entry: BangOlufsenConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
|
12
|
+
|
13
|
+
class BangOlufsenButtonEvent(BangOlufsenEntity, EventEntity):
|
14
|
+
_attr_device_class: Incomplete
|
15
|
+
_attr_entity_registry_enabled_default: bool
|
16
|
+
_attr_event_types = DEVICE_BUTTON_EVENTS
|
17
|
+
_attr_unique_id: Incomplete
|
18
|
+
_attr_translation_key: Incomplete
|
19
|
+
_button_type: Incomplete
|
20
|
+
def __init__(self, config_entry: BangOlufsenConfigEntry, button_type: str) -> None: ...
|
21
|
+
async def async_added_to_hass(self) -> None: ...
|
22
|
+
@callback
|
23
|
+
def _async_handle_event(self, event: str) -> None: ...
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import BANG_OLUFSEN_WEBSOCKET_EVENT as BANG_OLUFSEN_WEBSOCKET_EVENT, CONNECTION_STATUS as CONNECTION_STATUS, WebsocketNotification as WebsocketNotification
|
1
|
+
from .const import BANG_OLUFSEN_WEBSOCKET_EVENT as BANG_OLUFSEN_WEBSOCKET_EVENT, CONNECTION_STATUS as CONNECTION_STATUS, EVENT_TRANSLATION_MAP as EVENT_TRANSLATION_MAP, WebsocketNotification as WebsocketNotification
|
2
2
|
from .entity import BangOlufsenBase as BangOlufsenBase
|
3
3
|
from .util import get_device as get_device
|
4
4
|
from _typeshed import Incomplete
|
@@ -6,7 +6,7 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
6
6
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
7
7
|
from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
|
8
8
|
from homeassistant.util.enum import try_parse_enum as try_parse_enum
|
9
|
-
from mozart_api.models import ListeningModeProps as ListeningModeProps, PlaybackContentMetadata as PlaybackContentMetadata, PlaybackError as PlaybackError, PlaybackProgress as PlaybackProgress, RenderingState as RenderingState, SoftwareUpdateState as SoftwareUpdateState, Source as Source, VolumeState as VolumeState, WebsocketNotificationTag as WebsocketNotificationTag
|
9
|
+
from mozart_api.models import ButtonEvent as ButtonEvent, ListeningModeProps as ListeningModeProps, PlaybackContentMetadata as PlaybackContentMetadata, PlaybackError as PlaybackError, PlaybackProgress as PlaybackProgress, RenderingState as RenderingState, SoftwareUpdateState as SoftwareUpdateState, Source as Source, VolumeState as VolumeState, WebsocketNotificationTag as WebsocketNotificationTag
|
10
10
|
from mozart_api.mozart_client import BaseWebSocketResponse as BaseWebSocketResponse, MozartClient as MozartClient
|
11
11
|
|
12
12
|
_LOGGER: Incomplete
|
@@ -19,6 +19,7 @@ class BangOlufsenWebsocket(BangOlufsenBase):
|
|
19
19
|
def on_connection(self) -> None: ...
|
20
20
|
def on_connection_lost(self) -> None: ...
|
21
21
|
def on_active_listening_mode(self, notification: ListeningModeProps) -> None: ...
|
22
|
+
def on_button_notification(self, notification: ButtonEvent) -> None: ...
|
22
23
|
def on_notification_notification(self, notification: WebsocketNotificationTag) -> None: ...
|
23
24
|
def on_playback_error_notification(self, notification: PlaybackError) -> None: ...
|
24
25
|
def on_playback_metadata_notification(self, notification: PlaybackContentMetadata) -> None: ...
|
@@ -8,7 +8,7 @@ from homeassistant.helpers.entity import Entity as Entity, EntityDescription as
|
|
8
8
|
from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
|
9
9
|
from homeassistant.helpers.typing import ConfigType as ConfigType
|
10
10
|
from homeassistant.util.hass_dict import HassKey as HassKey
|
11
|
-
from propcache import cached_property
|
11
|
+
from propcache.api import cached_property
|
12
12
|
from typing import Literal, final
|
13
13
|
|
14
14
|
_LOGGER: Incomplete
|
@@ -5,7 +5,6 @@ from dataclasses import dataclass
|
|
5
5
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
6
6
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
7
7
|
from homeassistant.helpers import aiohttp_client as aiohttp_client
|
8
|
-
from homeassistant.util import yaml as yaml
|
9
8
|
|
10
9
|
COMMUNITY_TOPIC_PATTERN: Incomplete
|
11
10
|
COMMUNITY_CODE_BLOCK: Incomplete
|
@@ -9,7 +9,6 @@ from homeassistant import loader as loader
|
|
9
9
|
from homeassistant.const import CONF_DEFAULT as CONF_DEFAULT, CONF_DOMAIN as CONF_DOMAIN, CONF_NAME as CONF_NAME, CONF_PATH as CONF_PATH, __version__ as __version__
|
10
10
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
11
11
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
12
|
-
from homeassistant.util import yaml as yaml
|
13
12
|
from typing import Any
|
14
13
|
|
15
14
|
class Blueprint:
|
@@ -6,7 +6,6 @@ from collections.abc import Callable as Callable, Coroutine
|
|
6
6
|
from homeassistant.components import websocket_api as websocket_api
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
8
8
|
from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
|
9
|
-
from homeassistant.util import yaml as yaml
|
10
9
|
from typing import Any
|
11
10
|
|
12
11
|
@callback
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
2
|
+
from .coordinator import BluesoundCoordinator as BluesoundCoordinator
|
2
3
|
from _typeshed import Incomplete
|
3
4
|
from dataclasses import dataclass
|
4
5
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
@@ -16,6 +17,7 @@ PLATFORMS: Incomplete
|
|
16
17
|
class BluesoundRuntimeData:
|
17
18
|
player: Player
|
18
19
|
sync_status: SyncStatus
|
20
|
+
coordinator: BluesoundCoordinator
|
19
21
|
type BluesoundConfigEntry = ConfigEntry[BluesoundRuntimeData]
|
20
22
|
|
21
23
|
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
|
@@ -2,10 +2,10 @@ from .const import DOMAIN as DOMAIN
|
|
2
2
|
from .media_player import DEFAULT_PORT as DEFAULT_PORT
|
3
3
|
from .utils import format_unique_id as format_unique_id
|
4
4
|
from _typeshed import Incomplete
|
5
|
-
from homeassistant.components import zeroconf as zeroconf
|
6
5
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
7
6
|
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PORT as CONF_PORT
|
8
7
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
8
|
+
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo as ZeroconfServiceInfo
|
9
9
|
from pyblu import SyncStatus as SyncStatus
|
10
10
|
from typing import Any
|
11
11
|
|
@@ -19,6 +19,5 @@ class BluesoundConfigFlow(ConfigFlow, domain=DOMAIN):
|
|
19
19
|
_sync_status: SyncStatus | None
|
20
20
|
def __init__(self) -> None: ...
|
21
21
|
async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
22
|
-
async def
|
23
|
-
async def async_step_zeroconf(self, discovery_info: zeroconf.ZeroconfServiceInfo) -> ConfigFlowResult: ...
|
22
|
+
async def async_step_zeroconf(self, discovery_info: ZeroconfServiceInfo) -> ConfigFlowResult: ...
|
24
23
|
async def async_step_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|