From f58c62bdf763a126f07e9961b105a9902b0de138 Mon Sep 17 00:00:00 2001 From: Michael J Feher Date: Wed, 7 Jul 2021 11:39:52 -0500 Subject: [PATCH 1/3] Allow publishing of bytes messages Useful for educational purposes such as serialization/encoding. (protobuf with minipb) --- adafruit_minimqtt/adafruit_minimqtt.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index 367478fd..01eddb99 100755 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -556,7 +556,7 @@ def ping(self): def publish(self, topic, msg, retain=False, qos=0): """Publishes a message to a topic provided. :param str topic: Unique topic identifier. - :param str,int,float msg: Data to send to the broker. + :param str,int,float,bytes msg: Data to send to the broker. :param bool retain: Whether the message is saved by the broker. :param int qos: Quality of Service level for the message, defaults to zero. @@ -572,6 +572,8 @@ def publish(self, topic, msg, retain=False, qos=0): msg = str(msg).encode("ascii") elif isinstance(msg, str): msg = str(msg).encode("utf-8") + elif isinstance(msg, bytes): + msg = msg else: raise MMQTTException("Invalid message data type.") if len(msg) > MQTT_MSG_MAX_SZ: From 9bad8700373152aa31127612680da4514e95fd48 Mon Sep 17 00:00:00 2001 From: Michael J Feher Date: Wed, 7 Jul 2021 15:51:35 -0500 Subject: [PATCH 2/3] Lint fix for self assignment --- adafruit_minimqtt/adafruit_minimqtt.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index 01eddb99..04ded0ff 100755 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -572,9 +572,7 @@ def publish(self, topic, msg, retain=False, qos=0): msg = str(msg).encode("ascii") elif isinstance(msg, str): msg = str(msg).encode("utf-8") - elif isinstance(msg, bytes): - msg = msg - else: + elif not isinstance(msg, bytes): raise MMQTTException("Invalid message data type.") if len(msg) > MQTT_MSG_MAX_SZ: raise MMQTTException("Message size larger than %d bytes." % MQTT_MSG_MAX_SZ) From 58a4421e15966e33630a0a38aadc6f8d50fad073 Mon Sep 17 00:00:00 2001 From: Michael J Feher Date: Wed, 7 Jul 2021 16:43:33 -0500 Subject: [PATCH 3/3] Use pass for bytes instance check --- adafruit_minimqtt/adafruit_minimqtt.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_minimqtt/adafruit_minimqtt.py b/adafruit_minimqtt/adafruit_minimqtt.py index 04ded0ff..1c4a0d26 100755 --- a/adafruit_minimqtt/adafruit_minimqtt.py +++ b/adafruit_minimqtt/adafruit_minimqtt.py @@ -572,7 +572,9 @@ def publish(self, topic, msg, retain=False, qos=0): msg = str(msg).encode("ascii") elif isinstance(msg, str): msg = str(msg).encode("utf-8") - elif not isinstance(msg, bytes): + elif isinstance(msg, bytes): + pass + else: raise MMQTTException("Invalid message data type.") if len(msg) > MQTT_MSG_MAX_SZ: raise MMQTTException("Message size larger than %d bytes." % MQTT_MSG_MAX_SZ)