Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/pyjwt/, dev-python/pyjwt/files/
Date: Tue, 11 Feb 2020 07:39:44
Message-Id: 1581404666.97c6fd5055ba5c07a0cd633cf7fe84771b8736ba.mgorny@gentoo
1 commit: 97c6fd5055ba5c07a0cd633cf7fe84771b8736ba
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Tue Feb 11 07:04:26 2020 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Tue Feb 11 07:04:26 2020 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97c6fd50
7
8 dev-python/pyjwt: Fix tests, add py3.8 & pypy3
9
10 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
11
12 dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch | 27 +++++++++++
13 dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild | 56 ++++++++++++++++++++++
14 2 files changed, 83 insertions(+)
15
16 diff --git a/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch b/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch
17 new file mode 100644
18 index 00000000000..ebd9236c799
19 --- /dev/null
20 +++ b/dev-python/pyjwt/files/pyjwt-1.7.1-ecdsa-fix.patch
21 @@ -0,0 +1,27 @@
22 +From 36a3f9bd0cc7029e5150b1931efbd62da975e8b9 Mon Sep 17 00:00:00 2001
23 +From: StefanBruens <stefan.bruens@×××××××××××.de>
24 +Date: Mon, 21 Oct 2019 02:07:19 +0200
25 +Subject: [PATCH] Catch BadSignatureError raised by ecdsa 0.13.3 on
26 + verification errors (#448)
27 +
28 +The new ecdsa no longer uses AssertionError when the signature is too long.
29 +This happens in the test suite, where "123" is appended to the signature.
30 +
31 +Fixes #447
32 +---
33 + jwt/contrib/algorithms/py_ecdsa.py | 4 +++-
34 + 1 file changed, 3 insertions(+), 1 deletion(-)
35 +
36 +diff --git a/jwt/contrib/algorithms/py_ecdsa.py b/jwt/contrib/algorithms/py_ecdsa.py
37 +index bf0dea5..f1170a6 100644
38 +--- a/jwt/contrib/algorithms/py_ecdsa.py
39 ++++ b/jwt/contrib/algorithms/py_ecdsa.py
40 +@@ -56,5 +56,7 @@ def verify(self, msg, key, sig):
41 + try:
42 + return key.verify(sig, msg, hashfunc=self.hash_alg,
43 + sigdecode=ecdsa.util.sigdecode_string)
44 +- except AssertionError:
45 ++ # ecdsa <= 0.13.2 raises AssertionError on too long signatures,
46 ++ # ecdsa >= 0.13.3 raises BadSignatureError for verification errors.
47 ++ except (AssertionError, ecdsa.BadSignatureError):
48 + return False
49
50 diff --git a/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild b/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild
51 new file mode 100644
52 index 00000000000..1cb2f6e1415
53 --- /dev/null
54 +++ b/dev-python/pyjwt/pyjwt-1.7.1-r1.ebuild
55 @@ -0,0 +1,56 @@
56 +# Copyright 1999-2020 Gentoo Authors
57 +# Distributed under the terms of the GNU General Public License v2
58 +
59 +EAPI=7
60 +
61 +DISTUTILS_USE_SETUPTOOLS=rdepend
62 +PYTHON_COMPAT=( python{2_7,3_{6,7,8}} pypy3 )
63 +
64 +inherit distutils-r1 eutils
65 +
66 +MY_PN="PyJWT"
67 +DESCRIPTION="JSON Web Token implementation in Python"
68 +HOMEPAGE="https://github.com/progrium/pyjwt https://pypi.org/project/PyJWT/"
69 +SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz"
70 +S="${WORKDIR}"/${MY_PN}-${PV}
71 +
72 +LICENSE="MIT"
73 +SLOT="0"
74 +KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~amd64-linux ~x86-linux"
75 +
76 +RDEPEND=""
77 +DEPEND="
78 + test? (
79 + >=dev-python/cryptography-1.4.0[${PYTHON_USEDEP}]
80 + )"
81 +
82 +distutils_enable_tests pytest
83 +
84 +python_prepare_all() {
85 + find . -name '__pycache__' -prune -exec rm -rf {} + || die
86 + find . -name '*.pyc' -delete || die
87 +
88 + # enables coverage, we don't need that
89 + rm setup.cfg || die
90 + # kill tests using pycrypto that break with pycryptodome
91 + sed -i -e '/has_pycrypto/s:True:False:' \
92 + tests/contrib/test_algorithms.py || die
93 +
94 + local PATCHES=(
95 + "${FILESDIR}"/pyjwt-1.7.1-ecdsa-fix.patch
96 + )
97 +
98 + distutils-r1_python_prepare_all
99 +}
100 +
101 +python_test() {
102 + pytest -vv || die "Tests fail with ${EPYTHON}"
103 +}
104 +
105 +pkg_postinst() {
106 + elog "Available optional features:"
107 + optfeature "cryptography" dev-python/cryptography
108 + optfeature "flake8" dev-python/flake8{,-import-order}
109 +
110 + ewarn "flake8 feature requires 'pep8-naming' which is not packaged yet"
111 +}