Skip to content

Commit

Permalink
package/python-paho-mqtt: fix package for python 3.10
Browse files Browse the repository at this point in the history
Fixes the following error on calling mqtt.publish():

  File "/usr/lib/python3.10/site-packages/paho/mqtt/publish.py", line 222, in single
    multiple([msg], hostname, port, client_id, keepalive, will, auth, tls,
  File "/usr/lib/python3.10/site-packages/paho/mqtt/publish.py", line 126, in multiple
    if not isinstance(msgs, collections.Iterable):
AttributeError: module 'collections' has no attribute 'Iterable'

Backported from eclipse-paho/paho.mqtt.python#497

This was deprecated in python 3.9 and stopped working in python 3.10

Signed-off-by: Marcus Hoffmann <[email protected]>
Signed-off-by: Yann E. MORIN <[email protected]>
  • Loading branch information
BubuOT authored and ccrisan committed Nov 15, 2023
1 parent 0ea798e commit 6ff05d1
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
From e1c45570f61f9d6b28f8604c8a8cd6dd94f959ed Mon Sep 17 00:00:00 2001
From: Brishen Hawkins <[email protected]>
Date: Tue, 9 Jun 2020 00:18:39 -0600
Subject: [PATCH] Fix for Python 3.9 moving Iterable to collections.abc

Signed-off-by: Brishen Hawkins <[email protected]>

Backported from: e1c45570f61f9d6b28f8604c8a8cd6dd94f959ed
Signed-off-by: Marcus Hoffmann <[email protected]>
---
src/paho/mqtt/publish.py | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/paho/mqtt/publish.py b/src/paho/mqtt/publish.py
index f9f1986e..dcb34ff1 100644
--- a/src/paho/mqtt/publish.py
+++ b/src/paho/mqtt/publish.py
@@ -21,6 +21,10 @@
from __future__ import absolute_import

import collections
+try:
+ from collections.abc import Iterable
+except ImportError:
+ from collections import Iterable

from . import client as paho
from .. import mqtt
@@ -124,7 +128,7 @@ def multiple(msgs, hostname="localhost", port=1883, client_id="", keepalive=60,
proxy_args: a dictionary that will be given to the client.
"""

- if not isinstance(msgs, collections.Iterable):
+ if not isinstance(msgs, Iterable):
raise TypeError('msgs must be an iterable')

client = paho.Client(client_id=client_id, userdata=collections.deque(msgs),

0 comments on commit 6ff05d1

Please sign in to comment.