From 589104f63d0d820263b585e16328b5268bbc306e Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Wed, 8 May 2024 23:46:50 +0200 Subject: [PATCH] Export MQTT subscription helpers at integration level (#116150) --- homeassistant/components/mqtt/__init__.py | 6 +++++ homeassistant/components/tasmota/__init__.py | 2 +- tests/components/mqtt/test_init.py | 28 ++++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index 3178d68c9d6..4c435adda7d 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -87,6 +87,12 @@ from .models import ( # noqa: F401 ReceiveMessage, ReceivePayloadType, ) +from .subscription import ( # noqa: F401 + EntitySubscription, + async_prepare_subscribe_topics, + async_subscribe_topics, + async_unsubscribe_topics, +) from .util import ( # noqa: F401 async_create_certificate_temp_files, async_forward_entry_setup_and_setup_discovery, diff --git a/homeassistant/components/tasmota/__init__.py b/homeassistant/components/tasmota/__init__.py index 271cfba9b79..d9294c5992a 100644 --- a/homeassistant/components/tasmota/__init__.py +++ b/homeassistant/components/tasmota/__init__.py @@ -16,7 +16,7 @@ from hatasmota.models import TasmotaDeviceConfig from hatasmota.mqtt import TasmotaMQTTClient from homeassistant.components import mqtt -from homeassistant.components.mqtt.subscription import ( +from homeassistant.components.mqtt import ( async_prepare_subscribe_topics, async_subscribe_topics, async_unsubscribe_topics, diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index bedbf596aa7..adf78fc082d 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -4491,3 +4491,31 @@ async def test_loop_write_failure( await hass.async_block_till_done() assert "Disconnected from MQTT server mock-broker:1883 (7)" in caplog.text + + +@pytest.mark.parametrize( + "attr", + [ + "EntitySubscription", + "MqttCommandTemplate", + "MqttValueTemplate", + "PayloadSentinel", + "PublishPayloadType", + "ReceiveMessage", + "ReceivePayloadType", + "async_prepare_subscribe_topics", + "async_publish", + "async_subscribe", + "async_subscribe_topics", + "async_unsubscribe_topics", + "async_wait_for_mqtt_client", + "publish", + "subscribe", + "valid_publish_topic", + "valid_qos_schema", + "valid_subscribe_topic", + ], +) +async def test_mqtt_integration_level_imports(hass: HomeAssistant, attr: str) -> None: + """Test mqtt integration level public published imports are available.""" + assert hasattr(mqtt, attr)