dev-python/passlib: Port to py39
authorMichał Górny <mgorny@gentoo.org>
Tue, 26 May 2020 15:29:27 +0000 (17:29 +0200)
committerMichał Górny <mgorny@gentoo.org>
Tue, 26 May 2020 16:36:03 +0000 (18:36 +0200)
Signed-off-by: Michał Górny <mgorny@gentoo.org>
dev-python/passlib/files/passlib-1.7.2-py39.patch [new file with mode: 0644]
dev-python/passlib/passlib-1.7.2.ebuild

diff --git a/dev-python/passlib/files/passlib-1.7.2-py39.patch b/dev-python/passlib/files/passlib-1.7.2-py39.patch
new file mode 100644 (file)
index 0000000..c5dbc20
--- /dev/null
@@ -0,0 +1,19 @@
+diff --git a/passlib/utils/__init__.py b/passlib/utils/__init__.py
+index 69b55e5..d18ec50 100644
+--- a/passlib/utils/__init__.py
++++ b/passlib/utils/__init__.py
+@@ -807,7 +807,13 @@ else:
+             if isinstance(hash, bytes):
+                 hash = hash.decode("ascii")
+-            result = _crypt(secret, hash)
++            try:
++                result = _crypt(secret, hash)
++            except OSError:
++                # new in py39 -- per https://bugs.python.org/issue39289,
++                # crypt() now throws OSError for various things, mainly unknown hash formats
++                # translating that to None for now (may revise safe_crypt behavior in future)
++                return None
+             if PYPY and isinstance(result, bytes):
+                 result = result.decode("utf-8")
+             if not result or result[0:1] in _invalid_prefixes:
index aaa2485c0159776e00e4feb7377710ebdd2fc68e..da3cd45d5beea2b7ef287dc663a49ff2c4e43099 100644 (file)
@@ -2,7 +2,7 @@
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
-PYTHON_COMPAT=( python{2_7,3_{6,7,8}} pypy3 )
+PYTHON_COMPAT=( python{2_7,3_{6,7,8,9}} pypy3 )
 
 inherit distutils-r1
 
@@ -18,11 +18,16 @@ IUSE="+bcrypt doc +scrypt +totp"
 RDEPEND="bcrypt? ( dev-python/bcrypt[${PYTHON_USEDEP}] )
        totp? ( dev-python/cryptography[${PYTHON_USEDEP}] )
        scrypt? ( dev-python/scrypt[${PYTHON_USEDEP}] )"
-DEPEND="${RDEPEND}
-       dev-python/setuptools[${PYTHON_USEDEP}]"
+BDEPEND="
+       test? (
+               dev-python/bcrypt[${PYTHON_USEDEP}]
+               dev-python/cryptography[${PYTHON_USEDEP}]
+               dev-python/scrypt[${PYTHON_USEDEP}]
+       )"
 
 PATCHES=(
        "${FILESDIR}/passlib-1.7.2-pypy3.patch"
+       "${FILESDIR}/passlib-1.7.2-py39.patch"
 )
 
 distutils_enable_tests nose