commit:     d43b59b286707365170dded20261e7e0a9f9942e
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Dec  6 18:24:34 2020 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Dec  6 18:24:42 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d43b59b2

dev-python/eventlet: bump to 0.29.1

Package-Manager: Portage-3.0.9, Repoman-3.0.2
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-python/eventlet/Manifest                       |  1 +
 dev-python/eventlet/eventlet-0.29.1.ebuild         | 64 +++++++++++++++++++
 .../eventlet/files/eventlet-0.29.1-tests.patch     | 71 ++++++++++++++++++++++
 3 files changed, 136 insertions(+)

diff --git a/dev-python/eventlet/Manifest b/dev-python/eventlet/Manifest
index 2f77ed84d94..9ba86992d66 100644
--- a/dev-python/eventlet/Manifest
+++ b/dev-python/eventlet/Manifest
@@ -1 +1,2 @@
 DIST eventlet-0.26.1.tar.gz 398200 BLAKE2B 
f14024d0825fb5530929766c63dceea7446057d9ad5dfb98ab013e96cab9b0eef5440f2d4d7ceeef17691c8a2a9055cac2b93fb23653a6facba4967c4e7cb0b3
 SHA512 
55b9b214130d0482ea005ea570a5aa3eafdf66e6d315a95c5ba60186a2d9a9df5c2638c86d886968954ce39e5ac2153e1f9e11631e6aef237078c3776af7d6c5
+DIST eventlet-0.29.1.tar.gz 400673 BLAKE2B 
2b317e0c445a7b9c7f96147c033b1a6b4b4d27eeaebe0d40102b4e25d7825861db15e9d77cf6c9e6795e1bc946b1a613d5bb4ffa60a7077c39d575f01bdd8506
 SHA512 
194544e8fafeb0847673abd84c8fbc876bb407bb76cb86c5a8a92fdb7571d3585e895f0063375e43b74de81b47e49cd6002f5b7a4f266d37bacc1b23e9ce4ef3

diff --git a/dev-python/eventlet/eventlet-0.29.1.ebuild 
b/dev-python/eventlet/eventlet-0.29.1.ebuild
new file mode 100644
index 00000000000..c1a6a203dce
--- /dev/null
+++ b/dev-python/eventlet/eventlet-0.29.1.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_9 )
+inherit distutils-r1
+
+DESCRIPTION="Highly concurrent networking library"
+HOMEPAGE="https://pypi.org/project/eventlet/ 
https://github.com/eventlet/eventlet/";
+SRC_URI="mirror://pypi/e/${PN}/${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE="doc examples test"
+
+RDEPEND="
+       >=dev-python/dnspython-1.15.0[${PYTHON_USEDEP}]
+       <dev-python/dnspython-2.0.0[${PYTHON_USEDEP}]
+       >=dev-python/greenlet-0.3[${PYTHON_USEDEP}]
+       >=dev-python/monotonic-1.4[${PYTHON_USEDEP}]
+       >=dev-python/six-1.10.0[${PYTHON_USEDEP}]"
+DEPEND="doc? ( >=dev-python/python-docs-2.7.6-r1:2.7 )
+       test? ( ${RDEPEND}
+               dev-python/pyopenssl[${PYTHON_USEDEP}]
+               dev-python/nose[${PYTHON_USEDEP}] )"
+
+PATCHES=(
+       "${FILESDIR}/eventlet-0.25.1-tests.patch"
+       "${FILESDIR}/${P}-tests.patch"
+)
+
+distutils_enable_sphinx doc
+distutils_enable_tests nose
+
+python_prepare_all() {
+       if use doc; then
+               local PYTHON_DOC_ATOM=$(best_version -b 
dev-python/python-docs:2.7)
+               local 
PYTHON_DOC_VERSION="${PYTHON_DOC_ATOM#dev-python/python-docs-}"
+               local 
PYTHON_DOC="/usr/share/doc/python-docs-${PYTHON_DOC_VERSION}/html"
+               local PYTHON_DOC_INVENTORY="${PYTHON_DOC}/objects.inv"
+               sed -i "s|'https://docs.python.org/': None|'${PYTHON_DOC}': 
'${PYTHON_DOC_INVENTORY}'|" doc/conf.py || die
+       fi
+
+       # Prevent file collisions from teestsuite
+       sed -e "s:'tests', :'tests', 'tests.*', :" -i setup.py || die
+
+       distutils-r1_python_prepare_all
+}
+
+python_test() {
+       unset PYTHONPATH
+       nosetests -v || die
+}
+
+python_install_all() {
+       if use examples; then
+               docompress -x "/usr/share/doc/${PF}/examples"
+               docinto examples
+               dodoc -r examples/.
+       fi
+       distutils-r1_python_install_all
+}

diff --git a/dev-python/eventlet/files/eventlet-0.29.1-tests.patch 
b/dev-python/eventlet/files/eventlet-0.29.1-tests.patch
new file mode 100644
index 00000000000..3cd20823899
--- /dev/null
+++ b/dev-python/eventlet/files/eventlet-0.29.1-tests.patch
@@ -0,0 +1,71 @@
+https://github.com/eventlet/eventlet/issues/646
+From 087ba743c7af8a40ac1e4e2ec89409eee3b4233e Mon Sep 17 00:00:00 2001
+From: Tim Burke <[email protected]>
+Date: Mon, 2 Nov 2020 16:09:46 -0800
+Subject: [PATCH] py39: Add _at_fork_reinit method to Semaphores
+
+CPython expects to be able to call such a method on RLocks, Conditions,
+and Events in threading; since we may monkey-patch threading to use
+Semaphores as locks, they need the method, too.
+
+Addresses #646
+---
+ eventlet/semaphore.py   |  5 +++++
+ tests/semaphore_test.py | 21 +++++++++++++++++++++
+ 2 files changed, 26 insertions(+)
+
+diff --git a/eventlet/semaphore.py b/eventlet/semaphore.py
+index 18b5b05f4..5e2b5e32f 100644
+--- a/eventlet/semaphore.py
++++ b/eventlet/semaphore.py
+@@ -39,6 +39,7 @@ def __init__(self, value=1):
+         if value < 0:
+             msg = 'Semaphore() expect value >= 0, actual: 
{0}'.format(repr(value))
+             raise ValueError(msg)
++        self._original_value = value
+         self.counter = value
+         self._waiters = collections.deque()
+ 
+@@ -51,6 +52,10 @@ def __str__(self):
+         params = (self.__class__.__name__, self.counter, len(self._waiters))
+         return '<%s c=%s _w[%s]>' % params
+ 
++    def _at_fork_reinit(self):
++        self.counter = self._original_value
++        self._waiters.clear()
++
+     def locked(self):
+         """Returns true if a call to acquire would block.
+         """
+diff --git a/tests/semaphore_test.py b/tests/semaphore_test.py
+index d6c11d1f6..cf6a29daf 100644
+--- a/tests/semaphore_test.py
++++ b/tests/semaphore_test.py
+@@ -42,6 +42,27 @@ def test_timeout_non_blocking(self):
+         sem = eventlet.Semaphore()
+         self.assertRaises(ValueError, sem.acquire, blocking=False, timeout=1)
+ 
++    def test_reinit(self):
++        # py39+ expects locks to have a _at_fork_reinit() method; since we
++        # patch in Semaphores in eventlet.green.thread, they need it, too
++        sem = eventlet.Semaphore()
++        sem.acquire()
++        sem._at_fork_reinit()
++        self.assertEqual(sem.acquire(blocking=False), True)
++        self.assertEqual(sem.acquire(blocking=False), False)
++
++        sem = eventlet.Semaphore(0)
++        sem.release()
++        sem._at_fork_reinit()
++        self.assertEqual(sem.acquire(blocking=False), False)
++
++        sem = eventlet.Semaphore(2)
++        sem.acquire()
++        sem._at_fork_reinit()
++        self.assertEqual(sem.acquire(blocking=False), True)
++        self.assertEqual(sem.acquire(blocking=False), True)
++        self.assertEqual(sem.acquire(blocking=False), False)
++
+ 
+ def test_semaphore_contention():
+     g_mutex = eventlet.Semaphore()

Reply via email to