dev-python/tqdm: Port to py39
authorMichał Górny <mgorny@gentoo.org>
Tue, 26 May 2020 19:52:01 +0000 (21:52 +0200)
committerMichał Górny <mgorny@gentoo.org>
Tue, 26 May 2020 20:02:58 +0000 (22:02 +0200)
Signed-off-by: Michał Górny <mgorny@gentoo.org>
dev-python/tqdm/files/tqdm-4.46.0-py39.patch [new file with mode: 0644]
dev-python/tqdm/tqdm-4.46.0.ebuild

diff --git a/dev-python/tqdm/files/tqdm-4.46.0-py39.patch b/dev-python/tqdm/files/tqdm-4.46.0-py39.patch
new file mode 100644 (file)
index 0000000..0734aa8
--- /dev/null
@@ -0,0 +1,42 @@
+From aeb52044ca29f37f1f98ee5a4f9ad774d557771e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Tue, 26 May 2020 21:43:05 +0200
+Subject: [PATCH] Fix error due to missing sys.setcheckinterval in py3.9
+
+Python 3.9 finally removed sys.setcheckinterval().  While the package
+apparently tried to account for that, the logic is flawed and the second
+getattr() raises an AttributeError even if its result is never used.
+This caused tests to fail:
+
+      File "/tmp/tqdm/tqdm/tests/tests_tqdm.py", line 126, in pretest
+        getattr(sys, 'setswitchinterval', getattr(sys, 'setcheckinterval'))(100)
+    AttributeError: module 'sys' has no attribute 'setcheckinterval'
+
+Refactor the code into a try/except construct that does not execute
+the setcheckinterval() branch unless setswitchinterval() is actually
+missing.  While at it, scale the arguments a bit -- the current version
+used either 100 instructions or 100 seconds that were rather of very
+different magnitudes.
+---
+ tqdm/tests/tests_tqdm.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/tqdm/tests/tests_tqdm.py b/tqdm/tests/tests_tqdm.py
+index a2dac52..5f322e6 100644
+--- a/tqdm/tests/tests_tqdm.py
++++ b/tqdm/tests/tests_tqdm.py
+@@ -123,7 +123,10 @@ def cpu_timify(t, timer=None):
+ def pretest():
+     # setcheckinterval is deprecated
+-    getattr(sys, 'setswitchinterval', getattr(sys, 'setcheckinterval'))(100)
++    try:
++        sys.setswitchinterval(1)
++    except AttributeError:
++        sys.setcheckinterval(100)
+     if getattr(tqdm, "_instances", False):
+         n = len(tqdm._instances)
+-- 
+2.26.2
+
index 4bafe9ec3365d254b4ddbfcb9b081d8ec82b5d74..2273ba0de862fae30ea61d88544464576911d028 100644 (file)
@@ -4,7 +4,7 @@
 EAPI=7
 
 DISTUTILS_USE_SETUPTOOLS=rdepend
-PYTHON_COMPAT=( pypy3 python{2_7,3_{6,7,8}} )
+PYTHON_COMPAT=( pypy3 python{2_7,3_{6,7,8,9}} )
 
 inherit distutils-r1
 
@@ -25,6 +25,10 @@ IUSE="examples"
 
 distutils_enable_tests nose
 
+PATCHES=(
+       "${FILESDIR}"/${P}-py39.patch
+)
+
 python_prepare_all() {
        sed -r \
                -e "s:'nose'(,[[:space:]]*|)::" \