commit:     14e42da7759f4b774dfd521de69728cfd805678f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Tue May 26 15:29:27 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue May 26 16:36:03 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=14e42da7

dev-python/passlib: Port to py39

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/passlib/files/passlib-1.7.2-py39.patch | 19 +++++++++++++++++++
 dev-python/passlib/passlib-1.7.2.ebuild           | 11 ++++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

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
index 00000000000..c5dbc208a88
--- /dev/null
+++ b/dev-python/passlib/files/passlib-1.7.2-py39.patch
@@ -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:

diff --git a/dev-python/passlib/passlib-1.7.2.ebuild 
b/dev-python/passlib/passlib-1.7.2.ebuild
index aaa2485c015..da3cd45d5be 100644
--- a/dev-python/passlib/passlib-1.7.2.ebuild
+++ b/dev-python/passlib/passlib-1.7.2.ebuild
@@ -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

Reply via email to