Paho-mqtt

Latest version: v2.0.0

Safety actively analyzes 621521 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 3

2.0.0

===================

This release include breaking change. See `migrations <https://eclipse.dev/paho/files/paho.mqtt.python/html/migrations.html>`_ for more details on how to upgrade.

- **BREAKING** Added callback_api_version. This break *ALL* users of paho-mqtt Client class.
See migrations.md for details on how to upgrade.
tl; dr; add CallbackAPIVersion.VERSION1 to first argument of Client()
- **BREAKING** Drop support for Python 2.7, Python 3.5 and Python 3.6
Minimum tested version is Python 3.7
Python version up to Python 3.12 are tested.
- **BREAKING** connect_srv changed it signature to take an additional bind_port parameter.
This is a breaking change, but in previous version connect_srv was broken anyway.
Closes 493.
- **BREAKING** Remove some deprecated argument and method:

* ``max_packets`` argument in loop(), loop_write() and loop_forever() is removed
* ``force`` argument in loop_stop() is removed
* method ``message_retry_set()`` is removed
- **BREAKING** Remove the base62, WebsocketWrapper and ConnectionState, as user shouldn't directly use them.
- Possible breaking change: Add properties to access most Client attribute. Closes 764.
Since this add new properties like `logger`, if a sub-class defined `logger`, the two `logger`
will conflict.
- Add version 2 of user-callback which allow to access MQTTv5 reason code & properties that were
missing from on_publish callback. Also it's more consistent in parameter order or between
MQTTv3 and MQTTv5.
- Add types to Client class, which caused few change which should be compatible.
Known risk of breaking changes:

- Use enum for returned error code (like MQTT_ERR_SUCCESS). It use an IntEnum
which should be a drop-in replacement. Excepted if someone is doing "rc is 0" instead of "rc == 0".
- reason in on_connect callback when using MQTTv5 is now always a ReasonCode object. It used to possibly be
an integer with the value 132.
- MQTTMessage field "dup" and "retain" used to be integer with value 0 and 1. They are now boolean.
- Add support for ALPN protocols on TLS connection. Closes 790 & 648.
- Add on_pre_connect() callback, which is called immediately before a
connection attempt is made.
- Fix subscribe.simple with MQTTv5. Closes 707.
- Use better name for thread started by loop_start. Closes 617.
- Fix possible bug during disconnection where self._sock is unexpectedly None. Closes 686 & 505.
- Fix loading too weak TLS CA file but setting allowed ciphers before loading CA. Closes 676.
- Allow to manually ack QoS > 0 messages. Closes 753 & 348.
- Improve tests & linters. Modernize build (drop setup.py, use pyproject.toml)
- Fix is_connected property to correctly return False when connection is lost
and loop_start/loop_forever isn't used. Closes 525.
- Fix wait_for_publish that could hang with QoS == 0 message on reconnection
or publish during connection. Closes 549.
- Correctly mark connection as broken on SSL error and don't crash loop_forever.
Closes 750.
- Fix handling of MQTT v5.0 PUBREL messages with remaining length not equal to
2. Closes 696.
- Raise error on ``subscribe()`` when `topic` is an empty list. Closes 690.
- Raise error on `publish.multiple()` when ``msgs`` is an empty list. Closes 684.
- Don't add port to Host: header for websockets connections when the port if the default port. Closes 666.

1.6.1

===================

- Fix Python 2.7 compatibility.

1.6.0

===================

- Changed default TLS version to 1.2 instead of 1.0.
- MQTT connection attempts now use a timeout of 5 seconds rather than the
configured keepalive interval
- Fix incoming MQTT v5 messages with overall property length > 127 bytes being
incorrectly decoded. Closes 541.
- MQTTMessageInfo.wait_for_publish() and MQTTMessageInfo.is_published() will
now raise exceptions if called when the publish call produced an error.
Closes 550.
- Remove periodic retry checks for outgoing messages with QoS>0. This means
that outgoing messages will only be retried on the client reconnecting to
the server. They will *not* be retried when the client is still connected.
- The `rc` parameter in the `on_disconnect` callback now has meaningful values
in the case of an error. Closes 441.
- Callbacks can now be applied to client instances using decorators.
- PUBACK messages are now sent to the broker only after the on_message
callback has returned.
- Raise exceptions when attempting to set MQTT v5 properties to forbidden
values. Closes 586.
- Callbacks can now be updated from within a callback.
- Remove _out_packet_mutex and _current_out_packet_mutex and convert the
_out_packet queue use to thread safe.
- Add basic MQTT v5 support to the subscribe and publish helper functions.
Closes 575.
- Fix on_disconnect() sometimes calling the MQTT v3.x callback when it should
call the MQTT v5 callback. Closes 570.
- Big performance improvement when receiving large payloads, particularly for
SSL. Closes 571,
- Fix connecting with MQTT v5 to a broker that doesn't support MQTT v5.
Closes 566.
- Removed ancient Mosquitto compatibility class.
- Fix exception on calling Client(client_id="", clean_session=False).
Closes 520.
- Experimental support for Websockets continuation frames. Closes 500.
Closes 89.
- `Properties.json()` now converts Correlation Data bytes() objects to hex.
Closes 555.
- Only use the internal sockpair wakeup when running with loop_start() or
loop(). This removes problems when running with an external event loop.
- Drain all of sockpairR bytes to avoid unnecessary wakeups and possible
timeouts. Closes 563.
- Add timeout to MQTTMessageInfo:wait_for_publish().

1.5.1

===================

- Exceptions that occur in callbacks are no longer suppressed by default. They
can optionally be suppressed by setting ``client.suppress_exceptions = True``.
Closes 365.
- Fix PUBREL remaining length of > 2 not being accepted for MQTT v5 message
flows. Closes 481.
- Fix MQTT v5 properties not being sent on retried or queued messages.
- Fix errors related to detection of MQTT v5 first connections.
- Fix for changes related to Python 3.9.

1.5.0

===================

* Add support for clean_session on subscribe helper. Closes 219
* Add support for non-standard bridge connection. Closes 282
* Fix hang with QoS 2 message and clean_session = False. The fix replace hang
with message DROP. See README for known limitation. Closes 284 and 286
* Fix connection establishement timeout. Closes 291 and 288
* Add support for connecting through a proxy. Closes 315
* Add MQTT v5 support. Closes 334
* Improve error message when sending queue is full. Closes 378
* Improve error handling during initialization on edge case. Closes 387 and 388
* Allow to specify local client port used (similar to bind_address). Closes 390
* Add method is_connected to know if MQTT connection is established. Closes 414
* Set connection timeout to keepalive. Closes 425

1.4.0

===================

- Fix hang when client restarted and broker resumed a session with Qos2
message. Closes 284.
Note: this change replace the hang by a message lost ! See README for
current limitation of paho-mqtt.
- Fix reconnection loop when a clean_session=True client reconnect while Qos2
message are being sent.
Note: this change replace the infinite reconnection loop by a possible
duplicate QoS2 message. Only clean_session=True client are affected, see
README for current limitation of paho-mqtt.
- Catch and log any exception raised by user callback. Closes 294.
- Improve support for external event loop (like asyncio). Closes 235.
- Fix order of message with publish.multiple helper. Closes 87.
- Fix hang on wait_for_published() on bad network. Closes 309.
- Fix an issue with Websocket that seems to happen only on Windows.
Closes 268.
- Fix issue with Websocket payload size between 127 and 65536. Closes 267.
- Closes socket in client destructor to avoid FD leak. Closes 170.
- Fix uncaught timeout exception during connection. Closes 288.
- Remove dup flag on PUBREL packet. Closes 298.
- Use secure entropy source for Websocket mask_key (urandom). Closes 305.
- Fix mid generation that was not thread-safe.
- Replace print() statements with proper logging. Closes 214.
- Allow insecure TLS on publish and subscribe helpers. Closes 299.
- Allow to remove authentication (reset username to None). Closes 259.
- Add support for the non-standard bridge mode. Closes 282.

Page 1 of 3

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.