Rename MQTT mixin classes (#118039)

This commit is contained in:
Jan Bouwhuis 2024-05-24 15:41:59 +02:00 committed by GitHub
parent 080bba5d9b
commit 6f81852eb4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 26 additions and 24 deletions

View File

@ -38,7 +38,7 @@ from homeassistant.util import dt as dt_util
from . import subscription
from .config import MQTT_RO_SCHEMA
from .const import CONF_ENCODING, CONF_QOS, CONF_STATE_TOPIC, PAYLOAD_NONE
from .mixins import MqttAvailability, MqttEntity, async_setup_entity_entry_helper
from .mixins import MqttAvailabilityMixin, MqttEntity, async_setup_entity_entry_helper
from .models import MqttValueTemplate, ReceiveMessage
from .schemas import MQTT_ENTITY_COMMON_SCHEMA
@ -268,6 +268,6 @@ class MqttBinarySensor(MqttEntity, BinarySensorEntity, RestoreEntity):
def available(self) -> bool:
"""Return true if the device is available and value has not expired."""
# mypy doesn't know about fget: https://github.com/python/mypy/issues/6185
return MqttAvailability.available.fget(self) and ( # type: ignore[attr-defined]
return MqttAvailabilityMixin.available.fget(self) and ( # type: ignore[attr-defined]
self._expire_after is None or not self._expired
)

View File

@ -36,7 +36,7 @@ from .const import (
DOMAIN,
)
from .discovery import MQTTDiscoveryPayload, clear_discovery_hash
from .mixins import MqttDiscoveryDeviceUpdate, send_discovery_done, update_device
from .mixins import MqttDiscoveryDeviceUpdateMixin, send_discovery_done, update_device
from .models import DATA_MQTT
from .schemas import MQTT_ENTITY_DEVICE_INFO_SCHEMA
@ -185,7 +185,7 @@ class Trigger:
trig.remove = None
class MqttDeviceTrigger(MqttDiscoveryDeviceUpdate):
class MqttDeviceTrigger(MqttDiscoveryDeviceUpdateMixin):
"""Setup a MQTT device trigger with auto discovery."""
def __init__(
@ -205,7 +205,7 @@ class MqttDeviceTrigger(MqttDiscoveryDeviceUpdate):
self._mqtt_data = hass.data[DATA_MQTT]
self.trigger_id = f"{device_id}_{config[CONF_TYPE]}_{config[CONF_SUBTYPE]}"
MqttDiscoveryDeviceUpdate.__init__(
MqttDiscoveryDeviceUpdateMixin.__init__(
self,
hass,
discovery_data,

View File

@ -398,7 +398,7 @@ def write_state_on_attr_change(
return _decorator
class MqttAttributes(Entity):
class MqttAttributesMixin(Entity):
"""Mixin used for platforms that support JSON attributes."""
_attributes_extra_blocked: frozenset[str] = frozenset()
@ -480,7 +480,7 @@ class MqttAttributes(Entity):
_LOGGER.warning("JSON result was not a dictionary")
class MqttAvailability(Entity):
class MqttAvailabilityMixin(Entity):
"""Mixin used for platforms that report availability."""
def __init__(self, config: ConfigType) -> None:
@ -687,7 +687,7 @@ async def async_clear_discovery_topic_if_entity_removed(
await async_remove_discovery_payload(hass, discovery_data)
class MqttDiscoveryDeviceUpdate(ABC):
class MqttDiscoveryDeviceUpdateMixin(ABC):
"""Add support for auto discovery for platforms without an entity."""
def __init__(
@ -822,7 +822,7 @@ class MqttDiscoveryDeviceUpdate(ABC):
"""Handle the cleanup of platform specific parts, extend to the platform."""
class MqttDiscoveryUpdate(Entity):
class MqttDiscoveryUpdateMixin(Entity):
"""Mixin used to handle updated discovery message for entity based platforms."""
def __init__(
@ -854,7 +854,7 @@ class MqttDiscoveryUpdate(Entity):
)
async def _async_remove_state_and_registry_entry(
self: MqttDiscoveryUpdate,
self: MqttDiscoveryUpdateMixin,
) -> None:
"""Remove entity's state and entity registry entry.
@ -1076,9 +1076,9 @@ class MqttEntityDeviceInfo(Entity):
class MqttEntity(
MqttAttributes,
MqttAvailability,
MqttDiscoveryUpdate,
MqttAttributesMixin,
MqttAvailabilityMixin,
MqttDiscoveryUpdateMixin,
MqttEntityDeviceInfo,
):
"""Representation of an MQTT entity."""
@ -1111,9 +1111,11 @@ class MqttEntity(
self._init_entity_id()
# Initialize mixin classes
MqttAttributes.__init__(self, config)
MqttAvailability.__init__(self, config)
MqttDiscoveryUpdate.__init__(self, hass, discovery_data, self.discovery_update)
MqttAttributesMixin.__init__(self, config)
MqttAvailabilityMixin.__init__(self, config)
MqttDiscoveryUpdateMixin.__init__(
self, hass, discovery_data, self.discovery_update
)
MqttEntityDeviceInfo.__init__(self, config.get(CONF_DEVICE), config_entry)
def _init_entity_id(self) -> None:
@ -1164,9 +1166,9 @@ class MqttEntity(
self._sub_state = subscription.async_unsubscribe_topics(
self.hass, self._sub_state
)
await MqttAttributes.async_will_remove_from_hass(self)
await MqttAvailability.async_will_remove_from_hass(self)
await MqttDiscoveryUpdate.async_will_remove_from_hass(self)
await MqttAttributesMixin.async_will_remove_from_hass(self)
await MqttAvailabilityMixin.async_will_remove_from_hass(self)
await MqttDiscoveryUpdateMixin.async_will_remove_from_hass(self)
debug_info.remove_entity_data(self.hass, self.entity_id)
async def async_publish(

View File

@ -41,7 +41,7 @@ from homeassistant.util import dt as dt_util
from . import subscription
from .config import MQTT_RO_SCHEMA
from .const import CONF_ENCODING, CONF_QOS, CONF_STATE_TOPIC, PAYLOAD_NONE
from .mixins import MqttAvailability, MqttEntity, async_setup_entity_entry_helper
from .mixins import MqttAvailabilityMixin, MqttEntity, async_setup_entity_entry_helper
from .models import (
MqttValueTemplate,
PayloadSentinel,
@ -318,6 +318,6 @@ class MqttSensor(MqttEntity, RestoreSensor):
def available(self) -> bool:
"""Return true if the device is available and value has not expired."""
# mypy doesn't know about fget: https://github.com/python/mypy/issues/6185
return MqttAvailability.available.fget(self) and ( # type: ignore[attr-defined]
return MqttAvailabilityMixin.available.fget(self) and ( # type: ignore[attr-defined]
self._expire_after is None or not self._expired
)

View File

@ -20,7 +20,7 @@ from .config import MQTT_BASE_SCHEMA
from .const import ATTR_DISCOVERY_HASH, CONF_QOS, CONF_TOPIC
from .discovery import MQTTDiscoveryPayload
from .mixins import (
MqttDiscoveryDeviceUpdate,
MqttDiscoveryDeviceUpdateMixin,
async_handle_schema_error,
async_setup_non_entity_entry_helper,
send_discovery_done,
@ -97,7 +97,7 @@ def async_has_tags(hass: HomeAssistant, device_id: str) -> bool:
return tags[device_id] != {}
class MQTTTagScanner(MqttDiscoveryDeviceUpdate):
class MQTTTagScanner(MqttDiscoveryDeviceUpdateMixin):
"""MQTT Tag scanner."""
_value_template: Callable[[ReceivePayloadType, str], ReceivePayloadType]
@ -122,7 +122,7 @@ class MQTTTagScanner(MqttDiscoveryDeviceUpdate):
hass=self.hass,
).async_render_with_possible_json_value
MqttDiscoveryDeviceUpdate.__init__(
MqttDiscoveryDeviceUpdateMixin.__init__(
self, hass, discovery_data, device_id, config_entry, LOG_NAME
)