From 14e42da7759f4b774dfd521de69728cfd805678f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20G=C3=B3rny?= Date: Tue, 26 May 2020 17:29:27 +0200 Subject: [PATCH] dev-python/passlib: Port to py39 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Michał Górny --- .../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(-) create mode 100644 dev-python/passlib/files/passlib-1.7.2-py39.patch 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 000000000000..c5dbc208a88b --- /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 aaa2485c0159..da3cd45d5bee 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 -- 2.26.2