python-stem: backport patch to fix Python 3.10
authorJosef Schlehofer <[email protected]>
Thu, 30 Dec 2021 21:33:40 +0000 (22:33 +0100)
committerJosef Schlehofer <[email protected]>
Mon, 3 Jan 2022 14:52:33 +0000 (15:52 +0100)
Signed-off-by: Josef Schlehofer <[email protected]>
lang/python/python-stem/Makefile
lang/python/python-stem/patches/001-fixes-for-Python310.patch [new file with mode: 0644]

index 12ca92b4a1cc601ac06e0220ac46cb6911efeda8..5f8a877eebe2123673e734236963f58821a9db8f 100644 (file)
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-stem
 PKG_VERSION:=1.8.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PYPI_NAME:=stem
 PKG_HASH:=a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2
diff --git a/lang/python/python-stem/patches/001-fixes-for-Python310.patch b/lang/python/python-stem/patches/001-fixes-for-Python310.patch
new file mode 100644 (file)
index 0000000..d7a5f6c
--- /dev/null
@@ -0,0 +1,36 @@
+From 36bcb170ba9097885902513640075eac2e6ce384 Mon Sep 17 00:00:00 2001
+From: Calin Culianu <[email protected]>
+Date: Mon, 8 Nov 2021 18:15:59 -0600
+Subject: [PATCH] Fixup for Python 3.10
+
+Closes issue #109.  Long story short: a few names from collection are
+now moved to collection.abc exclusively starting in Python 3.10. The
+only name this app uses from there that was moved is
+`collections.Iterable`.  Python versions starting from 3.3 support both
+`collections.Iterable` and `collections.abc.Iterable` as the way to refer to
+this class, which Python 3.10 being the first one to drop
+`collections.Iterable`.  So.. we just work around this API quirk
+and always refer ot it as `collections.abc.Iterable`.
+---
+ stem/control.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/stem/control.py
++++ b/stem/control.py
+@@ -249,6 +249,7 @@ If you're fine with allowing your script
+ import calendar
+ import collections
++import collections.abc
+ import functools
+ import inspect
+ import io
+@@ -2532,7 +2533,7 @@ class Controller(BaseController):
+     for param, value in params:
+       if isinstance(value, str):
+         query_comp.append('%s="%s"' % (param, value.strip()))
+-      elif isinstance(value, collections.Iterable):
++      elif isinstance(value, collections.abc.Iterable):
+         query_comp.extend(['%s="%s"' % (param, val.strip()) for val in value])
+       elif not value:
+         query_comp.append(param)