From 6c28e49301163b2bce6e1916af1ba73915a7643d Mon Sep 17 00:00:00 2001 From: jbouwh Date: Wed, 22 May 2024 23:36:21 +0000 Subject: [PATCH] Fix imports and merging errors - add slots attr --- homeassistant/components/mqtt/discovery.py | 8 +++++--- homeassistant/components/mqtt/models.py | 3 ++- homeassistant/components/mqtt/schemas.py | 14 ++------------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/homeassistant/components/mqtt/discovery.py b/homeassistant/components/mqtt/discovery.py index 81be3acb52a..d17ebf373ee 100644 --- a/homeassistant/components/mqtt/discovery.py +++ b/homeassistant/components/mqtt/discovery.py @@ -10,6 +10,8 @@ import re import time from typing import TYPE_CHECKING, Any +import voluptuous as vol + from homeassistant.config_entries import ConfigEntry from homeassistant.const import CONF_DEVICE, CONF_PLATFORM from homeassistant.core import HomeAssistant, callback @@ -38,8 +40,8 @@ from .const import ( DOMAIN, SUPPORTED_COMPONENTS, ) -from .models import DATA_MQTT, MqttOriginInfo, ReceiveMessage -from .schemas import MQTT_ORIGIN_INFO_SCHEMA +from .models import DATA_MQTT, MqttComponentConfig, MqttOriginInfo, ReceiveMessage +from .schemas import DEVICE_DISCOVERY_SCHEMA, MQTT_ORIGIN_INFO_SCHEMA, SHARED_OPTIONS from .util import async_forward_entry_setup_and_setup_discovery ABBREVIATIONS_SET = set(ABBREVIATIONS) @@ -178,7 +180,7 @@ def _generate_device_cleanup_config( hass: HomeAssistant, object_id: str, node_id: str | None ) -> dict[str, Any]: """Generate a cleanup message on device cleanup.""" - mqtt_data = get_mqtt_data(hass) + mqtt_data = hass.data[DATA_MQTT] device_discover_id: str = f"{node_id} {object_id}" if node_id else object_id config: dict[str, Any] = {CONF_DEVICE: {}, CONF_COMPONENTS: {}} comp_config = config[CONF_COMPONENTS] diff --git a/homeassistant/components/mqtt/models.py b/homeassistant/components/mqtt/models.py index 5fdd1f11213..f8e8305c89a 100644 --- a/homeassistant/components/mqtt/models.py +++ b/homeassistant/components/mqtt/models.py @@ -422,7 +422,7 @@ class MqttData: tags: dict[str, dict[str, MQTTTagScanner]] = field(default_factory=dict) -@dataclass +@dataclass(slots=True) class MqttComponentConfig: """(component, object_id, node_id, discovery_payload).""" @@ -431,5 +431,6 @@ class MqttComponentConfig: node_id: str | None discovery_payload: MQTTDiscoveryPayload + DATA_MQTT: HassKey[MqttData] = HassKey("mqtt") DATA_MQTT_AVAILABLE: HassKey[asyncio.Future[bool]] = HassKey("mqtt_client_available") diff --git a/homeassistant/components/mqtt/schemas.py b/homeassistant/components/mqtt/schemas.py index 36fa1f8a1ea..da29083df82 100644 --- a/homeassistant/components/mqtt/schemas.py +++ b/homeassistant/components/mqtt/schemas.py @@ -3,6 +3,7 @@ from __future__ import annotations import logging + import voluptuous as vol from homeassistant.const import ( @@ -156,17 +157,6 @@ MQTT_AVAILABILITY_SCHEMA = MQTT_AVAILABILITY_SINGLE_SCHEMA.extend( MQTT_AVAILABILITY_LIST_SCHEMA.schema ) - -def validate_device_has_at_least_one_identifier(value: ConfigType) -> ConfigType: - """Validate that a device info entry has at least one identifying value.""" - if value.get(CONF_IDENTIFIERS) or value.get(CONF_CONNECTIONS): - return value - raise vol.Invalid( - "Device must have at least one identifying value in " - "'identifiers' and/or 'connections'" - ) - - MQTT_ENTITY_DEVICE_INFO_SCHEMA = vol.All( cv.deprecated(CONF_DEPRECATED_VIA_HUB, CONF_VIA_DEVICE), vol.Schema( @@ -230,4 +220,4 @@ DEVICE_DISCOVERY_SCHEMA = MQTT_AVAILABILITY_SCHEMA.extend( vol.Optional(CONF_QOS): valid_qos_schema, vol.Optional(CONF_ENCODING): cv.string, } -) \ No newline at end of file +)