diff mbox series

[1/1] package/python-paho-mqtt: fix package for python 3.10

Message ID 20220829173754.214890-1-marcus.hoffmann@othermo.de
State Accepted
Headers show
Series [1/1] package/python-paho-mqtt: fix package for python 3.10 | expand

Commit Message

Marcus Hoffmann Aug. 29, 2022, 5:37 p.m. UTC
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 https://github.com/eclipse/paho.mqtt.python/pull/497/

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

Signed-off-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>
---
 .../0001-fix-publish-for-python-3-10.patch    | 37 +++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch

Comments

Yann E. MORIN Aug. 31, 2022, 7:43 p.m. UTC | #1
Marcus, All,

On 2022-08-29 19:37 +0200, Marcus Hoffmann spake thusly:
> 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 https://github.com/eclipse/paho.mqtt.python/pull/497/
> 
> This was deprecated in python 3.9 and stopped working in python 3.10
> 
> Signed-off-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  .../0001-fix-publish-for-python-3-10.patch    | 37 +++++++++++++++++++
>  1 file changed, 37 insertions(+)
>  create mode 100644 package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch
> 
> diff --git a/package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch b/package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch
> new file mode 100644
> index 0000000000..aad6b5d723
> --- /dev/null
> +++ b/package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch
> @@ -0,0 +1,37 @@
> +From e1c45570f61f9d6b28f8604c8a8cd6dd94f959ed Mon Sep 17 00:00:00 2001
> +From: Brishen Hawkins <brishen.hawkins@gmail.com>
> +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 <brishen.hawkins@gmail.com>
> +
> +Backported from: e1c45570f61f9d6b28f8604c8a8cd6dd94f959ed
> +Signed-off-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>
> +---
> + 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),
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
Peter Korsgaard Sept. 18, 2022, 7:45 a.m. UTC | #2
>>>>> "Marcus" == Marcus Hoffmann <marcus.hoffmann@othermo.de> writes:

 > 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 https://github.com/eclipse/paho.mqtt.python/pull/497/

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

 > Signed-off-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>

Committed to 2022.05.x and 2022.02.x, thanks.
diff mbox series

Patch

diff --git a/package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch b/package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch
new file mode 100644
index 0000000000..aad6b5d723
--- /dev/null
+++ b/package/python-paho-mqtt/0001-fix-publish-for-python-3-10.patch
@@ -0,0 +1,37 @@ 
+From e1c45570f61f9d6b28f8604c8a8cd6dd94f959ed Mon Sep 17 00:00:00 2001
+From: Brishen Hawkins <brishen.hawkins@gmail.com>
+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 <brishen.hawkins@gmail.com>
+
+Backported from: e1c45570f61f9d6b28f8604c8a8cd6dd94f959ed
+Signed-off-by: Marcus Hoffmann <marcus.hoffmann@othermo.de>
+---
+ 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),