Bump paho-mqtt from 2.0.0 to 2.1.0 (#2316)

* Bump paho-mqtt from 2.0.0 to 2.1.0

Bumps [paho-mqtt](https://github.com/eclipse/paho.mqtt.python) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/eclipse/paho.mqtt.python/releases)
- [Changelog](https://github.com/eclipse/paho.mqtt.python/blob/master/ChangeLog.txt)
- [Commits](https://github.com/eclipse/paho.mqtt.python/compare/v2.0.0...v2.1.0)

---
updated-dependencies:
- dependency-name: paho-mqtt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update paho-mqtt==2.1.0

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>

[skip ci]
This commit is contained in:
dependabot[bot] 2024-05-09 22:28:50 -07:00 committed by GitHub
parent dab46249f2
commit 5e90f3bb31
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 44 additions and 27 deletions

View file

@ -1,4 +1,4 @@
__version__ = "2.0.0" __version__ = "2.1.0"
class MQTTException(Exception): class MQTTException(Exception):

View file

@ -288,7 +288,7 @@ class WebsocketConnectionError(ConnectionError):
pass pass
def error_string(mqtt_errno: MQTTErrorCode) -> str: def error_string(mqtt_errno: MQTTErrorCode | int) -> str:
"""Return the error string associated with an mqtt error number.""" """Return the error string associated with an mqtt error number."""
if mqtt_errno == MQTT_ERR_SUCCESS: if mqtt_errno == MQTT_ERR_SUCCESS:
return "No error." return "No error."
@ -465,7 +465,7 @@ def _force_bytes(s: str | bytes) -> bytes:
return s return s
def _encode_payload(payload: str | bytes | bytearray | int | float | None) -> bytes: def _encode_payload(payload: str | bytes | bytearray | int | float | None) -> bytes|bytearray:
if isinstance(payload, str): if isinstance(payload, str):
return payload.encode("utf-8") return payload.encode("utf-8")
@ -648,7 +648,7 @@ class Client:
:param CallbackAPIVersion callback_api_version: define the API version for user-callback (on_connect, on_publish,...). :param CallbackAPIVersion callback_api_version: define the API version for user-callback (on_connect, on_publish,...).
This field is required and it's recommended to use the latest version (CallbackAPIVersion.API_VERSION2). This field is required and it's recommended to use the latest version (CallbackAPIVersion.API_VERSION2).
See each callback for description of API for each version. The file migrations.md contains details on See each callback for description of API for each version. The file docs/migrations.rst contains details on
how to migrate between version. how to migrate between version.
:param str client_id: the unique client id string used when connecting to the :param str client_id: the unique client id string used when connecting to the
@ -682,6 +682,10 @@ class Client:
:param transport: use "websockets" to use WebSockets as the transport :param transport: use "websockets" to use WebSockets as the transport
mechanism. Set to "tcp" to use raw TCP, which is the default. mechanism. Set to "tcp" to use raw TCP, which is the default.
Use "unix" to use Unix sockets as the transport mechanism; note that
this option is only available on platforms that support Unix sockets,
and the "host" argument is interpreted as the path to the Unix socket
file in this case.
:param bool manual_ack: normally, when a message is received, the library automatically :param bool manual_ack: normally, when a message is received, the library automatically
acknowledges after on_message callback returns. manual_ack=True allows the application to acknowledges after on_message callback returns. manual_ack=True allows the application to
@ -728,19 +732,21 @@ class Client:
def __init__( def __init__(
self, self,
callback_api_version: CallbackAPIVersion, callback_api_version: CallbackAPIVersion = CallbackAPIVersion.VERSION1,
client_id: str = "", client_id: str | None = "",
clean_session: bool | None = None, clean_session: bool | None = None,
userdata: Any = None, userdata: Any = None,
protocol: int = MQTTv311, protocol: MQTTProtocolVersion = MQTTv311,
transport: Literal["tcp", "websockets"] = "tcp", transport: Literal["tcp", "websockets", "unix"] = "tcp",
reconnect_on_failure: bool = True, reconnect_on_failure: bool = True,
manual_ack: bool = False, manual_ack: bool = False,
) -> None: ) -> None:
transport = transport.lower() # type: ignore transport = transport.lower() # type: ignore
if transport not in ("websockets", "tcp"): if transport == "unix" and not hasattr(socket, "AF_UNIX"):
raise ValueError('"unix" transport not supported')
elif transport not in ("websockets", "tcp", "unix"):
raise ValueError( raise ValueError(
f'transport must be "websockets" or "tcp", not {transport}') f'transport must be "websockets", "tcp" or "unix", not {transport}')
self._manual_ack = manual_ack self._manual_ack = manual_ack
self._transport = transport self._transport = transport
@ -764,7 +770,7 @@ class Client:
# Help user to migrate, it probably provided a client id # Help user to migrate, it probably provided a client id
# as first arguments # as first arguments
raise ValueError( raise ValueError(
"Unsupported callback API version: version 2.0 added a callback_api_version, see migrations.md for details" "Unsupported callback API version: version 2.0 added a callback_api_version, see docs/migrations.rst for details"
) )
if self._callback_api_version not in CallbackAPIVersion: if self._callback_api_version not in CallbackAPIVersion:
raise ValueError("Unsupported callback API version") raise ValueError("Unsupported callback API version")
@ -931,7 +937,7 @@ class Client:
self._keepalive = value self._keepalive = value
@property @property
def transport(self) -> Literal["tcp", "websockets"]: def transport(self) -> Literal["tcp", "websockets", "unix"]:
""" """
Transport method used for the connection ("tcp" or "websockets"). Transport method used for the connection ("tcp" or "websockets").
@ -953,7 +959,7 @@ class Client:
This property is read-only. This property is read-only.
""" """
return self.protocol return self._protocol
@property @property
def connect_timeout(self) -> float: def connect_timeout(self) -> float:
@ -2032,7 +2038,7 @@ class Client:
return self._send_subscribe(False, topic_qos_list, properties) return self._send_subscribe(False, topic_qos_list, properties)
def unsubscribe( def unsubscribe(
self, topic: str, properties: Properties | None = None self, topic: str | list[str], properties: Properties | None = None
) -> tuple[MQTTErrorCode, int | None]: ) -> tuple[MQTTErrorCode, int | None]:
"""Unsubscribe the client from one or more topics. """Unsubscribe the client from one or more topics.
@ -2356,7 +2362,6 @@ class Client:
self._thread_terminate = True self._thread_terminate = True
if threading.current_thread() != self._thread: if threading.current_thread() != self._thread:
self._thread.join() self._thread.join()
self._thread = None
return MQTTErrorCode.MQTT_ERR_SUCCESS return MQTTErrorCode.MQTT_ERR_SUCCESS
@ -2445,7 +2450,7 @@ class Client:
connect_callback(client, userdata, flags, rc) connect_callback(client, userdata, flags, rc)
* For MQTT it's v5.0:: * For MQTT v5.0 it's::
connect_callback(client, userdata, flags, reason_code, properties) connect_callback(client, userdata, flags, reason_code, properties)
@ -2732,7 +2737,7 @@ class Client:
disconnect_callback(client, userdata, rc) disconnect_callback(client, userdata, rc)
* For MQTT it's v5.0:: * For MQTT v5.0 it's::
disconnect_callback(client, userdata, reason_code, properties) disconnect_callback(client, userdata, reason_code, properties)
@ -3363,7 +3368,7 @@ class Client:
self, self,
mid: int, mid: int,
topic: bytes, topic: bytes,
payload: bytes = b"", payload: bytes|bytearray = b"",
qos: int = 0, qos: int = 0,
retain: bool = False, retain: bool = False,
dup: bool = False, dup: bool = False,
@ -3373,7 +3378,7 @@ class Client:
# we assume that topic and payload are already properly encoded # we assume that topic and payload are already properly encoded
if not isinstance(topic, bytes): if not isinstance(topic, bytes):
raise TypeError('topic must be bytes, not str') raise TypeError('topic must be bytes, not str')
if payload and not isinstance(payload, bytes): if payload and not isinstance(payload, (bytes, bytearray)):
raise TypeError('payload must be bytes if set') raise TypeError('payload must be bytes if set')
if self._sock is None: if self._sock is None:
@ -3462,7 +3467,7 @@ class Client:
return self._packet_queue(command, packet, 0, 0) return self._packet_queue(command, packet, 0, 0)
def _send_connect(self, keepalive: int) -> MQTTErrorCode: def _send_connect(self, keepalive: int) -> MQTTErrorCode:
proto_ver = self._protocol proto_ver = int(self._protocol)
# hard-coded UTF-8 encoded string # hard-coded UTF-8 encoded string
protocol = b"MQTT" if proto_ver >= MQTTv311 else b"MQIsdp" protocol = b"MQTT" if proto_ver >= MQTTv311 else b"MQIsdp"
@ -4514,7 +4519,10 @@ class Client:
MQTT_LOG_ERR, 'Caught exception in on_connect_fail: %s', err) MQTT_LOG_ERR, 'Caught exception in on_connect_fail: %s', err)
def _thread_main(self) -> None: def _thread_main(self) -> None:
try:
self.loop_forever(retry_first_connection=True) self.loop_forever(retry_first_connection=True)
finally:
self._thread = None
def _reconnect_wait(self) -> None: def _reconnect_wait(self) -> None:
# See reconnect_delay_set for details # See reconnect_delay_set for details
@ -4595,7 +4603,11 @@ class Client:
return None return None
def _create_socket(self) -> SocketLike: def _create_socket(self) -> SocketLike:
if self._transport == "unix":
sock = self._create_unix_socket_connection()
else:
sock = self._create_socket_connection() sock = self._create_socket_connection()
if self._ssl: if self._ssl:
sock = self._ssl_wrap_socket(sock) sock = self._ssl_wrap_socket(sock)
@ -4612,6 +4624,11 @@ class Client:
return sock return sock
def _create_unix_socket_connection(self) -> _socket.socket:
unix_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
unix_socket.connect(self._host)
return unix_socket
def _create_socket_connection(self) -> _socket.socket: def _create_socket_connection(self) -> _socket.socket:
proxy = self._get_proxy() proxy = self._get_proxy()
addr = (self._host, self._port) addr = (self._host, self._port)

View file

@ -24,7 +24,7 @@ import collections
from collections.abc import Iterable from collections.abc import Iterable
from typing import TYPE_CHECKING, Any, List, Tuple, Union from typing import TYPE_CHECKING, Any, List, Tuple, Union
from paho.mqtt.enums import CallbackAPIVersion from paho.mqtt.enums import CallbackAPIVersion, MQTTProtocolVersion
from paho.mqtt.properties import Properties from paho.mqtt.properties import Properties
from paho.mqtt.reasoncodes import ReasonCode from paho.mqtt.reasoncodes import ReasonCode
@ -112,7 +112,7 @@ def multiple(
will: MessageDict | None = None, will: MessageDict | None = None,
auth: AuthParameter | None = None, auth: AuthParameter | None = None,
tls: TLSParameter | None = None, tls: TLSParameter | None = None,
protocol: int = paho.MQTTv311, protocol: MQTTProtocolVersion = paho.MQTTv311,
transport: Literal["tcp", "websockets"] = "tcp", transport: Literal["tcp", "websockets"] = "tcp",
proxy_args: Any | None = None, proxy_args: Any | None = None,
) -> None: ) -> None:
@ -240,7 +240,7 @@ def single(
will: MessageDict | None = None, will: MessageDict | None = None,
auth: AuthParameter | None = None, auth: AuthParameter | None = None,
tls: TLSParameter | None = None, tls: TLSParameter | None = None,
protocol: int = paho.MQTTv311, protocol: MQTTProtocolVersion = paho.MQTTv311,
transport: Literal["tcp", "websockets"] = "tcp", transport: Literal["tcp", "websockets"] = "tcp",
proxy_args: Any | None = None, proxy_args: Any | None = None,
) -> None: ) -> None:

View file

@ -30,7 +30,7 @@ class ReasonCode:
""" """
def __init__(self, packetType, aName="Success", identifier=-1): def __init__(self, packetType: int, aName: str ="Success", identifier: int =-1):
""" """
packetType: the type of the packet, such as PacketTypes.CONNECT that packetType: the type of the packet, such as PacketTypes.CONNECT that
this reason code will be used with. Some reason codes have different this reason code will be used with. Some reason codes have different

View file

@ -24,7 +24,7 @@ Mako==1.3.3
MarkupSafe==2.1.5 MarkupSafe==2.1.5
musicbrainzngs==0.7.1 musicbrainzngs==0.7.1
packaging==24.0 packaging==24.0
paho-mqtt==2.0.0 paho-mqtt==2.1.0
platformdirs==4.2.1 platformdirs==4.2.1
plexapi==4.15.12 plexapi==4.15.12
portend==3.2.0 portend==3.2.0