homeassistant-stubs 2025.3.4__py3-none-any.whl → 2025.4.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/bootstrap.pyi +3 -2
- homeassistant-stubs/components/accuweather/const.pyi +3 -1
- homeassistant-stubs/components/accuweather/sensor.pyi +1 -1
- homeassistant-stubs/components/anova/config_flow.pyi +4 -1
- homeassistant-stubs/components/anthemav/media_player.pyi +2 -0
- homeassistant-stubs/components/arwn/sensor.pyi +3 -2
- homeassistant-stubs/components/assist_pipeline/pipeline.pyi +14 -5
- homeassistant-stubs/components/assist_satellite/const.pyi +3 -0
- homeassistant-stubs/components/assist_satellite/entity.pyi +6 -4
- homeassistant-stubs/components/azure_storage/__init__.pyi +1 -1
- homeassistant-stubs/components/azure_storage/backup.pyi +1 -1
- homeassistant-stubs/components/azure_storage/config_flow.pyi +7 -0
- homeassistant-stubs/components/backup/__init__.pyi +2 -2
- homeassistant-stubs/components/backup/agent.pyi +1 -1
- homeassistant-stubs/components/backup/backup.pyi +1 -1
- homeassistant-stubs/components/backup/config_flow.pyi +7 -0
- homeassistant-stubs/components/backup/coordinator.pyi +28 -0
- homeassistant-stubs/components/backup/diagnostics.pyi +7 -0
- homeassistant-stubs/components/backup/entity.pyi +13 -0
- homeassistant-stubs/components/backup/http.pyi +1 -0
- homeassistant-stubs/components/backup/manager.pyi +8 -3
- homeassistant-stubs/components/backup/sensor.pyi +23 -0
- homeassistant-stubs/components/bosch_alarm/__init__.pyi +12 -0
- homeassistant-stubs/components/bosch_alarm/alarm_control_panel.pyi +31 -0
- homeassistant-stubs/components/bosch_alarm/config_flow.pyi +20 -0
- homeassistant-stubs/components/bosch_alarm/const.pyi +4 -0
- homeassistant-stubs/components/bring/diagnostics.pyi +5 -0
- homeassistant-stubs/components/brother/__init__.pyi +1 -0
- homeassistant-stubs/components/brother/coordinator.pyi +1 -0
- homeassistant-stubs/components/cloud/backup.pyi +3 -3
- homeassistant-stubs/components/cloud/http_api.pyi +6 -3
- homeassistant-stubs/components/cloud/tts.pyi +2 -2
- homeassistant-stubs/components/comelit/__init__.pyi +11 -0
- homeassistant-stubs/components/comelit/alarm_control_panel.pyi +44 -0
- homeassistant-stubs/components/comelit/binary_sensor.pyi +22 -0
- homeassistant-stubs/components/comelit/climate.pyi +60 -0
- homeassistant-stubs/components/comelit/config_flow.pyi +28 -0
- homeassistant-stubs/components/comelit/const.pyi +7 -0
- homeassistant-stubs/components/comelit/coordinator.pyi +38 -0
- homeassistant-stubs/components/comelit/cover.pyi +39 -0
- homeassistant-stubs/components/comelit/diagnostics.pyi +10 -0
- homeassistant-stubs/components/comelit/humidifier.pyi +61 -0
- homeassistant-stubs/components/comelit/light.pyi +28 -0
- homeassistant-stubs/components/comelit/sensor.pyi +45 -0
- homeassistant-stubs/components/comelit/switch.pyi +27 -0
- homeassistant-stubs/components/cover/reproduce_state.pyi +17 -6
- homeassistant-stubs/components/demo/valve.pyi +30 -0
- homeassistant-stubs/components/discovergy/__init__.pyi +1 -1
- homeassistant-stubs/components/energy/data.pyi +1 -0
- homeassistant-stubs/components/enigma2/config_flow.pyi +1 -0
- homeassistant-stubs/components/esphome/__init__.pyi +1 -1
- homeassistant-stubs/components/esphome/assist_satellite.pyi +2 -0
- homeassistant-stubs/components/esphome/config_flow.pyi +1 -0
- homeassistant-stubs/components/esphome/const.pyi +1 -0
- homeassistant-stubs/components/esphome/diagnostics.pyi +0 -1
- homeassistant-stubs/components/esphome/event.pyi +2 -0
- homeassistant-stubs/components/esphome/manager.pyi +1 -1
- homeassistant-stubs/components/fritzbox/climate.pyi +1 -1
- homeassistant-stubs/components/frontend/__init__.pyi +9 -10
- homeassistant-stubs/components/frontend/storage.pyi +2 -1
- homeassistant-stubs/components/gios/__init__.pyi +1 -0
- homeassistant-stubs/components/gios/config_flow.pyi +1 -0
- homeassistant-stubs/components/gios/coordinator.pyi +2 -2
- homeassistant-stubs/components/google/calendar.pyi +3 -2
- homeassistant-stubs/components/google_drive/backup.pyi +2 -2
- homeassistant-stubs/components/habitica/const.pyi +25 -0
- homeassistant-stubs/components/habitica/services.pyi +6 -2
- homeassistant-stubs/components/heos/const.pyi +1 -0
- homeassistant-stubs/components/heos/coordinator.pyi +5 -5
- homeassistant-stubs/components/heos/media_player.pyi +18 -8
- homeassistant-stubs/components/home_connect/__init__.pyi +6 -17
- homeassistant-stubs/components/home_connect/button.pyi +0 -2
- homeassistant-stubs/components/home_connect/const.pyi +0 -6
- homeassistant-stubs/components/home_connect/entity.pyi +1 -1
- homeassistant-stubs/components/home_connect/light.pyi +1 -1
- homeassistant-stubs/components/home_connect/number.pyi +1 -1
- homeassistant-stubs/components/home_connect/select.pyi +1 -1
- homeassistant-stubs/components/home_connect/services.pyi +35 -0
- homeassistant-stubs/components/home_connect/switch.pyi +2 -1
- homeassistant-stubs/components/home_connect/time.pyi +6 -1
- homeassistant-stubs/components/homeassistant_hardware/coordinator.pyi +15 -0
- homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +2 -1
- homeassistant-stubs/components/homeassistant_hardware/update.pyi +68 -0
- homeassistant-stubs/components/homeassistant_hardware/util.pyi +6 -1
- homeassistant-stubs/components/homeassistant_sky_connect/__init__.pyi +7 -1
- homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +1 -1
- homeassistant-stubs/components/homeassistant_sky_connect/const.pyi +10 -0
- homeassistant-stubs/components/homeassistant_sky_connect/update.pyi +29 -0
- homeassistant-stubs/components/homeassistant_yellow/__init__.pyi +1 -1
- homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +1 -1
- homeassistant-stubs/components/homeassistant_yellow/const.pyi +4 -0
- homeassistant-stubs/components/homeassistant_yellow/update.pyi +29 -0
- homeassistant-stubs/components/homee/binary_sensor.pyi +21 -0
- homeassistant-stubs/components/homee/button.pyi +1 -0
- homeassistant-stubs/components/homee/cover.pyi +1 -0
- homeassistant-stubs/components/homee/light.pyi +1 -0
- homeassistant-stubs/components/homee/lock.pyi +25 -0
- homeassistant-stubs/components/homee/number.pyi +1 -0
- homeassistant-stubs/components/homee/select.pyi +23 -0
- homeassistant-stubs/components/homee/sensor.pyi +2 -0
- homeassistant-stubs/components/homee/switch.pyi +2 -0
- homeassistant-stubs/components/homee/valve.pyi +1 -0
- homeassistant-stubs/components/homekit/__init__.pyi +3 -1
- homeassistant-stubs/components/homekit/accessories.pyi +1 -0
- homeassistant-stubs/components/homekit/type_switches.pyi +6 -0
- homeassistant-stubs/components/huawei_lte/__init__.pyi +1 -1
- homeassistant-stubs/components/husqvarna_automower/coordinator.pyi +7 -7
- homeassistant-stubs/components/incomfort/config_flow.pyi +1 -0
- homeassistant-stubs/components/iron_os/coordinator.pyi +2 -0
- homeassistant-stubs/components/iron_os/number.pyi +2 -0
- homeassistant-stubs/components/iron_os/select.pyi +3 -0
- homeassistant-stubs/components/jewish_calendar/__init__.pyi +9 -2
- homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +4 -4
- homeassistant-stubs/components/jewish_calendar/const.pyi +3 -0
- homeassistant-stubs/components/jewish_calendar/entity.pyi +2 -2
- homeassistant-stubs/components/jewish_calendar/sensor.pyi +5 -6
- homeassistant-stubs/components/jewish_calendar/service.pyi +10 -0
- homeassistant-stubs/components/lawn_mower/__init__.pyi +1 -0
- homeassistant-stubs/components/linkplay/entity.pyi +0 -1
- homeassistant-stubs/components/linkplay/media_player.pyi +3 -2
- homeassistant-stubs/components/linkplay/utils.pyi +0 -32
- homeassistant-stubs/components/lovelace/__init__.pyi +3 -1
- homeassistant-stubs/components/mastodon/__init__.pyi +2 -2
- homeassistant-stubs/components/mastodon/config_flow.pyi +2 -1
- homeassistant-stubs/components/mastodon/const.pyi +0 -7
- homeassistant-stubs/components/mastodon/coordinator.pyi +5 -5
- homeassistant-stubs/components/mastodon/diagnostics.pyi +2 -1
- homeassistant-stubs/components/mastodon/entity.pyi +1 -1
- homeassistant-stubs/components/mastodon/notify.pyi +3 -2
- homeassistant-stubs/components/mastodon/sensor.pyi +2 -3
- homeassistant-stubs/components/mastodon/services.pyi +1 -0
- homeassistant-stubs/components/mastodon/utils.pyi +3 -2
- homeassistant-stubs/components/mcp/coordinator.pyi +2 -9
- homeassistant-stubs/components/mcp_server/config_flow.pyi +1 -1
- homeassistant-stubs/components/mcp_server/const.pyi +1 -2
- homeassistant-stubs/components/mcp_server/server.pyi +1 -0
- homeassistant-stubs/components/modbus/__init__.pyi +1 -1
- homeassistant-stubs/components/modbus/climate.pyi +6 -2
- homeassistant-stubs/components/modbus/const.pyi +10 -0
- homeassistant-stubs/components/mqtt/config_flow.pyi +95 -7
- homeassistant-stubs/components/mqtt/const.pyi +65 -0
- homeassistant-stubs/components/mqtt/cover.pyi +2 -0
- homeassistant-stubs/components/mqtt/entity.pyi +4 -4
- homeassistant-stubs/components/mqtt/lawn_mower.pyi +1 -2
- homeassistant-stubs/components/mqtt/light/schema_basic.pyi +2 -48
- homeassistant-stubs/components/mqtt/light/schema_json.pyi +1 -14
- homeassistant-stubs/components/mqtt/light/schema_template.pyi +3 -14
- homeassistant-stubs/components/mqtt/models.pyi +25 -1
- homeassistant-stubs/components/mqtt/sensor.pyi +6 -5
- homeassistant-stubs/components/mqtt/update.pyi +1 -1
- homeassistant-stubs/components/mqtt/util.pyi +2 -0
- homeassistant-stubs/components/mysensors/__init__.pyi +1 -1
- homeassistant-stubs/components/mysensors/binary_sensor.pyi +0 -1
- homeassistant-stubs/components/mysensors/climate.pyi +0 -1
- homeassistant-stubs/components/mysensors/const.pyi +0 -1
- homeassistant-stubs/components/mysensors/cover.pyi +1 -2
- homeassistant-stubs/components/mysensors/device_tracker.pyi +0 -1
- homeassistant-stubs/components/mysensors/gateway.pyi +1 -1
- homeassistant-stubs/components/mysensors/helpers.pyi +1 -3
- homeassistant-stubs/components/mysensors/light.pyi +4 -5
- homeassistant-stubs/components/mysensors/remote.pyi +0 -1
- homeassistant-stubs/components/mysensors/sensor.pyi +0 -1
- homeassistant-stubs/components/mysensors/switch.pyi +1 -2
- homeassistant-stubs/components/mysensors/text.pyi +0 -1
- homeassistant-stubs/components/nam/button.pyi +2 -0
- homeassistant-stubs/components/nam/const.pyi +1 -0
- homeassistant-stubs/components/nam/sensor.pyi +2 -2
- homeassistant-stubs/components/nest/media_source.pyi +5 -0
- homeassistant-stubs/components/nextdns/__init__.pyi +1 -1
- homeassistant-stubs/components/nextdns/button.pyi +2 -0
- homeassistant-stubs/components/nextdns/config_flow.pyi +1 -0
- homeassistant-stubs/components/nextdns/switch.pyi +1 -0
- homeassistant-stubs/components/nut/__init__.pyi +1 -0
- homeassistant-stubs/components/nut/button.pyi +14 -0
- homeassistant-stubs/components/nut/entity.pyi +19 -0
- homeassistant-stubs/components/nut/sensor.pyi +8 -13
- homeassistant-stubs/components/nut/switch.pyi +18 -0
- homeassistant-stubs/components/onboarding/views.pyi +2 -1
- homeassistant-stubs/components/onedrive/__init__.pyi +4 -0
- homeassistant-stubs/components/onedrive/backup.pyi +1 -1
- homeassistant-stubs/components/onedrive/services.pyi +15 -0
- homeassistant-stubs/components/openai_conversation/__init__.pyi +5 -1
- homeassistant-stubs/components/openai_conversation/config_flow.pyi +5 -2
- homeassistant-stubs/components/openai_conversation/const.pyi +22 -11
- homeassistant-stubs/components/openai_conversation/conversation.pyi +6 -7
- homeassistant-stubs/components/overkiz/water_heater/__init__.pyi +1 -0
- homeassistant-stubs/components/overkiz/water_heater/atlantic_domestic_hot_water_production_v2_io_component.pyi +41 -0
- homeassistant-stubs/components/purpleair/__init__.pyi +5 -10
- homeassistant-stubs/components/purpleair/const.pyi +6 -4
- homeassistant-stubs/components/purpleair/coordinator.pyi +3 -2
- homeassistant-stubs/components/purpleair/diagnostics.pyi +2 -4
- homeassistant-stubs/components/purpleair/entity.pyi +2 -3
- homeassistant-stubs/components/purpleair/sensor.pyi +4 -5
- homeassistant-stubs/components/pyload/__init__.pyi +12 -0
- homeassistant-stubs/components/pyload/button.pyi +32 -0
- homeassistant-stubs/components/pyload/config_flow.pyi +23 -0
- homeassistant-stubs/components/pyload/const.pyi +6 -0
- homeassistant-stubs/components/pyload/coordinator.pyi +34 -0
- homeassistant-stubs/components/pyload/diagnostics.pyi +10 -0
- homeassistant-stubs/components/pyload/entity.pyi +13 -0
- homeassistant-stubs/components/pyload/sensor.pyi +33 -0
- homeassistant-stubs/components/pyload/switch.pyi +37 -0
- homeassistant-stubs/components/qbus/climate.pyi +41 -0
- homeassistant-stubs/components/qbus/light.pyi +3 -3
- homeassistant-stubs/components/recorder/const.pyi +1 -0
- homeassistant-stubs/components/recorder/core.pyi +1 -2
- homeassistant-stubs/components/recorder/db_schema.pyi +3 -1
- homeassistant-stubs/components/recorder/migration.pyi +16 -2
- homeassistant-stubs/components/recorder/models/__init__.pyi +2 -2
- homeassistant-stubs/components/recorder/models/statistics.pyi +10 -2
- homeassistant-stubs/components/recorder/statistics.pyi +27 -9
- homeassistant-stubs/components/recorder/table_managers/statistics_meta.pyi +5 -3
- homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
- homeassistant-stubs/components/remote_calendar/__init__.pyi +11 -0
- homeassistant-stubs/components/remote_calendar/calendar.pyi +26 -0
- homeassistant-stubs/components/remote_calendar/config_flow.pyi +13 -0
- homeassistant-stubs/components/remote_calendar/const.pyi +2 -0
- homeassistant-stubs/components/remote_calendar/coordinator.pyi +20 -0
- homeassistant-stubs/components/remote_calendar/diagnostics.pyi +5 -0
- homeassistant-stubs/components/renault/config_flow.pyi +1 -0
- homeassistant-stubs/components/reolink/__init__.pyi +1 -1
- homeassistant-stubs/components/reolink/binary_sensor.pyi +17 -1
- homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
- homeassistant-stubs/components/reolink/const.pyi +1 -0
- homeassistant-stubs/components/reolink/host.pyi +4 -4
- homeassistant-stubs/components/reolink/number.pyi +21 -1
- homeassistant-stubs/components/reolink/select.pyi +17 -1
- homeassistant-stubs/components/reolink/update.pyi +2 -1
- homeassistant-stubs/components/reolink/util.pyi +7 -0
- homeassistant-stubs/components/roborock/__init__.pyi +5 -3
- homeassistant-stubs/components/roborock/binary_sensor.pyi +4 -1
- homeassistant-stubs/components/roborock/button.pyi +11 -1
- homeassistant-stubs/components/roborock/config_flow.pyi +7 -3
- homeassistant-stubs/components/roborock/const.pyi +7 -1
- homeassistant-stubs/components/roborock/coordinator.pyi +18 -3
- homeassistant-stubs/components/roborock/entity.pyi +3 -1
- homeassistant-stubs/components/roborock/image.pyi +2 -7
- homeassistant-stubs/components/roborock/models.pyi +7 -0
- homeassistant-stubs/components/roborock/number.pyi +1 -0
- homeassistant-stubs/components/roborock/select.pyi +7 -5
- homeassistant-stubs/components/roborock/sensor.pyi +14 -1
- homeassistant-stubs/components/roborock/switch.pyi +2 -0
- homeassistant-stubs/components/roborock/time.pyi +1 -0
- homeassistant-stubs/components/roborock/vacuum.pyi +1 -1
- homeassistant-stubs/components/sensor/const.pyi +2 -0
- homeassistant-stubs/components/sensor/recorder.pyi +15 -3
- homeassistant-stubs/components/shelly/__init__.pyi +2 -2
- homeassistant-stubs/components/shelly/bluetooth/__init__.pyi +4 -2
- homeassistant-stubs/components/shelly/button.pyi +22 -7
- homeassistant-stubs/components/shelly/climate.pyi +1 -1
- homeassistant-stubs/components/shelly/config_flow.pyi +5 -5
- homeassistant-stubs/components/shelly/const.pyi +0 -1
- homeassistant-stubs/components/shelly/coordinator.pyi +5 -1
- homeassistant-stubs/components/shelly/diagnostics.pyi +1 -2
- homeassistant-stubs/components/shelly/entity.pyi +1 -3
- homeassistant-stubs/components/shelly/event.pyi +1 -1
- homeassistant-stubs/components/shelly/number.pyi +1 -1
- homeassistant-stubs/components/shelly/sensor.pyi +2 -2
- homeassistant-stubs/components/shelly/switch.pyi +14 -14
- homeassistant-stubs/components/shelly/update.pyi +1 -1
- homeassistant-stubs/components/shelly/utils.pyi +6 -2
- homeassistant-stubs/components/skybell/config_flow.pyi +3 -0
- homeassistant-stubs/components/smlight/__init__.pyi +0 -2
- homeassistant-stubs/components/smlight/sensor.pyi +5 -2
- homeassistant-stubs/components/smlight/update.pyi +0 -1
- homeassistant-stubs/components/squeezebox/browse_media.pyi +6 -11
- homeassistant-stubs/components/squeezebox/button.pyi +31 -0
- homeassistant-stubs/components/squeezebox/entity.pyi +8 -2
- homeassistant-stubs/components/squeezebox/media_player.pyi +3 -5
- homeassistant-stubs/components/synology_dsm/__init__.pyi +5 -7
- homeassistant-stubs/components/synology_dsm/backup.pyi +3 -4
- homeassistant-stubs/components/synology_dsm/binary_sensor.pyi +2 -5
- homeassistant-stubs/components/synology_dsm/button.pyi +2 -3
- homeassistant-stubs/components/synology_dsm/camera.pyi +2 -4
- homeassistant-stubs/components/synology_dsm/config_flow.pyi +3 -2
- homeassistant-stubs/components/synology_dsm/coordinator.pyi +15 -5
- homeassistant-stubs/components/synology_dsm/diagnostics.pyi +3 -4
- homeassistant-stubs/components/synology_dsm/media_source.pyi +3 -1
- homeassistant-stubs/components/synology_dsm/repairs.pyi +2 -3
- homeassistant-stubs/components/synology_dsm/sensor.pyi +3 -5
- homeassistant-stubs/components/synology_dsm/service.pyi +1 -1
- homeassistant-stubs/components/synology_dsm/switch.pyi +2 -4
- homeassistant-stubs/components/synology_dsm/update.pyi +2 -5
- homeassistant-stubs/components/tibber/coordinator.pyi +1 -1
- homeassistant-stubs/components/todo/intent.pyi +8 -0
- homeassistant-stubs/components/trafikverket_ferry/config_flow.pyi +1 -0
- homeassistant-stubs/components/trafikverket_weatherstation/config_flow.pyi +3 -0
- homeassistant-stubs/components/tts/__init__.pyi +66 -51
- homeassistant-stubs/components/tts/entity.pyi +54 -0
- homeassistant-stubs/components/tts/media_source.pyi +1 -1
- homeassistant-stubs/components/update/__init__.pyi +2 -2
- homeassistant-stubs/components/usb/__init__.pyi +1 -5
- homeassistant-stubs/components/usb/utils.pyi +2 -0
- homeassistant-stubs/components/vodafone_station/__init__.pyi +11 -0
- homeassistant-stubs/components/vodafone_station/button.pyi +31 -0
- homeassistant-stubs/components/vodafone_station/config_flow.pyi +29 -0
- homeassistant-stubs/components/vodafone_station/const.pyi +9 -0
- homeassistant-stubs/components/vodafone_station/coordinator.pyi +43 -0
- homeassistant-stubs/components/vodafone_station/device_tracker.pyi +30 -0
- homeassistant-stubs/components/vodafone_station/diagnostics.pyi +10 -0
- homeassistant-stubs/components/vodafone_station/helpers.pyi +8 -0
- homeassistant-stubs/components/vodafone_station/sensor.pyi +38 -0
- homeassistant-stubs/components/zwave_js/__init__.pyi +5 -9
- homeassistant-stubs/components/zwave_js/api.pyi +15 -0
- homeassistant-stubs/components/zwave_js/config_flow.pyi +0 -1
- homeassistant-stubs/config_entries.pyi +2 -5
- homeassistant-stubs/helpers/backup.pyi +4 -1
- homeassistant-stubs/helpers/config_entry_oauth2_flow.pyi +14 -0
- homeassistant-stubs/helpers/config_validation.pyi +5 -2
- homeassistant-stubs/helpers/frame.pyi +14 -5
- homeassistant-stubs/helpers/intent.pyi +13 -4
- homeassistant-stubs/helpers/llm.pyi +7 -1
- homeassistant-stubs/helpers/script.pyi +1 -1
- homeassistant-stubs/helpers/selector.pyi +1 -0
- homeassistant-stubs/helpers/template.pyi +14 -1
- homeassistant-stubs/loader.pyi +18 -8
- homeassistant-stubs/scripts/check_config.pyi +0 -1
- homeassistant-stubs/util/logging.pyi +18 -1
- homeassistant-stubs/util/unit_conversion.pyi +3 -0
- homeassistant-stubs/util/unit_system.pyi +12 -10
- homeassistant-stubs/util/yaml/__init__.pyi +3 -4
- homeassistant-stubs/util/yaml/dumper.pyi +2 -8
- homeassistant-stubs/util/yaml/input.pyi +2 -9
- homeassistant-stubs/util/yaml/loader.pyi +4 -72
- homeassistant-stubs/util/yaml/objects.pyi +2 -26
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0.dist-info}/METADATA +2 -2
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0.dist-info}/RECORD +329 -268
- homeassistant-stubs/components/mcp_server/llm_api.pyi +0 -15
- homeassistant-stubs/components/synology_dsm/models.pyi +0 -10
- homeassistant-stubs/util/yaml/const.pyi +0 -1
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0.dist-info}/WHEEL +0 -0
- {homeassistant_stubs-2025.3.4.dist-info → homeassistant_stubs-2025.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -3,9 +3,8 @@ from .utils import get_rpc_ws_url as get_rpc_ws_url
|
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from homeassistant.components.bluetooth import async_scanner_by_source as async_scanner_by_source
|
5
5
|
from homeassistant.components.diagnostics import async_redact_data as async_redact_data
|
6
|
-
from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
|
6
|
+
from homeassistant.const import ATTR_MODEL as ATTR_MODEL, ATTR_NAME as ATTR_NAME, ATTR_SW_VERSION as ATTR_SW_VERSION, CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
|
7
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
|
-
from homeassistant.helpers.device_registry import format_mac as format_mac
|
9
8
|
from typing import Any
|
10
9
|
|
11
10
|
TO_REDACT: Incomplete
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, LOGGER as LOGGER
|
1
|
+
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, DOMAIN as DOMAIN, LOGGER as LOGGER
|
2
2
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
3
3
|
from .utils import async_remove_shelly_entity as async_remove_shelly_entity, get_block_entity_name as get_block_entity_name, get_rpc_entity_name as get_rpc_entity_name, get_rpc_key_instances as get_rpc_key_instances
|
4
4
|
from _typeshed import Incomplete
|
@@ -46,7 +46,6 @@ class RpcEntityDescription(EntityDescription):
|
|
46
46
|
value: Callable[[Any, Any], Any] | None = ...
|
47
47
|
available: Callable[[dict], bool] | None = ...
|
48
48
|
removal_condition: Callable[[dict, dict, str], bool] | None = ...
|
49
|
-
extra_state_attributes: Callable[[dict, dict], dict | None] | None = ...
|
50
49
|
use_polling_coordinator: bool = ...
|
51
50
|
supported: Callable = ...
|
52
51
|
unit: Callable[[dict], str | None] | None = ...
|
@@ -57,7 +56,6 @@ class RpcEntityDescription(EntityDescription):
|
|
57
56
|
class RestEntityDescription(EntityDescription):
|
58
57
|
name: str = ...
|
59
58
|
value: Callable[[dict, Any], Any] | None = ...
|
60
|
-
extra_state_attributes: Callable[[dict], dict | None] | None = ...
|
61
59
|
|
62
60
|
class ShellyBlockEntity(CoordinatorEntity[ShellyBlockCoordinator]):
|
63
61
|
block: Incomplete
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from .const import BASIC_INPUTS_EVENTS_TYPES as BASIC_INPUTS_EVENTS_TYPES, RPC_INPUTS_EVENTS_TYPES as RPC_INPUTS_EVENTS_TYPES, SHIX3_1_INPUTS_EVENTS_TYPES as SHIX3_1_INPUTS_EVENTS_TYPES
|
2
2
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
3
3
|
from .entity import ShellyBlockEntity as ShellyBlockEntity
|
4
|
-
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, async_remove_shelly_entity as async_remove_shelly_entity, get_device_entry_gen as get_device_entry_gen, get_rpc_entity_name as get_rpc_entity_name, get_rpc_key_instances as get_rpc_key_instances,
|
4
|
+
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, async_remove_shelly_entity as async_remove_shelly_entity, get_device_entry_gen as get_device_entry_gen, get_rpc_entity_name as get_rpc_entity_name, get_rpc_key_instances as get_rpc_key_instances, is_block_momentary_input as is_block_momentary_input, is_rpc_momentary_input as is_rpc_momentary_input
|
5
5
|
from _typeshed import Incomplete
|
6
6
|
from aioshelly.block_device import Block as Block
|
7
7
|
from collections.abc import Callable as Callable
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import
|
1
|
+
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, DOMAIN as DOMAIN, LOGGER as LOGGER, VIRTUAL_NUMBER_MODE_MAP as VIRTUAL_NUMBER_MODE_MAP
|
2
2
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
3
3
|
from .entity import BlockEntityDescription as BlockEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, ShellySleepingBlockAttributeEntity as ShellySleepingBlockAttributeEntity, async_setup_entry_attribute_entities as async_setup_entry_attribute_entities, async_setup_entry_rpc as async_setup_entry_rpc
|
4
4
|
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, get_device_entry_gen as get_device_entry_gen, get_virtual_component_ids as get_virtual_component_ids
|
@@ -1,7 +1,7 @@
|
|
1
|
-
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, ROLE_TO_DEVICE_CLASS_MAP as ROLE_TO_DEVICE_CLASS_MAP
|
1
|
+
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, ROLE_TO_DEVICE_CLASS_MAP as ROLE_TO_DEVICE_CLASS_MAP
|
2
2
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
3
3
|
from .entity import BlockEntityDescription as BlockEntityDescription, RestEntityDescription as RestEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyBlockAttributeEntity as ShellyBlockAttributeEntity, ShellyRestAttributeEntity as ShellyRestAttributeEntity, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, ShellySleepingBlockAttributeEntity as ShellySleepingBlockAttributeEntity, ShellySleepingRpcAttributeEntity as ShellySleepingRpcAttributeEntity, async_setup_entry_attribute_entities as async_setup_entry_attribute_entities, async_setup_entry_rest as async_setup_entry_rest, async_setup_entry_rpc as async_setup_entry_rpc
|
4
|
-
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, get_device_entry_gen as get_device_entry_gen, get_device_uptime as get_device_uptime, get_virtual_component_ids as get_virtual_component_ids, is_rpc_wifi_stations_disabled as is_rpc_wifi_stations_disabled
|
4
|
+
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, get_device_entry_gen as get_device_entry_gen, get_device_uptime as get_device_uptime, get_shelly_air_lamp_life as get_shelly_air_lamp_life, get_virtual_component_ids as get_virtual_component_ids, is_rpc_wifi_stations_disabled as is_rpc_wifi_stations_disabled
|
5
5
|
from _typeshed import Incomplete
|
6
6
|
from aioshelly.block_device import Block as Block
|
7
7
|
from collections.abc import Callable as Callable
|
@@ -1,7 +1,6 @@
|
|
1
|
-
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, MOTION_MODELS as MOTION_MODELS
|
2
1
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
3
|
-
from .entity import BlockEntityDescription as BlockEntityDescription, RpcEntityDescription as RpcEntityDescription,
|
4
|
-
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities,
|
2
|
+
from .entity import BlockEntityDescription as BlockEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyBlockAttributeEntity as ShellyBlockAttributeEntity, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, ShellySleepingBlockAttributeEntity as ShellySleepingBlockAttributeEntity, async_setup_entry_attribute_entities as async_setup_entry_attribute_entities, async_setup_entry_rpc as async_setup_entry_rpc
|
3
|
+
from .utils import async_remove_orphaned_entities as async_remove_orphaned_entities, get_device_entry_gen as get_device_entry_gen, get_virtual_component_ids as get_virtual_component_ids, is_block_exclude_from_relay as is_block_exclude_from_relay, is_rpc_exclude_from_relay as is_rpc_exclude_from_relay
|
5
4
|
from _typeshed import Incomplete
|
6
5
|
from aioshelly.block_device import Block as Block
|
7
6
|
from collections.abc import Callable as Callable
|
@@ -17,7 +16,8 @@ from typing import Any
|
|
17
16
|
@dataclass(frozen=True, kw_only=True)
|
18
17
|
class BlockSwitchDescription(BlockEntityDescription, SwitchEntityDescription): ...
|
19
18
|
|
20
|
-
|
19
|
+
BLOCK_RELAY_SWITCHES: Incomplete
|
20
|
+
BLOCK_SLEEPING_MOTION_SWITCH: Incomplete
|
21
21
|
|
22
22
|
@dataclass(frozen=True, kw_only=True)
|
23
23
|
class RpcSwitchDescription(RpcEntityDescription, SwitchEntityDescription):
|
@@ -26,6 +26,7 @@ class RpcSwitchDescription(RpcEntityDescription, SwitchEntityDescription):
|
|
26
26
|
method_off: str
|
27
27
|
method_params_fn: Callable[[int | None, bool], dict]
|
28
28
|
|
29
|
+
RPC_RELAY_SWITCHES: Incomplete
|
29
30
|
RPC_SWITCHES: Incomplete
|
30
31
|
|
31
32
|
async def async_setup_entry(hass: HomeAssistant, config_entry: ShellyConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
@@ -45,9 +46,11 @@ class BlockSleepingMotionSwitch(ShellySleepingBlockAttributeEntity, RestoreEntit
|
|
45
46
|
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
46
47
|
async def async_added_to_hass(self) -> None: ...
|
47
48
|
|
48
|
-
class BlockRelaySwitch(
|
49
|
+
class BlockRelaySwitch(ShellyBlockAttributeEntity, SwitchEntity):
|
50
|
+
entity_description: BlockSwitchDescription
|
49
51
|
control_result: dict[str, Any] | None
|
50
|
-
|
52
|
+
_attr_unique_id: str
|
53
|
+
def __init__(self, coordinator: ShellyBlockCoordinator, block: Block, attribute: str, description: BlockSwitchDescription) -> None: ...
|
51
54
|
@property
|
52
55
|
def is_on(self) -> bool: ...
|
53
56
|
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
@@ -55,14 +58,6 @@ class BlockRelaySwitch(ShellyBlockEntity, SwitchEntity):
|
|
55
58
|
@callback
|
56
59
|
def _update_callback(self) -> None: ...
|
57
60
|
|
58
|
-
class RpcRelaySwitch(ShellyRpcEntity, SwitchEntity):
|
59
|
-
_id: Incomplete
|
60
|
-
def __init__(self, coordinator: ShellyRpcCoordinator, id_: int) -> None: ...
|
61
|
-
@property
|
62
|
-
def is_on(self) -> bool: ...
|
63
|
-
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
64
|
-
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
65
|
-
|
66
61
|
class RpcSwitch(ShellyRpcAttributeEntity, SwitchEntity):
|
67
62
|
entity_description: RpcSwitchDescription
|
68
63
|
_attr_has_entity_name: bool
|
@@ -70,3 +65,8 @@ class RpcSwitch(ShellyRpcAttributeEntity, SwitchEntity):
|
|
70
65
|
def is_on(self) -> bool: ...
|
71
66
|
async def async_turn_on(self, **kwargs: Any) -> None: ...
|
72
67
|
async def async_turn_off(self, **kwargs: Any) -> None: ...
|
68
|
+
|
69
|
+
class RpcRelaySwitch(RpcSwitch):
|
70
|
+
_attr_has_entity_name: bool
|
71
|
+
_attr_unique_id: str
|
72
|
+
def __init__(self, coordinator: ShellyRpcCoordinator, key: str, attribute: str, description: RpcEntityDescription) -> None: ...
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, OTA_BEGIN as OTA_BEGIN, OTA_ERROR as OTA_ERROR, OTA_PROGRESS as OTA_PROGRESS, OTA_SUCCESS as OTA_SUCCESS
|
1
|
+
from .const import CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, DOMAIN as DOMAIN, OTA_BEGIN as OTA_BEGIN, OTA_ERROR as OTA_ERROR, OTA_PROGRESS as OTA_PROGRESS, OTA_SUCCESS as OTA_SUCCESS
|
2
2
|
from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyRpcCoordinator as ShellyRpcCoordinator
|
3
3
|
from .entity import RestEntityDescription as RestEntityDescription, RpcEntityDescription as RpcEntityDescription, ShellyRestAttributeEntity as ShellyRestAttributeEntity, ShellyRpcAttributeEntity as ShellyRpcAttributeEntity, ShellySleepingRpcAttributeEntity as ShellySleepingRpcAttributeEntity, async_setup_entry_rest as async_setup_entry_rest, async_setup_entry_rpc as async_setup_entry_rpc
|
4
4
|
from .utils import get_device_entry_gen as get_device_entry_gen, get_release_url as get_release_url
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from .const import API_WS_URL as API_WS_URL, BASIC_INPUTS_EVENTS_TYPES as BASIC_INPUTS_EVENTS_TYPES, COMPONENT_ID_PATTERN as COMPONENT_ID_PATTERN, CONF_COAP_PORT as CONF_COAP_PORT, CONF_GEN as CONF_GEN, DEVICES_WITHOUT_FIRMWARE_CHANGELOG as DEVICES_WITHOUT_FIRMWARE_CHANGELOG, DOMAIN as DOMAIN, FIRMWARE_UNSUPPORTED_ISSUE_ID as FIRMWARE_UNSUPPORTED_ISSUE_ID, GEN1_RELEASE_URL as GEN1_RELEASE_URL, GEN2_BETA_RELEASE_URL as GEN2_BETA_RELEASE_URL, GEN2_RELEASE_URL as GEN2_RELEASE_URL, LOGGER as LOGGER, RPC_INPUTS_EVENTS_TYPES as RPC_INPUTS_EVENTS_TYPES, SHBTN_INPUTS_EVENTS_TYPES as SHBTN_INPUTS_EVENTS_TYPES, SHBTN_MODELS as SHBTN_MODELS, SHELLY_EMIT_EVENT_PATTERN as SHELLY_EMIT_EVENT_PATTERN, SHIX3_1_INPUTS_EVENTS_TYPES as SHIX3_1_INPUTS_EVENTS_TYPES, UPTIME_DEVIATION as UPTIME_DEVIATION, VIRTUAL_COMPONENTS_MAP as VIRTUAL_COMPONENTS_MAP
|
1
|
+
from .const import API_WS_URL as API_WS_URL, BASIC_INPUTS_EVENTS_TYPES as BASIC_INPUTS_EVENTS_TYPES, COMPONENT_ID_PATTERN as COMPONENT_ID_PATTERN, CONF_COAP_PORT as CONF_COAP_PORT, CONF_GEN as CONF_GEN, DEVICES_WITHOUT_FIRMWARE_CHANGELOG as DEVICES_WITHOUT_FIRMWARE_CHANGELOG, DOMAIN as DOMAIN, FIRMWARE_UNSUPPORTED_ISSUE_ID as FIRMWARE_UNSUPPORTED_ISSUE_ID, GEN1_RELEASE_URL as GEN1_RELEASE_URL, GEN2_BETA_RELEASE_URL as GEN2_BETA_RELEASE_URL, GEN2_RELEASE_URL as GEN2_RELEASE_URL, LOGGER as LOGGER, RPC_INPUTS_EVENTS_TYPES as RPC_INPUTS_EVENTS_TYPES, SHAIR_MAX_WORK_HOURS as SHAIR_MAX_WORK_HOURS, SHBTN_INPUTS_EVENTS_TYPES as SHBTN_INPUTS_EVENTS_TYPES, SHBTN_MODELS as SHBTN_MODELS, SHELLY_EMIT_EVENT_PATTERN as SHELLY_EMIT_EVENT_PATTERN, SHIX3_1_INPUTS_EVENTS_TYPES as SHIX3_1_INPUTS_EVENTS_TYPES, UPTIME_DEVIATION as UPTIME_DEVIATION, VIRTUAL_COMPONENTS_MAP as VIRTUAL_COMPONENTS_MAP
|
2
2
|
from _typeshed import Incomplete
|
3
3
|
from aiohttp.web import Request as Request, WebSocketResponse as WebSocketResponse
|
4
4
|
from aioshelly.block_device import Block as Block, BlockDevice as BlockDevice, COAP
|
@@ -8,7 +8,7 @@ from datetime import datetime
|
|
8
8
|
from homeassistant.components import network as network
|
9
9
|
from homeassistant.components.http import HomeAssistantView as HomeAssistantView
|
10
10
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
11
|
-
from homeassistant.const import CONF_PORT as CONF_PORT, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
11
|
+
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_MODEL as CONF_MODEL, CONF_PORT as CONF_PORT, EVENT_HOMEASSISTANT_STOP as EVENT_HOMEASSISTANT_STOP
|
12
12
|
from homeassistant.core import Event as Event, HomeAssistant as HomeAssistant, callback as callback
|
13
13
|
from homeassistant.helpers import singleton as singleton
|
14
14
|
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC
|
@@ -23,6 +23,7 @@ def get_number_of_channels(device: BlockDevice, block: Block) -> int: ...
|
|
23
23
|
def get_block_entity_name(device: BlockDevice, block: Block | None, description: str | None = None) -> str: ...
|
24
24
|
def get_block_channel_name(device: BlockDevice, block: Block | None) -> str: ...
|
25
25
|
def is_block_momentary_input(settings: dict[str, Any], block: Block, include_detached: bool = False) -> bool: ...
|
26
|
+
def is_block_exclude_from_relay(settings: dict[str, Any], block: Block) -> bool: ...
|
26
27
|
def get_device_uptime(uptime: float, last_uptime: datetime | None) -> datetime: ...
|
27
28
|
def get_block_input_triggers(device: BlockDevice, block: Block) -> list[tuple[str, str]]: ...
|
28
29
|
def get_shbtn_input_triggers() -> list[tuple[str, str]]: ...
|
@@ -72,3 +73,6 @@ def get_virtual_component_ids(config: dict[str, Any], platform: str) -> list[str
|
|
72
73
|
def async_remove_orphaned_entities(hass: HomeAssistant, config_entry_id: str, mac: str, platform: str, keys: Iterable[str], key_suffix: str | None = None) -> None: ...
|
73
74
|
def get_rpc_ws_url(hass: HomeAssistant) -> str | None: ...
|
74
75
|
async def get_rpc_script_event_types(device: RpcDevice, id: int) -> list[str]: ...
|
76
|
+
def is_rpc_exclude_from_relay(settings: dict[str, Any], status: dict[str, Any], channel: str) -> bool: ...
|
77
|
+
def get_shelly_air_lamp_life(lamp_seconds: int) -> float: ...
|
78
|
+
async def get_rpc_scripts_event_types(device: RpcDevice, ignore_scripts: list[str]) -> dict[int, list[str]]: ...
|
@@ -1,10 +1,13 @@
|
|
1
1
|
from .const import DOMAIN as DOMAIN
|
2
|
+
from _typeshed import Incomplete
|
2
3
|
from collections.abc import Mapping
|
3
4
|
from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult
|
4
5
|
from homeassistant.const import CONF_EMAIL as CONF_EMAIL, CONF_PASSWORD as CONF_PASSWORD
|
5
6
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
6
7
|
from typing import Any
|
7
8
|
|
9
|
+
_LOGGER: Incomplete
|
10
|
+
|
8
11
|
class SkybellFlowHandler(ConfigFlow, domain=DOMAIN):
|
9
12
|
reauth_email: str
|
10
13
|
async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
|
@@ -2,10 +2,8 @@ from .coordinator import SmConfigEntry as SmConfigEntry, SmDataUpdateCoordinator
|
|
2
2
|
from homeassistant.const import CONF_HOST as CONF_HOST, Platform as Platform
|
3
3
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
4
4
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
|
5
|
-
from pysmlight import Info as Info, Radio as Radio
|
6
5
|
|
7
6
|
PLATFORMS: list[Platform]
|
8
7
|
|
9
8
|
async def async_setup_entry(hass: HomeAssistant, entry: SmConfigEntry) -> bool: ...
|
10
9
|
async def async_unload_entry(hass: HomeAssistant, entry: SmConfigEntry) -> bool: ...
|
11
|
-
def get_radio(info: Info, idx: int) -> Radio: ...
|
@@ -19,10 +19,12 @@ class SmSensorEntityDescription(SensorEntityDescription):
|
|
19
19
|
|
20
20
|
@dataclass(frozen=True, kw_only=True)
|
21
21
|
class SmInfoEntityDescription(SensorEntityDescription):
|
22
|
-
value_fn: Callable[[Info], StateType]
|
22
|
+
value_fn: Callable[[Info, int], StateType]
|
23
23
|
|
24
24
|
INFO: list[SmInfoEntityDescription]
|
25
|
+
RADIO_INFO: Incomplete
|
25
26
|
SENSORS: list[SmSensorEntityDescription]
|
27
|
+
EXTRA_SENSOR: Incomplete
|
26
28
|
UPTIME: list[SmSensorEntityDescription]
|
27
29
|
|
28
30
|
async def async_setup_entry(hass: HomeAssistant, entry: SmConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
@@ -40,8 +42,9 @@ class SmInfoSensorEntity(SmEntity, SensorEntity):
|
|
40
42
|
coordinator: SmDataUpdateCoordinator
|
41
43
|
entity_description: SmInfoEntityDescription
|
42
44
|
_attr_entity_category: Incomplete
|
45
|
+
idx: Incomplete
|
43
46
|
_attr_unique_id: Incomplete
|
44
|
-
def __init__(self, coordinator: SmDataUpdateCoordinator, description: SmInfoEntityDescription) -> None: ...
|
47
|
+
def __init__(self, coordinator: SmDataUpdateCoordinator, description: SmInfoEntityDescription, idx: int = 0) -> None: ...
|
45
48
|
@property
|
46
49
|
def native_value(self) -> StateType: ...
|
47
50
|
|
@@ -11,28 +11,23 @@ from typing import Any
|
|
11
11
|
LIBRARY: Incomplete
|
12
12
|
MEDIA_TYPE_TO_SQUEEZEBOX: dict[str | MediaType, str]
|
13
13
|
SQUEEZEBOX_ID_BY_TYPE: dict[str | MediaType, str]
|
14
|
-
CONTENT_TYPE_MEDIA_CLASS: dict[str | MediaType, dict[str, MediaClass |
|
14
|
+
CONTENT_TYPE_MEDIA_CLASS: dict[str | MediaType, dict[str, MediaClass | str]]
|
15
15
|
CONTENT_TYPE_TO_CHILD_TYPE: dict[str | MediaType, str | MediaType | None]
|
16
16
|
|
17
17
|
@dataclass
|
18
18
|
class BrowseData:
|
19
19
|
content_type_to_child_type: dict[str | MediaType, str | MediaType | None] = field(default_factory=dict)
|
20
|
-
content_type_media_class: dict[str | MediaType, dict[str, MediaClass |
|
20
|
+
content_type_media_class: dict[str | MediaType, dict[str, MediaClass | str]] = field(default_factory=dict)
|
21
21
|
squeezebox_id_by_type: dict[str | MediaType, str] = field(default_factory=dict)
|
22
22
|
media_type_to_squeezebox: dict[str | MediaType, str] = field(default_factory=dict)
|
23
23
|
known_apps_radios: set[str] = field(default_factory=set)
|
24
24
|
def __post_init__(self) -> None: ...
|
25
25
|
|
26
|
-
@dataclass
|
27
|
-
class BrowseItemResponse:
|
28
|
-
child_item_type: str | MediaType
|
29
|
-
child_media_class: dict[str, MediaClass | None]
|
30
|
-
can_expand: bool
|
31
|
-
can_play: bool
|
32
|
-
|
33
26
|
def _add_new_command_to_browse_data(browse_data: BrowseData, cmd: str | MediaType, type: str) -> None: ...
|
34
|
-
def _build_response_apps_radios_category(browse_data: BrowseData, cmd: str | MediaType) ->
|
35
|
-
def _build_response_known_app(browse_data: BrowseData, search_type: str, item: dict[str, Any]) ->
|
27
|
+
def _build_response_apps_radios_category(browse_data: BrowseData, cmd: str | MediaType, item: dict[str, Any]) -> BrowseMedia: ...
|
28
|
+
def _build_response_known_app(browse_data: BrowseData, search_type: str, item: dict[str, Any]) -> BrowseMedia: ...
|
29
|
+
def _build_response_favorites(item: dict[str, Any]) -> BrowseMedia: ...
|
30
|
+
def _get_item_thumbnail(item: dict[str, Any], player: Player, entity: MediaPlayerEntity, item_type: str | MediaType | None, search_type: str, internal_request: bool) -> str | None: ...
|
36
31
|
async def build_item_response(entity: MediaPlayerEntity, player: Player, payload: dict[str, str | None], browse_limit: int, browse_data: BrowseData) -> BrowseMedia: ...
|
37
32
|
async def library_payload(hass: HomeAssistant, player: Player, browse_media: BrowseData) -> BrowseMedia: ...
|
38
33
|
def media_source_content_filter(item: BrowseMedia) -> bool: ...
|
@@ -0,0 +1,31 @@
|
|
1
|
+
from . import SqueezeboxConfigEntry as SqueezeboxConfigEntry
|
2
|
+
from .const import SIGNAL_PLAYER_DISCOVERED as SIGNAL_PLAYER_DISCOVERED
|
3
|
+
from .coordinator import SqueezeBoxPlayerUpdateCoordinator as SqueezeBoxPlayerUpdateCoordinator
|
4
|
+
from .entity import SqueezeboxEntity as SqueezeboxEntity
|
5
|
+
from _typeshed import Incomplete
|
6
|
+
from dataclasses import dataclass
|
7
|
+
from homeassistant.components.button import ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
|
8
|
+
from homeassistant.core import HomeAssistant as HomeAssistant
|
9
|
+
from homeassistant.helpers.device_registry import format_mac as format_mac
|
10
|
+
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
11
|
+
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
12
|
+
|
13
|
+
_LOGGER: Incomplete
|
14
|
+
HARDWARE_MODELS_WITH_SCREEN: Incomplete
|
15
|
+
HARDWARE_MODELS_WITH_TONE: Incomplete
|
16
|
+
|
17
|
+
@dataclass(frozen=True, kw_only=True)
|
18
|
+
class SqueezeboxButtonEntityDescription(ButtonEntityDescription):
|
19
|
+
press_action: str
|
20
|
+
|
21
|
+
BUTTON_ENTITIES: tuple[SqueezeboxButtonEntityDescription, ...]
|
22
|
+
SCREEN_BUTTON_ENTITIES: tuple[SqueezeboxButtonEntityDescription, ...]
|
23
|
+
TONE_BUTTON_ENTITIES: tuple[SqueezeboxButtonEntityDescription, ...]
|
24
|
+
|
25
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
26
|
+
|
27
|
+
class SqueezeboxButtonEntity(SqueezeboxEntity, ButtonEntity):
|
28
|
+
entity_description: SqueezeboxButtonEntityDescription
|
29
|
+
_attr_unique_id: Incomplete
|
30
|
+
def __init__(self, coordinator: SqueezeBoxPlayerUpdateCoordinator, entity_description: SqueezeboxButtonEntityDescription) -> None: ...
|
31
|
+
async def async_press(self) -> None: ...
|
@@ -1,10 +1,16 @@
|
|
1
1
|
from .const import DOMAIN as DOMAIN, STATUS_QUERY_UUID as STATUS_QUERY_UUID
|
2
|
-
from .coordinator import LMSStatusDataUpdateCoordinator as LMSStatusDataUpdateCoordinator
|
2
|
+
from .coordinator import LMSStatusDataUpdateCoordinator as LMSStatusDataUpdateCoordinator, SqueezeBoxPlayerUpdateCoordinator as SqueezeBoxPlayerUpdateCoordinator
|
3
3
|
from _typeshed import Incomplete
|
4
|
-
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
4
|
+
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, DeviceInfo as DeviceInfo, format_mac as format_mac
|
5
5
|
from homeassistant.helpers.entity import EntityDescription as EntityDescription
|
6
6
|
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
7
7
|
|
8
|
+
class SqueezeboxEntity(CoordinatorEntity[SqueezeBoxPlayerUpdateCoordinator]):
|
9
|
+
_attr_has_entity_name: bool
|
10
|
+
_player: Incomplete
|
11
|
+
_attr_device_info: Incomplete
|
12
|
+
def __init__(self, coordinator: SqueezeBoxPlayerUpdateCoordinator) -> None: ...
|
13
|
+
|
8
14
|
class LMSStatusEntity(CoordinatorEntity[LMSStatusDataUpdateCoordinator]):
|
9
15
|
_attr_has_entity_name: bool
|
10
16
|
entity_description: Incomplete
|
@@ -2,6 +2,7 @@ from . import SqueezeboxConfigEntry as SqueezeboxConfigEntry
|
|
2
2
|
from .browse_media import BrowseData as BrowseData, build_item_response as build_item_response, generate_playlist as generate_playlist, library_payload as library_payload, media_source_content_filter as media_source_content_filter
|
3
3
|
from .const import ATTR_ANNOUNCE_TIMEOUT as ATTR_ANNOUNCE_TIMEOUT, ATTR_ANNOUNCE_VOLUME as ATTR_ANNOUNCE_VOLUME, CONF_BROWSE_LIMIT as CONF_BROWSE_LIMIT, CONF_VOLUME_STEP as CONF_VOLUME_STEP, DEFAULT_BROWSE_LIMIT as DEFAULT_BROWSE_LIMIT, DEFAULT_VOLUME_STEP as DEFAULT_VOLUME_STEP, DISCOVERY_TASK as DISCOVERY_TASK, DOMAIN as DOMAIN, KNOWN_PLAYERS as KNOWN_PLAYERS, KNOWN_SERVERS as KNOWN_SERVERS, SIGNAL_PLAYER_DISCOVERED as SIGNAL_PLAYER_DISCOVERED, SQUEEZEBOX_SOURCE_STRINGS as SQUEEZEBOX_SOURCE_STRINGS
|
4
4
|
from .coordinator import SqueezeBoxPlayerUpdateCoordinator as SqueezeBoxPlayerUpdateCoordinator
|
5
|
+
from .entity import SqueezeboxEntity as SqueezeboxEntity
|
5
6
|
from _typeshed import Incomplete
|
6
7
|
from collections.abc import Callable as Callable
|
7
8
|
from datetime import datetime
|
@@ -12,11 +13,10 @@ from homeassistant.const import ATTR_COMMAND as ATTR_COMMAND, CONF_HOST as CONF_
|
|
12
13
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
13
14
|
from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
|
14
15
|
from homeassistant.helpers import discovery_flow as discovery_flow, entity_platform as entity_platform
|
15
|
-
from homeassistant.helpers.device_registry import
|
16
|
+
from homeassistant.helpers.device_registry import format_mac as format_mac
|
16
17
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
17
18
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
18
19
|
from homeassistant.helpers.start import async_at_start as async_at_start
|
19
|
-
from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity
|
20
20
|
from homeassistant.util.dt import utcnow as utcnow
|
21
21
|
from pysqueezebox import Server as Server
|
22
22
|
from typing import Any
|
@@ -35,17 +35,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: SqueezeboxConfigEntry, a
|
|
35
35
|
def get_announce_volume(extra: dict) -> float | None: ...
|
36
36
|
def get_announce_timeout(extra: dict) -> int | None: ...
|
37
37
|
|
38
|
-
class SqueezeBoxMediaPlayerEntity(
|
38
|
+
class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
|
39
39
|
_attr_supported_features: Incomplete
|
40
40
|
_attr_has_entity_name: bool
|
41
41
|
_attr_name: Incomplete
|
42
42
|
_last_update: datetime | None
|
43
|
-
_player: Incomplete
|
44
43
|
_query_result: bool | dict
|
45
44
|
_remove_dispatcher: Callable | None
|
46
45
|
_previous_media_position: int
|
47
46
|
_attr_unique_id: Incomplete
|
48
|
-
_attr_device_info: Incomplete
|
49
47
|
_browse_data: Incomplete
|
50
48
|
def __init__(self, coordinator: SqueezeBoxPlayerUpdateCoordinator) -> None: ...
|
51
49
|
@callback
|
@@ -1,10 +1,8 @@
|
|
1
1
|
from .common import SynoApi as SynoApi, raise_config_entry_auth_error as raise_config_entry_auth_error
|
2
2
|
from .const import CONF_BACKUP_PATH as CONF_BACKUP_PATH, CONF_BACKUP_SHARE as CONF_BACKUP_SHARE, DATA_BACKUP_AGENT_LISTENERS as DATA_BACKUP_AGENT_LISTENERS, DEFAULT_VERIFY_SSL as DEFAULT_VERIFY_SSL, DOMAIN as DOMAIN, EXCEPTION_DETAILS as EXCEPTION_DETAILS, EXCEPTION_UNKNOWN as EXCEPTION_UNKNOWN, PLATFORMS as PLATFORMS, SYNOLOGY_AUTH_FAILED_EXCEPTIONS as SYNOLOGY_AUTH_FAILED_EXCEPTIONS, SYNOLOGY_CONNECTION_EXCEPTIONS as SYNOLOGY_CONNECTION_EXCEPTIONS
|
3
|
-
from .coordinator import SynologyDSMCameraUpdateCoordinator as SynologyDSMCameraUpdateCoordinator, SynologyDSMCentralUpdateCoordinator as SynologyDSMCentralUpdateCoordinator, SynologyDSMSwitchUpdateCoordinator as SynologyDSMSwitchUpdateCoordinator
|
4
|
-
from .models import SynologyDSMData as SynologyDSMData
|
3
|
+
from .coordinator import SynologyDSMCameraUpdateCoordinator as SynologyDSMCameraUpdateCoordinator, SynologyDSMCentralUpdateCoordinator as SynologyDSMCentralUpdateCoordinator, SynologyDSMConfigEntry as SynologyDSMConfigEntry, SynologyDSMData as SynologyDSMData, SynologyDSMSwitchUpdateCoordinator as SynologyDSMSwitchUpdateCoordinator
|
5
4
|
from .service import async_setup_services as async_setup_services
|
6
5
|
from _typeshed import Incomplete
|
7
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
8
6
|
from homeassistant.const import CONF_MAC as CONF_MAC, CONF_SCAN_INTERVAL as CONF_SCAN_INTERVAL, CONF_VERIFY_SSL as CONF_VERIFY_SSL
|
9
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
8
|
from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
|
@@ -13,7 +11,7 @@ from synology_dsm.api.surveillance_station.camera import SynoCamera as SynoCamer
|
|
13
11
|
|
14
12
|
_LOGGER: Incomplete
|
15
13
|
|
16
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
17
|
-
async def async_unload_entry(hass: HomeAssistant, entry:
|
18
|
-
async def _async_update_listener(hass: HomeAssistant, entry:
|
19
|
-
async def async_remove_config_entry_device(hass: HomeAssistant, entry:
|
14
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> bool: ...
|
15
|
+
async def async_unload_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> bool: ...
|
16
|
+
async def _async_update_listener(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> None: ...
|
17
|
+
async def async_remove_config_entry_device(hass: HomeAssistant, entry: SynologyDSMConfigEntry, device_entry: dr.DeviceEntry) -> bool: ...
|
@@ -1,9 +1,8 @@
|
|
1
1
|
from .const import CONF_BACKUP_PATH as CONF_BACKUP_PATH, CONF_BACKUP_SHARE as CONF_BACKUP_SHARE, DATA_BACKUP_AGENT_LISTENERS as DATA_BACKUP_AGENT_LISTENERS, DOMAIN as DOMAIN
|
2
|
-
from .
|
2
|
+
from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from collections.abc import AsyncIterator, Callable as Callable, Coroutine
|
5
5
|
from homeassistant.components.backup import AgentBackup as AgentBackup, BackupAgent as BackupAgent, BackupAgentError as BackupAgentError, BackupNotFound as BackupNotFound, suggested_filename as suggested_filename
|
6
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
7
6
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
8
7
|
from homeassistant.helpers.aiohttp_client import ChunkAsyncStreamIterator as ChunkAsyncStreamIterator
|
9
8
|
from homeassistant.helpers.json import json_dumps as json_dumps
|
@@ -25,7 +24,7 @@ class SynologyDSMBackupAgent(BackupAgent):
|
|
25
24
|
path: Incomplete
|
26
25
|
api: Incomplete
|
27
26
|
backup_base_names: dict[str, str]
|
28
|
-
def __init__(self, hass: HomeAssistant, entry:
|
27
|
+
def __init__(self, hass: HomeAssistant, entry: SynologyDSMConfigEntry, unique_id: str) -> None: ...
|
29
28
|
@property
|
30
29
|
def _file_station(self) -> SynoFileStation: ...
|
31
30
|
async def _async_backup_filenames(self, backup_id: str) -> tuple[str, str]: ...
|
@@ -34,4 +33,4 @@ class SynologyDSMBackupAgent(BackupAgent):
|
|
34
33
|
async def async_delete_backup(self, backup_id: str, **kwargs: Any) -> None: ...
|
35
34
|
async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]: ...
|
36
35
|
async def _async_list_backups(self, **kwargs: Any) -> dict[str, AgentBackup]: ...
|
37
|
-
async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup
|
36
|
+
async def async_get_backup(self, backup_id: str, **kwargs: Any) -> AgentBackup: ...
|
@@ -1,11 +1,8 @@
|
|
1
1
|
from . import SynoApi as SynoApi
|
2
|
-
from .
|
3
|
-
from .coordinator import SynologyDSMCentralUpdateCoordinator as SynologyDSMCentralUpdateCoordinator
|
2
|
+
from .coordinator import SynologyDSMCentralUpdateCoordinator as SynologyDSMCentralUpdateCoordinator, SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
4
3
|
from .entity import SynologyDSMBaseEntity as SynologyDSMBaseEntity, SynologyDSMDeviceEntity as SynologyDSMDeviceEntity, SynologyDSMEntityDescription as SynologyDSMEntityDescription
|
5
|
-
from .models import SynologyDSMData as SynologyDSMData
|
6
4
|
from dataclasses import dataclass
|
7
5
|
from homeassistant.components.binary_sensor import BinarySensorDeviceClass as BinarySensorDeviceClass, BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
|
8
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
9
6
|
from homeassistant.const import CONF_DISKS as CONF_DISKS, EntityCategory as EntityCategory
|
10
7
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
11
8
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
|
@@ -16,7 +13,7 @@ class SynologyDSMBinarySensorEntityDescription(BinarySensorEntityDescription, Sy
|
|
16
13
|
SECURITY_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...]
|
17
14
|
STORAGE_DISK_BINARY_SENSORS: tuple[SynologyDSMBinarySensorEntityDescription, ...]
|
18
15
|
|
19
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
16
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
20
17
|
|
21
18
|
class SynoDSMBinarySensor(SynologyDSMBaseEntity[SynologyDSMCentralUpdateCoordinator], BinarySensorEntity):
|
22
19
|
entity_description: SynologyDSMBinarySensorEntityDescription
|
@@ -1,11 +1,10 @@
|
|
1
1
|
from . import SynoApi as SynoApi
|
2
2
|
from .const import DOMAIN as DOMAIN
|
3
|
-
from .
|
3
|
+
from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from collections.abc import Callable as Callable, Coroutine
|
6
6
|
from dataclasses import dataclass
|
7
7
|
from homeassistant.components.button import ButtonDeviceClass as ButtonDeviceClass, ButtonEntity as ButtonEntity, ButtonEntityDescription as ButtonEntityDescription
|
8
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
9
8
|
from homeassistant.const import EntityCategory as EntityCategory
|
10
9
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
11
10
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
@@ -20,7 +19,7 @@ class SynologyDSMbuttonDescription(ButtonEntityDescription):
|
|
20
19
|
|
21
20
|
BUTTONS: Final[Incomplete]
|
22
21
|
|
23
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
22
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
24
23
|
|
25
24
|
class SynologyDSMButton(ButtonEntity):
|
26
25
|
entity_description: SynologyDSMbuttonDescription
|
@@ -1,12 +1,10 @@
|
|
1
1
|
from . import SynoApi as SynoApi
|
2
2
|
from .const import CONF_SNAPSHOT_QUALITY as CONF_SNAPSHOT_QUALITY, DEFAULT_SNAPSHOT_QUALITY as DEFAULT_SNAPSHOT_QUALITY, DOMAIN as DOMAIN, SIGNAL_CAMERA_SOURCE_CHANGED as SIGNAL_CAMERA_SOURCE_CHANGED
|
3
|
-
from .coordinator import SynologyDSMCameraUpdateCoordinator as SynologyDSMCameraUpdateCoordinator
|
3
|
+
from .coordinator import SynologyDSMCameraUpdateCoordinator as SynologyDSMCameraUpdateCoordinator, SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
4
4
|
from .entity import SynologyDSMBaseEntity as SynologyDSMBaseEntity, SynologyDSMEntityDescription as SynologyDSMEntityDescription
|
5
|
-
from .models import SynologyDSMData as SynologyDSMData
|
6
5
|
from _typeshed import Incomplete
|
7
6
|
from dataclasses import dataclass
|
8
7
|
from homeassistant.components.camera import Camera as Camera, CameraEntityDescription as CameraEntityDescription, CameraEntityFeature as CameraEntityFeature
|
9
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
10
8
|
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
|
11
9
|
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
|
12
10
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
|
@@ -19,7 +17,7 @@ _LOGGER: Incomplete
|
|
19
17
|
class SynologyDSMCameraEntityDescription(CameraEntityDescription, SynologyDSMEntityDescription):
|
20
18
|
camera_id: int
|
21
19
|
|
22
|
-
async def async_setup_entry(hass: HomeAssistant, entry:
|
20
|
+
async def async_setup_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
|
23
21
|
|
24
22
|
class SynoDSMCamera(SynologyDSMBaseEntity[SynologyDSMCameraUpdateCoordinator], Camera):
|
25
23
|
_attr_supported_features: Incomplete
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import voluptuous as vol
|
2
2
|
from .const import CONF_BACKUP_PATH as CONF_BACKUP_PATH, CONF_BACKUP_SHARE as CONF_BACKUP_SHARE, CONF_DEVICE_TOKEN as CONF_DEVICE_TOKEN, CONF_SNAPSHOT_QUALITY as CONF_SNAPSHOT_QUALITY, CONF_VOLUMES as CONF_VOLUMES, DEFAULT_BACKUP_PATH as DEFAULT_BACKUP_PATH, DEFAULT_PORT as DEFAULT_PORT, DEFAULT_PORT_SSL as DEFAULT_PORT_SSL, DEFAULT_SNAPSHOT_QUALITY as DEFAULT_SNAPSHOT_QUALITY, DEFAULT_TIMEOUT as DEFAULT_TIMEOUT, DEFAULT_USE_SSL as DEFAULT_USE_SSL, DEFAULT_VERIFY_SSL as DEFAULT_VERIFY_SSL, DOMAIN as DOMAIN, SYNOLOGY_CONNECTION_EXCEPTIONS as SYNOLOGY_CONNECTION_EXCEPTIONS
|
3
|
-
from .
|
3
|
+
from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
4
4
|
from _typeshed import Incomplete
|
5
5
|
from collections.abc import Mapping
|
6
6
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry, ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, OptionsFlow as OptionsFlow
|
@@ -31,7 +31,7 @@ class SynologyDSMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
31
31
|
VERSION: int
|
32
32
|
@staticmethod
|
33
33
|
@callback
|
34
|
-
def async_get_options_flow(config_entry:
|
34
|
+
def async_get_options_flow(config_entry: SynologyDSMConfigEntry) -> SynologyDSMOptionsFlowHandler: ...
|
35
35
|
saved_user_input: dict[str, Any]
|
36
36
|
discovered_conf: dict[str, Any]
|
37
37
|
reauth_conf: Mapping[str, Any]
|
@@ -52,6 +52,7 @@ class SynologyDSMFlowHandler(ConfigFlow, domain=DOMAIN):
|
|
52
52
|
def _async_get_existing_entry(self, discovered_mac: str) -> ConfigEntry | None: ...
|
53
53
|
|
54
54
|
class SynologyDSMOptionsFlowHandler(OptionsFlow):
|
55
|
+
config_entry: SynologyDSMConfigEntry
|
55
56
|
async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
|
56
57
|
|
57
58
|
async def _login_and_fetch_syno_info(api: SynologyDSM, otp_code: str | None) -> str: ...
|
@@ -2,6 +2,7 @@ from .common import SynoApi as SynoApi, raise_config_entry_auth_error as raise_c
|
|
2
2
|
from .const import SIGNAL_CAMERA_SOURCE_CHANGED as SIGNAL_CAMERA_SOURCE_CHANGED, SYNOLOGY_AUTH_FAILED_EXCEPTIONS as SYNOLOGY_AUTH_FAILED_EXCEPTIONS, SYNOLOGY_CONNECTION_EXCEPTIONS as SYNOLOGY_CONNECTION_EXCEPTIONS
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from collections.abc import Awaitable, Callable as Callable, Coroutine
|
5
|
+
from dataclasses import dataclass
|
5
6
|
from datetime import timedelta
|
6
7
|
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
7
8
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
@@ -12,26 +13,35 @@ from typing import Any, Concatenate
|
|
12
13
|
|
13
14
|
_LOGGER: Incomplete
|
14
15
|
|
16
|
+
@dataclass
|
17
|
+
class SynologyDSMData:
|
18
|
+
api: SynoApi
|
19
|
+
coordinator_central: SynologyDSMCentralUpdateCoordinator
|
20
|
+
coordinator_central_old_update_success: bool
|
21
|
+
coordinator_cameras: SynologyDSMCameraUpdateCoordinator | None
|
22
|
+
coordinator_switches: SynologyDSMSwitchUpdateCoordinator | None
|
23
|
+
type SynologyDSMConfigEntry = ConfigEntry[SynologyDSMData]
|
24
|
+
|
15
25
|
def async_re_login_on_expired[_T: SynologyDSMUpdateCoordinator[Any], **_P, _R](func: Callable[Concatenate[_T, _P], Awaitable[_R]]) -> Callable[Concatenate[_T, _P], Coroutine[Any, Any, _R]]: ...
|
16
26
|
|
17
27
|
class SynologyDSMUpdateCoordinator[_DataT](DataUpdateCoordinator[_DataT]):
|
18
|
-
config_entry:
|
28
|
+
config_entry: SynologyDSMConfigEntry
|
19
29
|
api: Incomplete
|
20
|
-
def __init__(self, hass: HomeAssistant, entry:
|
30
|
+
def __init__(self, hass: HomeAssistant, entry: SynologyDSMConfigEntry, api: SynoApi, update_interval: timedelta) -> None: ...
|
21
31
|
|
22
32
|
class SynologyDSMSwitchUpdateCoordinator(SynologyDSMUpdateCoordinator[dict[str, dict[str, Any]]]):
|
23
33
|
version: str | None
|
24
|
-
def __init__(self, hass: HomeAssistant, entry:
|
34
|
+
def __init__(self, hass: HomeAssistant, entry: SynologyDSMConfigEntry, api: SynoApi) -> None: ...
|
25
35
|
async def async_setup(self) -> None: ...
|
26
36
|
@async_re_login_on_expired
|
27
37
|
async def _async_update_data(self) -> dict[str, dict[str, Any]]: ...
|
28
38
|
|
29
39
|
class SynologyDSMCentralUpdateCoordinator(SynologyDSMUpdateCoordinator[None]):
|
30
|
-
def __init__(self, hass: HomeAssistant, entry:
|
40
|
+
def __init__(self, hass: HomeAssistant, entry: SynologyDSMConfigEntry, api: SynoApi) -> None: ...
|
31
41
|
@async_re_login_on_expired
|
32
42
|
async def _async_update_data(self) -> None: ...
|
33
43
|
|
34
44
|
class SynologyDSMCameraUpdateCoordinator(SynologyDSMUpdateCoordinator[dict[str, dict[int, SynoCamera]]]):
|
35
|
-
def __init__(self, hass: HomeAssistant, entry:
|
45
|
+
def __init__(self, hass: HomeAssistant, entry: SynologyDSMConfigEntry, api: SynoApi) -> None: ...
|
36
46
|
@async_re_login_on_expired
|
37
47
|
async def _async_update_data(self) -> dict[str, dict[int, SynoCamera]]: ...
|
@@ -1,12 +1,11 @@
|
|
1
|
-
from .const import CONF_DEVICE_TOKEN as CONF_DEVICE_TOKEN
|
2
|
-
from .
|
1
|
+
from .const import CONF_DEVICE_TOKEN as CONF_DEVICE_TOKEN
|
2
|
+
from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from homeassistant.components.diagnostics import async_redact_data as async_redact_data
|
5
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
6
5
|
from homeassistant.const import CONF_PASSWORD as CONF_PASSWORD, CONF_USERNAME as CONF_USERNAME
|
7
6
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
7
|
from typing import Any
|
9
8
|
|
10
9
|
TO_REDACT: Incomplete
|
11
10
|
|
12
|
-
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry:
|
11
|
+
async def async_get_config_entry_diagnostics(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> dict[str, Any]: ...
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from .const import DOMAIN as DOMAIN, SHARED_SUFFIX as SHARED_SUFFIX
|
2
|
-
from .
|
2
|
+
from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry, SynologyDSMData as SynologyDSMData
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from aiohttp import web
|
5
5
|
from homeassistant.components import http as http
|
@@ -9,6 +9,8 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
|
9
9
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
10
10
|
from synology_dsm.api.photos import SynoPhotosItem
|
11
11
|
|
12
|
+
LOGGER: Incomplete
|
13
|
+
|
12
14
|
async def async_get_media_source(hass: HomeAssistant) -> MediaSource: ...
|
13
15
|
|
14
16
|
class SynologyPhotosMediaSourceIdentifier:
|
@@ -1,9 +1,8 @@
|
|
1
1
|
from .const import CONF_BACKUP_PATH as CONF_BACKUP_PATH, CONF_BACKUP_SHARE as CONF_BACKUP_SHARE, DOMAIN as DOMAIN, ISSUE_MISSING_BACKUP_SETUP as ISSUE_MISSING_BACKUP_SETUP, SYNOLOGY_CONNECTION_EXCEPTIONS as SYNOLOGY_CONNECTION_EXCEPTIONS
|
2
|
-
from .
|
2
|
+
from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry
|
3
3
|
from _typeshed import Incomplete
|
4
4
|
from homeassistant import data_entry_flow as data_entry_flow
|
5
5
|
from homeassistant.components.repairs import ConfirmRepairFlow as ConfirmRepairFlow, RepairsFlow as RepairsFlow
|
6
|
-
from homeassistant.config_entries import ConfigEntry as ConfigEntry
|
7
6
|
from homeassistant.core import HomeAssistant as HomeAssistant
|
8
7
|
from homeassistant.helpers.selector import SelectOptionDict as SelectOptionDict, SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, SelectSelectorMode as SelectSelectorMode
|
9
8
|
from synology_dsm.api.file_station.models import SynoFileSharedFolder as SynoFileSharedFolder
|
@@ -13,7 +12,7 @@ LOGGER: Incomplete
|
|
13
12
|
class MissingBackupSetupRepairFlow(RepairsFlow):
|
14
13
|
entry: Incomplete
|
15
14
|
issue_id: Incomplete
|
16
|
-
def __init__(self, entry:
|
15
|
+
def __init__(self, entry: SynologyDSMConfigEntry, issue_id: str) -> None: ...
|
17
16
|
async def async_step_init(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
|
18
17
|
async def async_step_confirm(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
|
19
18
|
async def async_step_ignore(self, _: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
|