From bac43fa793f010e2afa512b75dbb78769c33470c261fc4d5853133375c5946bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Mon, 5 Jan 2026 08:47:00 +0000 Subject: [PATCH] - Rework requirements: * Add missing setuptools for building * Remove obsolete requirements * Don't hard require optional requirements. See comments in setup.py - testrunner.py is no longer directly executable by default OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-gevent?expand=0&rev=131 --- .gitattributes | 23 + .gitignore | 1 + gevent-25.5.1.tar.gz | 3 + gevent-25.9.1.tar.gz | 3 + gevent-openssl35-test-fix.patch | 185 +++ gevent-opensuse-nocolor-tests.patch | 15 + python-gevent-rpmlintrc | 2 + python-gevent.changes | 1884 +++++++++++++++++++++++++++ python-gevent.spec | 180 +++ 9 files changed, 2296 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 gevent-25.5.1.tar.gz create mode 100644 gevent-25.9.1.tar.gz create mode 100644 gevent-openssl35-test-fix.patch create mode 100644 gevent-opensuse-nocolor-tests.patch create mode 100644 python-gevent-rpmlintrc create mode 100644 python-gevent.changes create mode 100644 python-gevent.spec diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/gevent-25.5.1.tar.gz b/gevent-25.5.1.tar.gz new file mode 100644 index 0000000..305ad4c --- /dev/null +++ b/gevent-25.5.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:582c948fa9a23188b890d0bc130734a506d039a2e5ad87dae276a456cc683e61 +size 6388207 diff --git a/gevent-25.9.1.tar.gz b/gevent-25.9.1.tar.gz new file mode 100644 index 0000000..1dad19a --- /dev/null +++ b/gevent-25.9.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e64d86fda5704972ad03f04b128fe16c085bdec9615a17d906a6d83d7ac58716 +size 4647126 diff --git a/gevent-openssl35-test-fix.patch b/gevent-openssl35-test-fix.patch new file mode 100644 index 0000000..4f62382 --- /dev/null +++ b/gevent-openssl35-test-fix.patch @@ -0,0 +1,185 @@ +Index: gevent-25.4.2/src/greentest/3.11/test_ssl.py +=================================================================== +--- gevent-25.4.2.orig/src/greentest/3.11/test_ssl.py ++++ gevent-25.4.2/src/greentest/3.11/test_ssl.py +@@ -2492,7 +2492,6 @@ class ThreadedEchoServer(threading.Threa + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False +- self.server.stop() + self.close() + return False + else: +@@ -2627,10 +2626,6 @@ class ThreadedEchoServer(threading.Threa + self.close() + self.running = False + +- # normally, we'd just stop here, but for the test +- # harness, we want to stop the server +- self.server.stop() +- + def __init__(self, certificate=None, ssl_version=None, + certreqs=None, cacerts=None, + chatty=True, connectionchatty=False, starttls_server=False, +@@ -2664,21 +2659,33 @@ class ThreadedEchoServer(threading.Threa + self.conn_errors = [] + threading.Thread.__init__(self) + self.daemon = True ++ self._in_context = False + + def __enter__(self): ++ if self._in_context: ++ raise ValueError('Re-entering ThreadedEchoServer context') ++ self._in_context = True + self.start(threading.Event()) + self.flag.wait() + return self + + def __exit__(self, *args): ++ assert self._in_context ++ self._in_context = False + self.stop() + self.join() + + def start(self, flag=None): ++ if not self._in_context: ++ raise ValueError( ++ 'ThreadedEchoServer must be used as a context manager') + self.flag = flag + threading.Thread.start(self) + + def run(self): ++ if not self._in_context: ++ raise ValueError( ++ 'ThreadedEchoServer must be used as a context manager') + self.sock.settimeout(1.0) + self.sock.listen(5) + self.active = True +Index: gevent-25.4.2/src/greentest/3.10/test_ssl.py +=================================================================== +--- gevent-25.4.2.orig/src/greentest/3.10/test_ssl.py ++++ gevent-25.4.2/src/greentest/3.10/test_ssl.py +@@ -2485,7 +2485,6 @@ class ThreadedEchoServer(threading.Threa + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False +- self.server.stop() + self.close() + return False + else: +@@ -2620,9 +2619,6 @@ class ThreadedEchoServer(threading.Threa + self.close() + self.running = False + +- # normally, we'd just stop here, but for the test +- # harness, we want to stop the server +- self.server.stop() + + def __init__(self, certificate=None, ssl_version=None, + certreqs=None, cacerts=None, +@@ -2657,21 +2653,33 @@ class ThreadedEchoServer(threading.Threa + self.conn_errors = [] + threading.Thread.__init__(self) + self.daemon = True ++ self._in_context = False + + def __enter__(self): ++ if self._in_context: ++ raise ValueError('Re-entering ThreadedEchoServer context') ++ self._in_context = True + self.start(threading.Event()) + self.flag.wait() + return self + + def __exit__(self, *args): ++ assert self._in_context ++ self._in_context = False + self.stop() + self.join() + + def start(self, flag=None): ++ if not self._in_context: ++ raise ValueError( ++ 'ThreadedEchoServer must be used as a context manager') + self.flag = flag + threading.Thread.start(self) + + def run(self): ++ if not self._in_context: ++ raise ValueError( ++ 'ThreadedEchoServer must be used as a context manager') + self.sock.settimeout(1.0) + self.sock.listen(5) + self.active = True +Index: gevent-25.4.2/src/greentest/3.12/test_ssl.py +=================================================================== +--- gevent-25.4.2.orig/src/greentest/3.12/test_ssl.py ++++ gevent-25.4.2/src/greentest/3.12/test_ssl.py +@@ -2300,7 +2300,6 @@ class ThreadedEchoServer(threading.Threa + # See also http://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ + if e.errno != errno.EPROTOTYPE and sys.platform != "darwin": + self.running = False +- self.server.stop() + self.close() + return False + else: +@@ -2435,10 +2434,6 @@ class ThreadedEchoServer(threading.Threa + self.close() + self.running = False + +- # normally, we'd just stop here, but for the test +- # harness, we want to stop the server +- self.server.stop() +- + def __init__(self, certificate=None, ssl_version=None, + certreqs=None, cacerts=None, + chatty=True, connectionchatty=False, starttls_server=False, +@@ -2472,21 +2467,33 @@ class ThreadedEchoServer(threading.Threa + self.conn_errors = [] + threading.Thread.__init__(self) + self.daemon = True ++ self._in_context = False + + def __enter__(self): ++ if self._in_context: ++ raise ValueError('Re-entering ThreadedEchoServer context') ++ self._in_context = True + self.start(threading.Event()) + self.flag.wait() + return self + + def __exit__(self, *args): ++ assert self._in_context ++ self._in_context = False + self.stop() + self.join() + + def start(self, flag=None): ++ if not self._in_context: ++ raise ValueError( ++ 'ThreadedEchoServer must be used as a context manager') + self.flag = flag + threading.Thread.start(self) + + def run(self): ++ if not self._in_context: ++ raise ValueError( ++ 'ThreadedEchoServer must be used as a context manager') + self.sock.settimeout(1.0) + self.sock.listen(5) + self.active = True +Index: gevent-25.4.2/src/greentest/3.9/test_ssl.py +=================================================================== +--- gevent-25.4.2.orig/src/greentest/3.9/test_ssl.py ++++ gevent-25.4.2/src/greentest/3.9/test_ssl.py +@@ -2559,10 +2559,6 @@ class ThreadedEchoServer(threading.Threa + self.close() + self.running = False + +- # normally, we'd just stop here, but for the test +- # harness, we want to stop the server +- self.server.stop() +- + def __init__(self, certificate=None, ssl_version=None, + certreqs=None, cacerts=None, + chatty=True, connectionchatty=False, starttls_server=False, diff --git a/gevent-opensuse-nocolor-tests.patch b/gevent-opensuse-nocolor-tests.patch new file mode 100644 index 0000000..fa01cb1 --- /dev/null +++ b/gevent-opensuse-nocolor-tests.patch @@ -0,0 +1,15 @@ +Avoid colorization of test output in obs runners + +Index: gevent-24.2.1/src/gevent/testing/util.py +=================================================================== +--- gevent-24.2.1.orig/src/gevent/testing/util.py ++++ gevent-24.2.1/src/gevent/testing/util.py +@@ -98,6 +98,8 @@ def _color(what): + return _color_code(_colorscheme[what]) + + def _colorize(what, message, normal='normal'): ++ if os.environ.get("TEST_NOCOLOR", False): ++ return message + return _color(what) + message + _color(normal) + + def log(message, *args, **kwargs): diff --git a/python-gevent-rpmlintrc b/python-gevent-rpmlintrc new file mode 100644 index 0000000..f596a30 --- /dev/null +++ b/python-gevent-rpmlintrc @@ -0,0 +1,2 @@ +addFilter("zero-length .*tests/nullcert\.pem") + diff --git a/python-gevent.changes b/python-gevent.changes new file mode 100644 index 0000000..6a66b06 --- /dev/null +++ b/python-gevent.changes @@ -0,0 +1,1884 @@ +------------------------------------------------------------------- +Sun Jan 4 14:51:01 UTC 2026 - Ben Greiner + +- Rework requirements: + * Add missing setuptools for building + * Remove obsolete requirements + * Don't hard require optional requirements. See comments in + setup.py +- testrunner.py is no longer directly executable by default + +------------------------------------------------------------------- +Mon Oct 6 13:08:13 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 25.9.1 + * gevent is now tested on PyPy 3.11 v7.3.20. Previously it was tested + with the now end-of-life PyPy 3.10 v7.3.17. + * Fix a ``TypeError`` in the C extensions when attempting to put items + into a full ``SimpleQueue.`` + It is believed this problem started in version 25.4.1. On older + versions, using the environment variable ``PURE_PYTHON`` or + ``GEVENT_PURE_PYTHON`` works around + See :issue:`2139`. +- from version 25.8.2 + * Make the ``queue`` attribute of ``gevent.queue.Queue`` objects + writable from Python when the C extension is in use. When + monkey-patched, this lets subclasses assign to it from their ``_init`` + method. (Prior to 25.8.1 the ``_init`` method simply wasn't called.) + See :issue:`2136`. +- from version 25.8.1 + * gevent is now tested on the latest available versions of Python: + 3.14rc1, 3.13.5, 3.12.11, 3.11.13, and 3.10.18. + We expect to remove support for Python 3.9 soon. + * Prevent an ``AssertionError`` (from ``AbstractLinkable``, such as + locks, events, etc) from being printed after ``os.fork`` under certain + conditions. + See also :issue:`2058`. + See :issue:`1895`. + * Avoid a rare ``AttributeError`` that could occur during circular + garbage collection. + See :issue:`1961`. + * Update c-ares from 1.33.1 to 1.34.5. + This contains `a bug fix `_ + resolving excess CPU usage for certain platforms. + See :issue:`2084`. + * Fix several possible interpreter crashes when there are race + conditions or programmers don't follow the documented rules and close + open files while they are still in use by other components. + For example, :meth:`selectors.BaseSelector.unregister` says "A file + object shall be unregistered prior to being closed." Failure to do so + is implementation dependent; in gevent, with libev compiled with + debugging enabled, this would crash the process, and with libuv, + an unexpected, uncatchable exception would be raised. Now, more common + failure scenarios are handled gracefully. + This also means that gevent now monkey-patches :func:`os.close` (on + POSIX) to help handle these cases. + See :issue:`2100`. + * Fix some ignored AssertionErrors after forking on older versions of + Python. + See also :issue:`2111`. + See :issue:`2111`. + * Make the classes in ``gevent.queue`` more compatible with classes that + expect to subclass the standard library queue classes. + See :issue:`2114`. + * Provide ``gevent.signal.set_wakeup_fd`` (monkey-patched by default) to + allow waking up on ``SIGCHLD``. Previously, gevent's internal handling + of ``SIGCHLD`` prevented this from working. + See :issue:`2126`. +- Drop gevent-openssl35-test-fix.patch, merged upstream + +------------------------------------------------------------------- +Mon Jun 23 20:17:43 UTC 2025 - Matej Cepl + +- Tolerating failing test suite (gh#gevent/gevent#2118, + bsc#1245168). + +------------------------------------------------------------------- +Wed Jun 11 09:52:58 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 25.5.1 + * Update the bundled libuv to 1.51 from 1.44.2. + * Note that this changes the minimum supported versions of various + operating systems. Linux now requires kernel 3.10 and glibc 2.17, + up from 2.6.32 and glibc 2.12; macOS now requires version 11, up + from version 10.15; Windows now requires Windows 10 and Visual + Studio 2017, up from Windows 8 and VS 2015; finally, FreeBSD now + requires version 12, up from version 10. + * The musl Linux wheels are now built with muslinux_1_2 instead of + musllinux_1_1. See issue #2108. + * Add support for Cython 3.1 on Windows. + * Add support for Python 3.14b1 and significantly expand the set of + standard library tests we run with monkey-patching. +- Update BuildRequires and Requires from pyproject.toml + +------------------------------------------------------------------- +Fri May 9 15:54:04 UTC 2025 - Bernhard Wiedemann + +- Use %_smp_mflags for reproducible builds (boo#1237231) + +------------------------------------------------------------------- +Fri Apr 25 07:37:04 UTC 2025 - Pedro Monreal + +- Update to 25.4.2: [bsc#1241067, bsc#1241037] + * Make gevent's queue classes subscriptable to match the standard + library. See issue #2102. + * Make the c-ares resolver build on Windows. + * The gevent testsuite runs a copy of the test_ssl from cpython but + the follwoing change has not been ported yet: + - gh-126500: test_ssl: Don't stop ThreadedEchoServer on OSError + in ConnectionHandler [gh#python/cpython/pull/126503] + - Rebase gevent-openssl35-test-fix.patch + - Upstream PR: [gh#gevent/gevent/pull/2103] + +------------------------------------------------------------------- +Thu Apr 24 09:55:27 UTC 2025 - Markéta Machová + +- Update to 25.4.1 + * Remove some legacy code that supported Python 2 for compatibility + with the upcoming releases of Cython 3.1. + * Add a new environment variable and configuration setting to control + whether blocking reports are printed by the monitor thread. + * Add initial support for Python 3.14a7. + * Fix using gevent’s BackdoorServer with Unix sockets. + * Do not use pywsgi in a security-conscious environment. Fix one + security issue related to HTTP 100 Continue handling. See issue #2075. + +------------------------------------------------------------------- +Tue Apr 22 08:44:56 UTC 2025 - Pedro Monreal + +- Handle BrokenPipeError in src/gevent/ssl.py [bsc#1241037] + * Upstream PR: https://github.com/gevent/gevent/pull/2103 + * Add gevent-openssl35-test-fix.patch + +------------------------------------------------------------------- +Wed Oct 23 11:07:00 UTC 2024 - John Paul Adrian Glaubitz + +- Update to 24.10.3 + * Fix clearing stack frames on Python 3.13. This is invoked when you + fork after having used the thread pool. + * Distribute manylinux2014 wheels for x86_64. + * Stop switching to the hub in the after fork hook in a child process. + This could lead to strange behaviour, and is different than what all + other versions of Python do. +- from version 24.10.2 + * Workaround a Cython bug compiling on GCC14. +- Drop gh-2031-cython-workaround.patch, merged upstream + +------------------------------------------------------------------- +Thu Oct 10 09:39:52 UTC 2024 - John Paul Adrian Glaubitz + +- Update to 24.10.1 + * Update the bundled c-ares to 1.33.1. + * Add support for Python 3.13. + - The functions and classes in ``gevent.subprocess`` no longer accept + ``stdout=STDOUT`` and raise a ``ValueError``. + Several additions and changes to the ``queue`` module, including: + - ``Queue.shutdown`` is available on all versions of Python. + - ``LifoQueue`` is now a joinable queue. + * gevent.monkey changed from a module to a package. The public API + remains the same. + For this release, private APIs (undocumented, marked internal, or + beginning with an underscore) are also preserved. However, these may + be changed or removed at any time in the future. If you are using one + of these APIs and cannot replace it, please contact the gevent team. + * For platforms that don't have ``socketpair``, upgrade our fallback + code to avoid a security issue. + See :issue:`2048`. + * Remove support for Python 3.8, which has reached the end of its + support lifecycle. + See :issue:`remove_py38`. +- Drop gh-113964-fix-tests-3.12.3.patch, fixed upstream +- Renumber patches + +------------------------------------------------------------------- +Tue May 28 10:56:43 UTC 2024 - John Paul Adrian Glaubitz + +- Add gh-2031-cython-workaround.patch which fixes a regression + with Cython 3.0.10 which caused an FTBFS with GCC 14 + +------------------------------------------------------------------- +Mon Apr 22 07:38:07 UTC 2024 - Daniel Garcia + +- Add gh-113964-fix-tests-3.12.3.patch to tix tests with python 3.12.3 + (bsc#1223128) + +- Drop upstream patches: + * gevent-fix-unittest-returncode-py312-c1.patch + * gevent-fix-unittest-returncode-py312-c2.patch + +- Update to version 24.2.1: + - Add support for Python patch releases 3.11.8 and 3.12.2, which + changed internal details of threading. + - Errors raised from subprocess.Popen may not have a filename set. + - SSLSocket.recv_into and SSLSocket.read no longer require the + buffer to implement len and now work with buffers whose size is + not 1. + - gh-108310: Fix CVE-2023-40217: Check for & avoid the ssl pre-close + flaw. + - Drop setuptools to a soft test dependency. + - Drop support for very old versions of CFFI. + - Update bundled c-ares from 1.19.1 to 1.26.0. + - Locks created by gevent, but acquired from multiple different + threads (not recommended), no longer spin to implement timeouts + and interruptible blocking. Instead, they use the native + functionality of the Python 3 lock. This may improve some + scenarios. See issue #2013. + +------------------------------------------------------------------- +Wed Jan 10 22:40:39 UTC 2024 - Ben Greiner + +- Clean obsolete old python and old distribution directives + * Only 15.5+ with the sle15 python module and Tumbleweed have the + required Python 3.8+ + * Drop fix-no-return-in-nonvoid-function.patch +- Update test suite execution + * Use -u-network flag to disable network tests + * Add gevent-opensuse-nocolor-tests.patch -- Avoid colorization + of test output in obs runners + * Add gevent-fix-unittest-returncode-py312-c1.patch and + gevent-fix-unittest-returncode-py312-c2.patch + gh#gevent/gevent#2012 + +------------------------------------------------------------------- +Mon Nov 27 15:53:52 UTC 2023 - Dirk Müller + +- update to 23.9.1: + * Require greenlet 3.0 on Python 3.11 and Python 3.12; greenlet + 3.0 is recommended for all platforms. + +------------------------------------------------------------------- +Mon Sep 18 19:07:56 UTC 2023 - Dirk Müller + +- update to 23.9.0 (bsc#1215469, CVE-2023-41419): + * Make ``gevent.select.select`` accept arbitrary iterables, not + just sequences. That is, you can now pass in a generator of file + descriptors instead of a realized list. Internally, arbitrary + iterables are copied into lists. This better matches what the + standard library does. + * On Python 3.11 and newer, opt out of Cython's fast exception + manipulation, which *may* be causing problems in certain + circumstances when combined with greenlets. + * On all versions of Python, adjust some error handling in the + default * -based loop. This fixes several assertion failures + on debug versions of CPython. Hopefully it has a positive + impact under real conditions. + * Make ``gevent.pywsgi`` comply more closely with the HTTP + specification for chunked transfer encoding. In particular, + we are much stricter about trailers, and trailers that are + invalid (too long or featuring disallowed characters) forcibly + close the connection to the client *after* the results have + been sent. + * Trailers otherwise continue to be ignored and are not + available to the WSGI application. + Previously, carefully crafted invalid trailers in chunked + requests on keep-alive connections might appear as two + requests to ``gevent.pywsgi``. Because this was handled + exactly as a normal keep-alive connection with two requests, + the WSGI application should handle it normally. However, if + you were counting on some upstream server to filter incoming + requests based on paths or header fields, and the upstream + server simply passed trailers through without + validating them, then this embedded second request would + bypass those checks. + (If the upstream server validated that the trailers + meet the* HTTP specification, this could not occur, + because characters that are required in an HTTP request, + like a space, are not allowed in trailers.) CVE-2023-41419 + was reserved for this. + +------------------------------------------------------------------- +Mon Aug 14 09:20:19 UTC 2023 - Dirk Müller + +- update to 23.7.0: + * Add preliminary support for Python 3.12, using greenlet + 3.0a1. + * Update the bundled c-ares version to 1.19.1. + * Fix an edge case connecting a non-blocking ``SSLSocket`` that + could result in an AttributeError. In a change to match + the standard library, calling ``sock.connect_ex()`` on a + subclass of ``socket`` no longer calls the subclass's + ``connect`` method. + * Make gevent's ``FileObjectThread`` (mostly used on Windows) + implement ``readinto`` cooperatively. + * Work around an ``AttributeError`` during cyclic garbage + collection when Python finalizers (``__del__`` and the like) + attempt to use gevent APIs. This is not a recommended practice, + and it is unclear if catching this ``AttributeError`` will fix + any problems or just shift them. + * Remove support for obsolete Python versions. This is + everything prior to 3.8. + * Stop using ``pkg_resources`` to find entry points (plugins). + Instead, use ``importlib.metadata``. + * Honor ``sys.unraisablehook`` when a callback function + produces an exception, and handling the exception in the hub + *also* produces an exception. +- drop skip-tests-in-leap.patch handle-python-ssl-changes.patch (obsolete) + +------------------------------------------------------------------- +Fri Jun 9 08:08:57 UTC 2023 - Daniel Garcia + +- skip test__util.py in s390x arch + bsc#1211861 + +------------------------------------------------------------------- +Thu Jun 1 07:05:01 UTC 2023 - Dirk Müller + +- handle-python-ssl-changes.patch: refresh to handle ssl.shared_ciphers() + behavior change in python 3.11 as well + +------------------------------------------------------------------- +Mon May 15 14:18:03 UTC 2023 - Steve Kowalik + +- Add patch handle-python-ssl-changes.patch: + * Handle Python 3.10 changes where ssl.shared_ciphers() changes + behaviour. + +------------------------------------------------------------------- +Mon May 15 13:44:48 UTC 2023 - Dirk Müller + +- skip one more test from testsuite + +------------------------------------------------------------------- +Thu May 4 20:28:36 UTC 2023 - Dirk Müller + +- update to 22.10.2: + * Update to greenlet 2.0. This fixes a deallocation issue that + required a change in greenlet's ABI. The design of greenlet 2.0 is + intended to prevent future fixes and enhancements from + requiring an ABI change, making it easier to update gevent + and greenlet independently. + +------------------------------------------------------------------- +Sun Apr 23 23:15:24 UTC 2023 - Matej Cepl + +- Switch documentation to be within the main package. + +------------------------------------------------------------------- +Fri Apr 21 12:25:42 UTC 2023 - Dirk Müller + +- add sle15_python_module_pythons (jsc#PED-68) + +------------------------------------------------------------------- +Thu Apr 13 22:41:35 UTC 2023 - Matej Cepl + +- Make calling of %{sle15modernpython} optional. + +------------------------------------------------------------------- +Wed Mar 8 15:30:19 UTC 2023 - Matej Cepl + +- Clean up the SPEC file. + +------------------------------------------------------------------- +Sun Oct 16 17:41:54 UTC 2022 - Dirk Müller + +- update to 22.10.0: + * Update bundled libuv to 1.44.2. + See :issue:`1913`. + * Upgrade embedded c-ares to 1.18.1. + * Upgrade bundled libuv to 1.42.0 from 1.40.0. + * Added preliminary support for Python 3.11 (rc2 and later). + Some platforms may or may not have binary wheels at this time. + .. important:: Support for legacy versions of Python, including 2.7 + and 3.6, will be ending soon. The + maintenance burden has become too great and the + maintainer's time is too limited. + + Ideally, there will be a release of gevent compatible + with a final release of greenlet 2.0 that still + supports those legacy versions, but that may not be + possible; this may be the final release to support them. + :class:`gevent.threadpool.ThreadPool` can now optionally expire idle + threads. This is used by default in the implicit thread pool used for + DNS requests and other user-submitted tasks; other uses of a + thread-pool need to opt-in to this. + See :issue:`1867`. + * Truly disable the effects of compiling with ``-ffast-math``. + +------------------------------------------------------------------- +Mon Dec 13 20:30:19 UTC 2021 - Ben Greiner + +- Update to 21.12.0 + * Fix hanging the interpreter on shutdown if gevent monkey + patching occurred on a non-main thread in Python 3.9.8 and + above. (Note that this is not a recommended practice.) See + :issue:`1839`. + * Update the embedded c-ares from 1.16.1 to 1.17.1. See + :issue:`1758`. + * Add support for Python 3.10rc1 and newer. As part of this, the + minimum required greenlet version was increased to 1.1.0 (on + CPython), and the minimum version of Cython needed to build + gevent from a source checkout is 3.0a9. Note that the dnspython + resolver is not available on Python 3.10. See :issue:`1790`. +- Meanwhile Cython 0.29.24 and dnspython are compatible + with python310 +- Revert threading test skip, fixed in 21.12 + +------------------------------------------------------------------- +Fri Nov 19 07:48:57 UTC 2021 - Steve Kowalik + +- Skip test__threading_monkey_in_thread as it breaks with Python 3.9.9. + +------------------------------------------------------------------- +Thu Jul 8 05:50:58 UTC 2021 - Antonio Larrosa + +- Skip two tests that fail in SLE/Leap: + * skip-tests-in-leap.patch + +------------------------------------------------------------------- +Fri Feb 12 10:18:37 UTC 2021 - Pedro Monreal + +- Relax the crypto policies for the test-suite + +------------------------------------------------------------------- +Fri Feb 12 10:10:53 UTC 2021 - Pedro Monreal + +- Update to 21.1.2: + * Features: + - Update the embedded libev from 4.31 to 4.33. + - Update the embedded libuv from 1.38.0 to 1.40.0. +- Update to 21.1.1: + * Bugfixes: + - Fix a TypeError on startup on Python 2 with zope.schema + installed. +- Update to 21.1.0: + * Bugfixes: + - Make gevent FileObjects more closely match the semantics of + native file objects for the name attribute.: Objects opened + from a file descriptor integer have that integer as their + name. (Note that this is the Python 3 semantics; Python 2 + native file objects returned from os.fdopen() have the string + "" as their name , but here gevent always follows + Python 3.) The name remains accessible after the file object + is closed. + * Misc: + - Make gevent.event.AsyncResult print a warning when it detects + improper cross-thread usage instead of hanging. + - AsyncResult has never been safe to use from multiple threads. + It, like most gevent objects, is intended to work with greenlets + from a single thread. Using AsyncResult from multiple threads + has undefined semantics. The safest way to communicate between + threads is using an event loop async watcher. + - Those undefined semantics changed in recent gevent versions, + making it more likely that an abused AsyncResult would + misbehave in ways that could cause the program to hang. + - Now, when AsyncResult detects a situation that would hang, it + prints a warning to stderr. Note that this is best-effort, and + hangs are still possible, especially under PyPy 7.3.3. + - At the same time, AsyncResult is tuned to behave more like it + did in older versions, meaning that the hang is once again much + less likely. If you were getting lucky and using AsyncResult + successfully across threads, this may restore your luck. In + addition, cross-thread wakeups are faster. Note that the gevent + hub now uses an extra file descriptor to implement this. + - Similar changes apply to gevent.event.Event +- Update to 20.12.1: + * Features: + - Make :class:`gevent.Greenlet` objects function as context + managers. When the with suite finishes, execution doesn't + continue until the greenlet is finished. This can be a simpler + alternative to a :class:`gevent.pool.Group` when the lifetime + of greenlets can be lexically scoped. + * Bugfixes: + - Make gevent's Semaphore objects properly handle native thread + identifiers larger than can be stored in a C long on Python 3, + instead of raising an OverflowError. +- Rebase fix-no-return-in-nonvoid-function.patch + +------------------------------------------------------------------- +Tue Feb 9 21:32:04 UTC 2021 - Dirk Müller + +- update to 20.12.0: + * Make worker threads created by :class:`gevent.threadpool.ThreadPool` install + the :func:`threading.setprofile` and :func:`threading.settrace` hooks + while tasks are running. This provides visibility to profiling and + tracing tools like yappi. + * Incorrectly passing an exception *instance* instead of an exception + *type* to `gevent.Greenlet.kill` or `gevent.killall` no longer prints + an exception to stderr. + * Make destroying a hub try harder to more forcibly stop loop processing + when there are outstanding callbacks or IO operations scheduled. + * Improve the ability to use monkey-patched locks, and + `gevent.lock.BoundedSemaphore`, across threads, especially when the + various threads might not have a gevent hub or any other active + greenlets. In particular, this handles some cases that previously + raised ``LoopExit`` or would hang. Note that this may not be reliable + on PyPy on Windows; such an environment is not currently recommended. + * Make error reporting when a greenlet suffers a `RecursionError` more + reliable. + * gevent.pywsgi: Avoid printing an extra traceback ("TypeError: not + enough arguments for format string") to standard error on certain + invalid client requests. + * Add support for PyPy2 7.3.3. + * Python 2: Make ``gevent.subprocess.Popen.stdin`` objects have a + ``write`` method that guarantees to write the entire argument in + binary, unbuffered mode. This may require multiple trips around the + event loop, but more closely matches the behaviour of the Python 2 + standard library (and gevent prior to 1.5). The number of bytes + written is still returned (instead of ``None``). + See :issue:`1711`. + * Make `gevent.pywsgi` stop trying to enforce the rules for reading chunked input or + ``Content-Length`` terminated input when the connection is being + upgraded, for example to a websocket connection. Likewise, if the + protocol was switched by returning a ``101`` status, stop trying to + automatically chunk the responses. + * Remove the ``__dict__`` attribute from `gevent.socket.socket` objects. The + standard library socket do not have a ``__dict__``. + +------------------------------------------------------------------- +Fri Dec 11 23:52:16 UTC 2020 - Matej Cepl + +- mock dependency was actually not needed at all + +------------------------------------------------------------------- +Thu Oct 8 10:03:45 UTC 2020 - Hans-Peter Jansen + +- Disable more tests failing for Python 3.6 +- Don't bother with python2 tests + +------------------------------------------------------------------- +Sat Oct 3 16:09:59 UTC 2020 - Hans-Peter Jansen + +- Update to version 20.9.0 (2020-09-22) + + Features + * The embedded libev is now asked to detect the availability of + clock_gettime and use the realtime and/or monotonic clocks, + if they are available. + * On Linux, this can reduce the number of system calls libev + makes. Originally provided by Josh Snyder. See + :issue:`issue1648`. + + Bugfixes + * On CPython, depend on greenlet >= 0.4.17. This version is + binary incompatible with earlier releases on CPython 3.7 and + later. + * On Python 3.7 and above, the module gevent.contextvars is no + longer monkey-patched into the standard library. contextvars + are now both greenlet and asyncio task local. See + :issue:`1656`. See :issue:`issue1674`. + * The DummyThread objects created automatically by certain + operations when the standard library threading module is + monkey-patched now match the naming convention the standard + library uses ("Dummy-12345"). Previously (since gevent 1.2a2) + they used "DummyThread-12345". See :issue:`1659`. + * Fix compatibility with dnspython 2. + * Caution! + * This currently means that it can be imported. But it cannot + yet be used. gevent has a pinned dependency on dnspython < 2 + for now. + * See :issue:`1661`. + +- Update to version 20.6.2 (2020-06-16) + + Features + * It is now possible to build and use the embedded libuv on a + Cygwin platform. + * Note that Cygwin is not an officially supported platform of + upstream libuv and is not tested by gevent, so the actual + working status is unknown, and this may bitrot in future + releases. + * Thanks to berkakinci for the patch. See :issue:`issue1645`. + + Bugfixes + * Relax the version constraint for psutil on PyPy. + * Previously it was pinned to 5.6.3 for PyPy2, except for on + Windows, where it was excluded. It is now treated the same as + CPython again. See :issue:`issue1643`. + +- Update to version 20.6.1 (2020-06-10) + + Features + * gevent's CI is now tested on Ubuntu 18.04 (Bionic), an + upgrade from 16.04 (Xenial). See :issue:`1623`. + + Bugfixes + * On Python 2, the dnspython resolver can be used without + having selectors2 installed. Previously, an ImportError would + be raised. See :issue:`issue1641`. + * Python 3 gevent.ssl.SSLSocket objects no longer attempt to + catch ConnectionResetError and treat it the same as an + SSLError with SSL_ERROR_EOF (typically by suppressing it). + * This was a difference from the way the standard library + behaved (which is to raise the exception). It was added to + gevent during early testing of OpenSSL 1.1 and TLS 1.3. See + :issue:`1637`. + +- Update to version 20.6.0 (2020-06-06) + + Features + * Add gevent.selectors containing GeventSelector. This selector + implementation uses gevent details to attempt to reduce + overhead when polling many file descriptors, only some of + which become ready at any given time. + * This is monkey-patched as selectors.DefaultSelector by + default. + * This is available on Python 2 if the selectors2 backport is + installed. (This backport is installed automatically using + the recommended extra.) When monkey-patching, selectors is + made available as an alias to this module. See :issue:`1532`. + * Depend on greenlet >= 0.4.16. This is required for CPython + 3.9 and 3.10a0. See :issue:`1627`. + * Add support for Python 3.9. + * No binary wheels are available yet, however. See + :issue:`1628`. + + Bugfixes + * gevent.socket.create_connection and + gevent.socket.socket.connect no longer ignore IPv6 scope IDs. + * Any IP address (IPv4 or IPv6) is no longer subject to an + extra call to getaddrinfo. Depending on the resolver in use, + this is likely to change the number and order of greenlet + switches. (On Windows, in particular test cases when there + are no other greenlets running, it has been observed to lead + to LoopExit in scenarios that didn't produce that before.) + See :issue:`1634`. + +- Update to version 20.5.2 (2020-05-28) + + Bugfixes + * Forking a process that had use the threadpool to run tasks + that created their own hub would fail to clean up the + threadpool by raising greenlet.error. See :issue:`1631`. + +- Update to version 20.5.1 (2020-05-26) + + Features + * Waiters on Event and Semaphore objects that call wait() or + acquire(), respectively, that find the Event already set, or + the Semaphore available, no longer "cut in line" and run + before any previously scheduled greenlets. They now run in + the order in which they arrived, just as waiters that had to + block in those methods do. See :issue:`1520`. + * Update tested PyPy version from 7.3.0 to 7.3.1 on Linux. See + :issue:`1569`. + * Make zope.interface, zope.event and (by extension) setuptools + required dependencies. The events install extra now does + nothing and will be removed in 2021. See :issue:`1619`. + * Update bundled libuv from 1.36.0 to 1.38.0. See + :issue:`1621`. + * Update bundled c-ares from 1.16.0 to 1.16.1. + * On macOS, stop trying to adjust c-ares headers to make them + universal. See :issue:`1624`. + + Bugfixes + * Make gevent locks that are monkey-patched usually work across + native threads as well as across greenlets within a single + thread. Locks that are only used in a single thread do not + take a performance hit. While cross-thread locking is + relatively expensive, and not a recommended programming + pattern, it can happen unwittingly, for example when using + the threadpool and logging. + * Before, cross-thread lock uses might succeed, or, if the lock + was contended, raise greenlet.error. Now, in the contended + case, if the lock has been acquired by the main thread at + least once, it should correctly block in any thread, + cooperating with the event loop of both threads. In certain + (hopefully rare) cases, it might be possible for contended + case to raise LoopExit when previously it would have raised + greenlet.error; if these cases are a practical concern, + please open an issue. + * Also, the underlying Semaphore always behaves in an atomic + fashion (as if the GIL was not released) when PURE_PYTHON is + set. Previously, it only correctly did so on PyPy. See + :issue:`issue1437`. + * Rename gevent's C accelerator extension modules using a + prefix to avoid clashing with other C extensions. See + :issue:`1480`. + * Using gevent.wait on an Event more than once, when that Event + is already set, could previously raise an AssertionError. + * As part of this, exceptions raised in the main greenlet will + now include a more complete traceback from the failing + greenlet. See :issue:`1540`. + * Avoid closing the same Python libuv watcher IO object twice. + Under some circumstances (only seen on Windows), that could + lead to program crashes. See :issue:`1587`. + * gevent can now be built using Cython 3.0a5 and newer. The + PyPI distribution uses this version. + * The libev extension was incompatible with this. As part of + this, certain internal, undocumented names have been changed. + * (Technically, gevent can be built with Cython 3.0a2 and + above. However, up through 3.0a4 compiling with Cython 3 + results in gevent's test for memory leaks failing. See this + Cython issue.) See :issue:`1599`. + * Destroying a hub after joining it didn't necessarily clean up + all resources associated with the hub, especially if the hub + had been created in a secondary thread that was exiting. The + hub and its parent greenlet could be kept alive. + * Now, destroying a hub drops the reference to the hub and + ensures it cannot be switched to again. (Though using a new + blocking API call may still create a new hub.) + * Joining a hub also cleans up some (small) memory resources + that might have stuck around for longer before as well. See + :issue:`1601`. + * Fix some potential crashes under libuv when using + gevent.signal_handler. The crashes were seen running the test + suite and were non-deterministic. See :issue:`1606`. + +- Update to version 20.5.0 (2020-05-01) + + Features + * Update bundled c-ares to version 1.16.0. Changes. See + :issue:`1588`. + * Update all the bundled config.guess and config.sub scripts. + See :issue:`1589`. + * Update bundled libuv from 1.34.0 to 1.36.0. See + :issue:`1597`. + + Bugfixes + * Use ares_getaddrinfo instead of a manual lookup. + * This requires c-ares 1.16.0. + * Note that this may change the results, in particular their + order. + * As part of this, certain parts of the c-ares extension were + adapted to use modern Cython idioms. + * A few minor errors and discrepancies were fixed as well, such + as gethostbyaddr('localhost') working on Python 3 and failing + on Python 2. The DNSpython resolver now raises the expected + TypeError in more cases instead of an AttributeError. See + :issue:`1012`. + * The c-ares and DNSPython resolvers now raise exceptions much + more consistently with the standard resolver. Types and + errnos are substantially more likely to match what the + standard library produces. + * Depending on the system and configuration, results may not + match exactly, at least with DNSPython. There are still some + rare cases where the system resolver can raise herror but + DNSPython will raise gaierror or vice versa. There doesn't + seem to be a deterministic way to account for this. On PyPy, + getnameinfo can produce results when CPython raises + socket.error, and gevent's DNSPython resolver also raises + socket.error. + * In addition, several other small discrepancies were + addressed, including handling of localhost and broadcast host + names. + * Note + * This has been tested on Linux (CentOS and Ubuntu), macOS, and + Windows. It hasn't been tested on other platforms, so results + are unknown for them. The c-ares support, in particular, is + using some additional socket functions and defines. Please + let the maintainers know if this introduces issues. + * See :issue:`1459`. + +- Update to version 20.04.0 (2020-04-22) + + Features + * Let CI (Travis and Appveyor) build and upload release wheels + for Windows, macOS and manylinux. As part of this, (a subset + of) gevent's tests can run if the standard library's + test.support module has been stripped. See :issue:`1555`. + * Update tested PyPy version from 7.2.0 on Windows to 7.3.1. + See :issue:`1569`. + + Bugfixes + * Fix a spurious warning about watchers and resource leaks on + libuv on Windows. Reported by Stéphane Rainville. See + :issue:`1564`. + * Make monkey-patching properly remove select.epoll and + select.kqueue. Reported by Kirill Smelkov. See :issue:`1570`. + * Make it possible to monkey-patch :mod:`contextvars` before + Python 3.7 if a non-standard backport that uses the same name + as the standard library does is installed. Previously this + would raise an error. Reported by Simon Davy. See + :issue:`1572`. + * Fix destroying the libuv default loop and then using the + default loop again. See :issue:`1580`. + * libuv loops that have watched children can now exit. + Previously, the SIGCHLD watcher kept the loop alive even if + there were no longer any watched children. See :issue:`1581`. + + Deprecations and Removals + * PyPy no longer uses the Python allocation functions for libuv + and libev allocations. See :issue:`1569`. + +- Use the system libev by default +- Remove fix-tests.patch +- Remove use-libev-cffi.patch +- Greatly reduce the list of non functional tests +- Add fix-no-return-in-nonvoid-function.patch, applied for 15.1 and + below in order to not fail the build +- Add missing runtime dependencies: + python-zope.event and python-zope.interface + +------------------------------------------------------------------- +Fri Jan 3 11:51:00 CET 2020 - Matej Cepl + +- Use bundled libev library to overcome the current + incompatibility with libev > 4.25. gh#gevent/gevent#1501 + +------------------------------------------------------------------- +Thu Jan 2 14:09:44 CET 2020 - Matej Cepl + +- Upgrade to 1.5a3: + - The file objects (FileObjectPosix, FileObjectThread) now + consistently text and binary modes. If neither 'b' nor 't' is + given in the mode, they will read and write native strings. + If 't' is given, they will always work with unicode strings, + and 'b' will always work with byte strings. (FileObjectPosix + already worked this way.) See :issue:`1441`. + - The file objects accept encoding, errors and newline + arguments. On Python 2, these are only used if 't' is in the + mode. + - The default mode for FileObjectPosix changed from rb to + simply r, for consistency with the other file objects and the + standard open and io.open functions. + - Fix FileObjectPosix improperly being used from multiple + greenlets. Previously this was hidden by forcing buffering, + which raised RuntimeError. + - Fix using monkey-patched threading.Lock and threading.RLock + objects as spin locks by making them call sleep(0) if they + failed to acquire the lock in a non-blocking call. This lets + other callbacks run to release the lock, simulating + preemptive threading. Using spin locks is not recommended, + but may have been done in code written for threads, + especially on Python 3. See :issue:`1464`. + - Fix Semaphore (and monkey-patched threading locks) to be + fair. This eliminates the rare potential for starvation of + greenlets. As part of this change, the low-level method + rawlink of Semaphore, Event, and AsyncResult now always + remove the link object when calling it, so unlink can + sometimes be optimized out. See :issue:`1487`. + - Make gevent.pywsgi support Connection: keep-alive in + HTTP/1.0. Based on :pr:`1331` by tanchuhan. + - Fix a potential crash using gevent.idle() when using libuv. + See :issue:`1489`. + - Fix some potential crashes using libuv async watchers. + - Make ThreadPool consistently raise InvalidThreadUseError when + spawn is called from a thread different than the thread that + created the threadpool. This has never been allowed, but was + inconsistently enforced. On gevent 1.3 and before, this would + always raise "greenlet error: invalid thread switch," or + LoopExit. On gevent 1.4, it could raise LoopExit, depending + on the number of tasks, but still, calling it from + a different thread was likely to corrupt libev or libuv + internals. + - Remove some undocumented, deprecated functions from the + threadpool module. + - libuv: Fix a perceived slowness spawning many greenlets at + the same time without yielding to the event loop while having + no active IO watchers or timers. If the time spent launching + greenlets exceeded the switch interval and there were no + other active watchers, then the default IO poll time of about + .3s would elapse between spawning batches. This could + theoretically apply for any non-switching callbacks. This can + be produced in synthetic benchmarks and other special + circumstances, but real applications are unlikely to be + affected. See :issue:`1493`. + - Fix using the threadpool inside a script or module run with + python -m gevent.monkey. Previously it would use greenlets + instead of native threads. See :issue:`1484`. + - Fix potential crashes in the FFI backends if a watcher was + closed and stopped in the middle of a callback from the event + loop and then raised an exception. This could happen if the + hub's handle_error function was poorly customized, for + example. See :issue:`1482` + - Make gevent.killall stop greenlets from running that hadn't + been run yet. This make it consistent with Greenlet.kill(). + See :issue:`1473` reported by kochelmonster. + - Make gevent.spawn_raw set the loop attribute on returned + greenlets. This lets them work with more gevent APIs, notably + gevent.killall(). They already had dictionaries, but this may + make them slightly larger, depending on platform (on CPython + 2.7 through 3.6 there is no apparent difference for one + attribute but on CPython 3.7 and 3.8 dictionaries are + initially empty and only allocate space once an attribute is + added; they're still smaller than on earlier versions + though). + - Add support for CPython 3.8.0. (Windows wheels are not yet + available.) + - Add an --module option to gevent.monkey allowing to run + a Python module rather than a script. See :pr:`1440`. + - Improve the way joining the main thread works on Python 3. + - Implement SSLSocket.verify_client_post_handshake() when + available. + - Fix tests when TLS1.3 is supported. + - Disable Nagle's algorithm in the backdoor server. This can + improve interactive response time. + - Test on Python 3.7.4. There are important SSL test fixes. + - Python version updates: gevent is now tested with CPython + 2.7.16, 3.5.6, 3.6.8, and 3.7.2. It is also tested with PyPy2 + 7.1 and PyPy 3.6 7.1 (PyPy 7.0 and 7.1 were not capable of + running SSL tests on Travis CI). + - Support for Python 3.4 has been removed, as that version is + no longer supported uptstream. + - gevent binary wheels are now manylinux2010 and include libuv + support. pip 19 is needed to install them. See :issue:`1346`. + - gevent is now compiled with Cython 0.29.6 and cffi 1.12.2. + - gevent sources include a pyproject.toml file, specifying the + build requirements and enabling build isolation. pip 18 or + above is needed to take advantage of this. See :issue:`1180`. + - libev-cffi: Let the compiler fill in the definition of + nlink_t for st_nlink in struct stat, instead of trying to + guess it ourself. Reported in :issue:`1372` by Andreas + Schwab. + - Remove the Makefile. Its most useful commands, make clean and + make distclean, can now be accomplished in a cross-platform + way using python setup.py clean and python setup.py clean -a, + respectively. The remainder of the Makefile contained Travis + CI commands that have been moved to .travis.yml. + - Deprecate the EMBED and LIBEV_EMBED, etc, build-time + environment variables. Instead, use GEVENTSETUP_EMBED and + GEVENTSETUP_EMBED_LIBEV. See :issue:`1402`. + - The CFFI backends now respect the embed build-time setting. + This allows building the libuv backend without embedding + libuv (except on Windows). + - Support test resources. This allows disabling tests that use + the network. See :ref:`limiting-test-resource-usage` for + more. + - Python 3.7 subprocess: Copy a STARTUPINFO passed as + a parameter. Contributed by AndCycle in :pr:`1352`. + - subprocess: WIFSTOPPED and SIGCHLD are now handled for + determining Popen.returncode. See + https://bugs.python.org/issue29335 + - subprocess: No longer close redirected FDs if they are in + pass_fds. This is a bugfix from Python 3.7 applied to all + versions gevent runs on. + - Fix certain operations on a Greenlet in an invalid state + (with an invalid parent) to raise a TypeError sooner rather + than an AttributeError later. This is also slightly faster on + CPython with Cython. Inspired by :issue:`1363` as reported by + Carson Ip. This means that some extreme corner cases that + might have passed by replacing a Greenlet's parent with + something that's not a gevent hub now no longer will. + - Fix: The spawning_stack for Greenlets on CPython should now + have correct line numbers in more cases. See :pr:`1379`. + - The result of gevent.ssl.SSLSocket.makefile() can be used as + a context manager on Python 2. + - Python 2: If the backport of the _thread_ module from futures + has already been imported at monkey-patch time, also patch + this module to be consistent. The pkg_resources package + imports this, and pkg_resources is often imported early on + Python 2 for namespace packages, so if futures is installed + this will likely be the case. + - Python 2: Avoid a memory leak when an io.BufferedWriter is + wrapped around a socket. Reported by Damien Tournoud in + :issue:`1318`. + - Avoid unbounded memory usage when creating very deep spawn + trees. Reported in :issue:`1371` by dmrlawson. + - Win: Make examples/process.py do something useful. See + :pr:`1378` by Robert Iannucci. + - Spawning greenlets can be up to 10% faster. See :pr:`1379`. +- Removed remove-testCongestion.patch which was subsumed in the + upstream tarball. + +------------------------------------------------------------------- +Thu Apr 11 14:20:20 UTC 2019 - Matej Cepl + +- Switch off type_https test as it fails with new Python 2.7.16 +- Clean up the SPEC file. + +------------------------------------------------------------------- +Mon Feb 18 12:09:52 UTC 2019 - Tomáš Chvátal + +- Skip the SSL tests as they just only triggers false positives + with hope upstream sorts it out someday + +------------------------------------------------------------------- +Mon Feb 11 11:02:21 UTC 2019 - Tomáš Chvátal + +- Switch to pkgconfig requirements as c-ares was renamed between + SLE12 and SLE15 + +------------------------------------------------------------------- +Mon Feb 4 11:37:48 UTC 2019 - Antonio Larrosa + +- Add patches to fix building the package: + * remove-testCongestion.patch to remove a test that is failing + due to a timeout + * fix-tests.patch to fix some tests + - ssl.OP_NO_COMPRESSION is set by default by ssl. + - thread_ident can be represented as a negative hex number now, + so replace the negative sign with the regex too, and not just the number. + * use-libev-cffi.patch, libev-cext seems to be broken on i586, so + use libev-cffi by default (also, the gevent documentation mentions + that upstream will make libev-cffi the default soon). + +------------------------------------------------------------------- +Fri Feb 1 10:35:13 UTC 2019 - Tomáš Chvátal + +- Make sure to skip tests that need network access + +------------------------------------------------------------------- +Thu Jan 31 09:42:44 UTC 2019 - Tomáš Chvátal + +- Version update to 1.4.0: + * generate with cython 0.29 + * Refactored the gevent test runner and test suite to make them more reusable. In particular, the tests are now run with python -m gevent.tests. See issue #1293. + * Formatting run info no longer includes gevent.local.local objects that have no value in the greenlet. See issue #1275. + * Fixed negative length in pywsgi’s Input read functions for non chunked body. Reported in issue #1274 by tzickel. + * Fix opening files in text mode in CPython 2 on Windows by patching libuv. See issue #1282 reported by wiggin15. + * gevent now depends on greenlet 0.4.14 or above. + * gevent.local.local subclasses correctly supports @staticmethod functions. Reported by Brendan Powers in issue #1266. +- Do NOT bundle c-ares and libev + +------------------------------------------------------------------- +Wed Jan 9 08:26:33 UTC 2019 - Tomáš Chvátal + +- Switch the condition logic to match the previous changelog + +------------------------------------------------------------------- +Wed Jan 9 00:10:41 UTC 2019 - Jonathan Brownell + +- Use "Requires:" instead of "Recommends:" on older Red Hat platforms + +------------------------------------------------------------------- +Tue Aug 7 15:22:15 UTC 2018 - toddrme2178@gmail.com + +- Update to 1.3.5 + * Update the bundled libuv from 1.20.1 to 1.22.0. + * Test Python 3.7 on Appveyor. Fix the handling of Popen's + ``close_fds`` argument on 3.7. + * Update Python versions tested on Travis, including PyPy to 6.0. See :issue:`1195`. + * :mod:`gevent.queue` imports ``_PySimpleQueue`` instead of + ``SimpleQueue`` so that it doesn't block the event loop. + :func:`gevent.monkey.patch_all` makes this same substitution in + :mod:`queue`. This fixes issues with + :class:`concurrent.futures.ThreadPoolExecutor` as well. Reported in + :issue:`1248` by wwqgtxx and :issue:`1251` by pyld. + * :meth:`gevent.socket.socket.connect` doesn't pass the port (service) + to :func:`socket.getaddrinfo` when it resolves an ``AF_INET`` or + ``AF_INET6`` address. (The standard library doesn't either.) This + fixes an issue on Solaris. Reported in :issue:`1252` by wiggin15. + * :meth:`gevent.socket.socket.connect` works with more address + families, notably AF_TIPC, AF_NETLINK, AF_BLUETOOTH, AF_ALG and AF_VSOCK. +- Update to 1.3.4 + * Be more careful about issuing ``MonkeyPatchWarning`` for ssl + imports. Now, we only issue it if we detect the one specific + condition that is known to lead to RecursionError. This may produce + false negatives, but should reduce or eliminate false positives. + * Based on measurements and discussion in :issue:`1233`, adjust the + way :mod:`gevent.pywsgi` generates HTTP chunks. This is intended to + reduce network overhead, especially for smaller chunk sizes. + * Additional slight performance improvements in :mod:`gevent.pywsgi`. + See :pr:`1241`. + +------------------------------------------------------------------- +Wed Jun 13 17:58:41 UTC 2018 - toddrme2178@gmail.com + +- Update to 1.3.3 + * :func:`gevent.sleep` updates the loop's notion of the current time + before sleeping so that sleep duration corresponds more closely to + elapsed (wall clock) time. :class:`gevent.Timeout` does the same. + Reported by champax and FoP in :issue:`1227`. + * Fix an ``UnboundLocalError`` in SSL servers when wrapping a socket + throws an error. Reported in :issue:`1236` by kochelmonster. +- Update to 1.3.2 + * Allow weak refeneces to :class:`gevent.queue.Queue`. Reported in + :issue:`1217` by githrdw. +- Update to 1.3.1 + * Allow weak references to :class:`gevent.event.Event`. Reported in + :issue:`1211` by Matias Guijarro. + * Fix embedded uses of :func:`gevent.Greenlet.spawn`, especially under + uwsgi. Reported in :issue:`1212` by Kunal Gangakhedkar. + * Fix :func:`gevent.os.nb_write` and :func:`gevent.os.nb_read` not + always closing the IO event they opened in the event of an + exception. This would be a problem especially for libuv. +- Update to 1.3.0 + + Dependencies + * Cython 0.28.2 is now used to build gevent from a source checkout. + * The bundled libuv is now 1.19.2, up from 1.18.0. + * On Windows, CFFI is now a dependency so that the libuv backend + really can be used by default. + * Cython 0.28b1 or later is now required to build gevent from a source + checkout (Cython is *not* required to build a source distribution + from PyPI). + * Update c-ares to 1.14.0. See :issue:`1105`. + * The bundled libuv is now 1.20.1, up from 1.19.2. See :issue:`1177`. + * gevent now **requires** the patched version of libuv it is + distributed with. Building gevent with a non-embedded libuv, while + not previously supported, is not possible now. See + :issue:`1126`. + * gevent is now built and tested with Cython 0.27. This is required + for Python 3.7 support. + * Update c-ares to 1.13.0. See :issue:`990`. + + Platform Support + * Travis CI tests on Python 3.7.0b3. + * Windows now defaults to the libuv backend if CFFI is installed. See + :issue:`1163`. + * Python 3.7 passes the automated memory leak checks. See :issue:`1197`. + * Python 3.7.0b4 is now the tested and supported version of Python + 3.7. PyPy 6.0 has been tested, although CI continues to use 5.10. + * Travis CI tests on Python 3.7.0b2 and PyPy 2.7 5.10.0 and PyPy 3.5 + 5.10.1. + * Add initial support for Python 3.7a3. It has the same level of + support as Python 3.6. + > Using unreleased Cython 0.28 and greenlet 0.4.13; requires Python 3.7a3. + > The ``async`` functions and classes have been renamed to + ``async_`` due to ``async`` becoming a keyword in Python 3.7. + Aliases are still in place for older versions. See :issue:`1047`. + * gevent is now tested on Python 3.6.4. This includes the following + fixes and changes: + > Errors raised from :mod:`gevent.subprocess` will have a + ``filename`` attribute set. + > The :class:`threading.Timer` class is now monkey-patched and can + be joined. Previously on Python 3.4 and above, joining a ``Timer`` + would hang the process. + > :meth:`gevent.ssl.SSLSocket.unwrap` behaves more like the standard + library, including returning a SSLSocket and allowing certain + timeout-related SSL errors to propagate. The added standard + library tests ``test_ftplib.py`` now passes. + > :class:`gevent.subprocess.Popen` accepts a "path-like object" for + the *cwd* parameter on all platforms. Previously this only worked + on POSIX platforms under Python 3.6. Now it also works on Windows under + Python 3.6 (as expected) and is backported to all previous versions. + * Linux CI now tests on PyPy3 3.5-5.9.0, updated from PyPy3 3.5-5.7.1. + See :issue:`1001`. PyPy2 has been updated to 5.9.0 from 5.7.1, + Python 2.7 has been updated to 2.7.14 from 2.7.13, Python 3.4 is + updated to 3.4.7 from 3.4.5, Python 3.5 is now 3.5.4 from 3.5.3, and + Python 3.6 is now 3.6.4 from 3.6.0. + * Drop support for Python 3.3. The documentation has only claimed + support for 3.4+ since gevent 1.2 was released, and only 3.4+ has + been tested. This merely removes the supporting Trove classifier and + remaining test code. See :issue:`997`. + * PyPy is now known to run on Windows using the libuv backend, with + caveats. See the section on libuv for more information. + * Due to security concerns, official support for Python 2.7.8 and + earlier (without a modern SSL implementation) has been dropped. + These versions are no longer tested with gevent, but gevent can + still be installed on them. Supporting code will be removed in the + next major version of gevent. See :issue:`1073`. + * `gevent.subprocess.Popen` uses ``/proc/self/fd`` (on Linux) or + ``/dev/fd`` (on BSD, including macOS) to find the file descriptors + to close when ``close_fds`` is true. This matches an optimization + added to Python 3 (and backports it to Python 2.7), making process + spawning up to 9 times faster. Also, on Python 3, since Python 3.3 + is no longer supported, we can also optimize the case where + ``close_fds`` is false (not the default), making process spawning up + to 38 times faster. Initially reported in :issue:`1172` by Ofer Koren. + + Bug Fixes + * :class:`gevent.local.local` subclasses that mix-in ABCs can be instantiated. + Reported in :issue:`1201` by Bob Jordan. + * Fix a bug detecting whether we can use the memory monitoring + features when psutil is not installed. + * On Python 2, when monkey-patching `threading.Event`, also + monkey-patch the underlying class, ``threading._Event``. Some code + may be type-checking for that. See :issue:`1136`. + * Fix libuv io watchers polling for events that only stopped watchers + are interested in, reducing CPU usage. Reported in :issue:`1144` by + wwqgtxx. + * Fix calling ``shutdown`` on a closed socket. It was raising + ``AttributeError``, now it once again raises the correct + ``socket.error``. Reported in :issue:`1089` by André Cimander. + * Fix an interpreter crash that could happen if two or more ``loop`` + objects referenced the default event loop and one of them was + destroyed and then the other one destroyed or (in the libev C + extension implementation only) deallocated (garbage collected). See + :issue:`1098`. + * Fix a race condition in libuv child callbacks. See :issue:`1104`. + * If a single greenlet created and destroyed many + :class:`gevent.local.local` objects without ever exiting, there + would be a leak of the function objects intended to clean up the + locals after the greenlet exited. Introduce a weak reference to + avoid that. Reported in :issue:`981` by Heungsub Lee. + * pywsgi also catches and ignores by default + :const:`errno.WSAECONNABORTED` on Windows. Initial patch in + :pr:`999` by Jan van Valburg. + * :meth:`gevent.subprocess.Popen.communicate` returns the correct type + of str (not bytes) in universal newline mode under Python 3, or when + an encoding has been specified. Initial patch in :pr:`939` by + William Grzybowski. + * :meth:`gevent.subprocess.Popen.communicate` (and in general, + accessing ``Popen.stdout`` and ``Popen.stderr``) returns the correct + type of str (bytes) in universal newline mode under Python 2. + Previously it always returned unicode strings. Reported in + :issue:`1039` by Michal Petrucha. + * :class:`gevent.fileobject.FileObjectPosix` returns native strings in + universal newline mode on Python 2. This is consistent with what + :class:`.FileObjectThread` does. See :issue:`1039`. + * ``socket.send()`` now catches ``EPROTOTYPE`` on macOS to handle a race + condition during shutdown. Fixed in :pr:`1035` by Jay Oster. + * :func:`gevent.socket.create_connection` now properly cleans up open + sockets if connecting or binding raises a :exc:`BaseException` like + :exc:`KeyboardInterrupt`, :exc:`greenlet.GreenletExit` or + :exc:`gevent.timeout.Timeout`. Reported in :issue:`1044` by + kochelmonster. + + Enhancements + * Add additional optimizations for spawning greenlets, making it + faster than 1.3a2. + * Use strongly typed watcher callbacks in the libuv CFFI extensions. + This prevents dozens of compiler warnings. + * When gevent prints a timestamp as part of an error message, it is + now in UTC format as specified by RFC3339. + * Threadpool threads that exit now always destroy their hub (if one + was created). This prevents some forms of resource leaks (notably + visible as blocking functions reported by the new monitoring abilities). + * Hub objects now include the value of their ``name`` attribute in + their repr. + * Pools for greenlets and threads have lower overhead, especially for + ``map``. See :pr:`1153`. + * The undocumented, internal implementation classes ``IMap`` and + ``IMapUnordered`` classes are now compiled with Cython, further + reducing the overhead of ``[Thread]Pool.imap``. + * The classes `gevent.event.Event` and `gevent.event.AsyncResult` + are compiled with Cython for improved performance, as is the + ``gevent.queue`` module and ``gevent.hub.Waiter`` and certain + time-sensitive parts of the hub itself. Please report any + compatibility issues. + * ``python -m gevent.monkey