diff --git a/src/paho/mqtt/client.py b/src/paho/mqtt/client.py index 4ccc8696..a77e3e96 100644 --- a/src/paho/mqtt/client.py +++ b/src/paho/mqtt/client.py @@ -39,11 +39,23 @@ from paho.mqtt.packettypes import PacketTypes -from .enums import CallbackAPIVersion, ConnackCode, LogLevel, MessageState, MessageType, MQTTErrorCode, MQTTProtocolVersion, PahoClientMode, _ConnectionState +# Re-export public enums and helper types explicitly so static type checkers +# treat the documented ``paho.mqtt.client`` module surface as exported API. +from .enums import ( + CallbackAPIVersion as CallbackAPIVersion, + ConnackCode as ConnackCode, + LogLevel as LogLevel, + MessageState as MessageState, + MessageType as MessageType, + MQTTErrorCode as MQTTErrorCode, + MQTTProtocolVersion as MQTTProtocolVersion, + PahoClientMode as PahoClientMode, + _ConnectionState, +) from .matcher import MQTTMatcher -from .properties import Properties -from .reasoncodes import ReasonCode, ReasonCodes -from .subscribeoptions import SubscribeOptions +from .properties import Properties as Properties +from .reasoncodes import ReasonCode as ReasonCode, ReasonCodes as ReasonCodes +from .subscribeoptions import SubscribeOptions as SubscribeOptions try: from typing import Literal diff --git a/tests/test_client.py b/tests/test_client.py index 09e46066..2bccfe00 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -4,10 +4,20 @@ import paho.mqtt.client as client import pytest -from paho.mqtt.enums import CallbackAPIVersion, MQTTErrorCode, MQTTProtocolVersion +from paho.mqtt.enums import ( + CallbackAPIVersion, + ConnackCode, + LogLevel, + MessageState, + MessageType, + MQTTErrorCode, + MQTTProtocolVersion, + PahoClientMode, +) from paho.mqtt.packettypes import PacketTypes from paho.mqtt.properties import Properties -from paho.mqtt.reasoncodes import ReasonCode +from paho.mqtt.reasoncodes import ReasonCode, ReasonCodes +from paho.mqtt.subscribeoptions import SubscribeOptions import tests.paho_test as paho_test @@ -15,6 +25,26 @@ from tests.testsupport.broker import FakeBroker, fake_broker # noqa: F401 +def test_documented_public_reexports() -> None: + expected_public_api = { + "CallbackAPIVersion": CallbackAPIVersion, + "ConnackCode": ConnackCode, + "LogLevel": LogLevel, + "MessageState": MessageState, + "MessageType": MessageType, + "MQTTErrorCode": MQTTErrorCode, + "MQTTProtocolVersion": MQTTProtocolVersion, + "PahoClientMode": PahoClientMode, + "Properties": Properties, + "ReasonCode": ReasonCode, + "ReasonCodes": ReasonCodes, + "SubscribeOptions": SubscribeOptions, + } + + for name, expected in expected_public_api.items(): + assert getattr(client, name) is expected + + @pytest.mark.parametrize("proto_ver,callback_version", [ (MQTTProtocolVersion.MQTTv31, CallbackAPIVersion.VERSION1), (MQTTProtocolVersion.MQTTv31, CallbackAPIVersion.VERSION2),