Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-Twisted for openSUSE:Factory checked in at 2021-03-12 13:30:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-Twisted (Old) and /work/SRC/openSUSE:Factory/.python-Twisted.new.2401 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-Twisted" Fri Mar 12 13:30:22 2021 rev:45 rq:878146 version:21.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-Twisted/python-Twisted.changes 2021-03-02 15:26:10.521803684 +0100 +++ /work/SRC/openSUSE:Factory/.python-Twisted.new.2401/python-Twisted.changes 2021-03-12 13:30:32.830092508 +0100 @@ -1,0 +2,40 @@ +Wed Mar 10 06:11:42 UTC 2021 - Steve Kowalik <[email protected]> + +- Update to 21.2.0: + * Features + + The enableSessions argument to twisted.internet.ssl.CertificateOptions now + + actually enables/disables OpenSSL's session cache. Also, due to + + session-related bugs, it defaults to False. (#9583) + + twisted.internet.defer.inlineCallbacks and ensureDeferred will now associate a contextvars.Context with the coroutines they run, meaning that ContextVar objects will maintain their value within the same coroutine, similarly to asyncio Tasks. This functionality requires Python 3.7+, or the contextvars PyPI backport to be installed for Python 3.5-3.6. (#9719, #9826) + + twisted.internet.defer.Deferred.fromCoroutine has been added. This is similar to the existing ensureDeferred function, but is named more consistently inside Twisted and does not pass through Deferreds. (#9825) + + trial now allows the @unittest.skipIf decorator to specify that an entire test class should be skipped. (#9829) + + The twisted.python.deprecate.deprecatedKeywordParameter decorator can be used to mark a keyword paramater of a function or method as deprecated. (#9844) + + Projects using Twisted can now perform type checking against a Twisted + + installation, for example using mypy. (#9908) + + twisted.python.util.InsensitiveDict now fully implements MutableMapping. (#9919) + + Python 3.8 is now tested and supported. (#9955) + + Support a coroutine function in twisted.internet.task.react (#9974) + + PyPy 3.7 is now tested and supported. (#10093) + * Bugfixes + + twisted.web.twcgi.CGIProcessProtocol.processEnded(...) now handles an already-finished request, for example when request.connectionLost(...) was called previously. (#9468) + + Twisted's dependency on PyHamcrest has been moved from the base package to the new "test" extra. Consequently the test extra must be installed for Twisted's test suite to pass. (#9509) + + Fixed serialization of timedelta, date, and time objects in twisted.spread. (#9716) + + twisted.internet.asyncioreactor.AsyncioSelectorReactor now raises an exception if instantiated with an event loop which is not compatible with asyncio.SelectorEventLoop. This fixes the AsyncioSelectorReactor in Python 3.8+ on Windows, where in bp-34687 the default Windows asyncio event loop was changed to ProactorEventLoop. Applications that use AsyncioSelectorReactor on Windows with Python 3.8+ must call asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) before instantiating and running AsyncioSelectorReactor. (#9766) + + twisted.internet.process.registerReapProcessHandler and ._BaseProcess.reapProcess will no longer raise a TypeError when processing a None PID (#9775) + + INotify will close its file descriptor if a directory is automatically removed by twisted from the watchlist because it's deleted, avoiding orphaned filedescriptors. (#9777) + + DelayedCall.reset() is now working properly with asyncioreactor (#9780) + + AsyncioSelectorReactor.seconds() now correctly returns an epoch time. (#9787) + + The _connDone parameter has been removed from twisted.internet.abstract.FileDescriptor.loseConnection()'s signature in order to match the signature in the base class twisted.internet._newtls.ConnectionMixin loseConnection(). (#9849) + + The Gtk3 reactor now runs on Wayland-only sessions (#9904) + + Descriptive error messages from twisted.internet.error are now present when running with 'python -OO'. (#9918) + + Comparator methods such as eq() now always return NotImplemented for uncomparable types. (#9919) + + When installing Twisted it now requires a minimum Python 3.5.4 version to match the version used with automated testing. This is the minimum Python version that we know that Twisted works with. (#10098) +- Drop patches no-pygtkcompat.patch, python-38-hmac-digestmod.patch, + python-38-no-cgi-parseqs.patch, twisted-pr1369-remove-pyopenssl-npn.patch, + twisted-pr1487-increase-ffdh-keysize.patch and + test-mktime-invalid-tm_isdst.patch as they have been merged. +- Refresh other patches. +- Add no-cython_test_exception_raiser.patch to avoid another dependency. +- Update URL and make use of sitelib, not sitearch macros + +------------------------------------------------------------------- Old: ---- Twisted-20.3.0.tar.bz2 no-pygtkcompat.patch python-38-hmac-digestmod.patch python-38-no-cgi-parseqs.patch test-mktime-invalid-tm_isdst.patch twisted-pr1369-remove-pyopenssl-npn.patch twisted-pr1487-increase-ffdh-keysize.patch New: ---- Twisted-21.2.0.tar.gz no-cython_test_exception_raiser.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-Twisted.spec ++++++ --- /var/tmp/diff_new_pack.xal84a/_old 2021-03-12 13:30:33.722093759 +0100 +++ /var/tmp/diff_new_pack.xal84a/_new 2021-03-12 13:30:33.726093765 +0100 @@ -20,30 +20,23 @@ %define modname Twisted %define skip_python2 1 Name: python-Twisted -Version: 20.3.0 +Version: 21.2.0 Release: 0 Summary: An asynchronous networking framework written in Python License: MIT -Group: Development/Languages/Python URL: https://twistedmatrix.com/ -Source: https://files.pythonhosted.org/packages/source/T/Twisted/%{modname}-%{version}.tar.bz2 -Patch1: skip_MultiCast.patch -Patch2: no-pygtkcompat.patch -Patch3: test-mktime-invalid-tm_isdst.patch -Patch5: python-38-hmac-digestmod.patch -Patch6: python-38-no-cgi-parseqs.patch -Patch7: true-binary.patch +Source: https://files.pythonhosted.org/packages/source/T/Twisted/%{modname}-%{version}.tar.gz +Patch0: skip_MultiCast.patch +Patch1: true-binary.patch # PATCH-FIX-UPSTREAM no-test_successResultOfWithFailureHasTraceback.patch https://twistedmatrix.com/trac/ticket/9665 [email protected] # skip over the test test_successResultOfWithFailureHasTraceback -Patch8: no-test_successResultOfWithFailureHasTraceback.patch -# PATCH-FIX-UPSTREAM gh#twisted/twisted#1369 https://twistedmatrix.com/trac/ticket/9928 -Patch9: twisted-pr1369-remove-pyopenssl-npn.patch -# PATCH-FIX-UPSTRAM gh#twisted/twisted#1487 https://twistedmatrix.com/trac/ticket/10061 -Patch10: twisted-pr1487-increase-ffdh-keysize.patch +Patch2: no-test_successResultOfWithFailureHasTraceback.patch # PATCH-FIX-UPSTREAM 1521_delegate_parseqs_stdlib_bpo42967.patch https://twistedmatrix.com/trac/ticket/10096 [email protected] # overcome incompatibility with the solution for bpo#42967. -Patch0: 1521_delegate_parseqs_stdlib_bpo42967.patch -BuildRequires: %{python_module Automat >= 0.3.0} +Patch3: 1521_delegate_parseqs_stdlib_bpo42967.patch +# We don't want to package yet another module, and it is easily skippable +Patch4: no-cython_test_exception_raiser.patch +BuildRequires: %{python_module Automat >= 0.8.0} BuildRequires: %{python_module PyHamcrest >= 1.9.0} BuildRequires: %{python_module appdirs >= 1.4.0} BuildRequires: %{python_module attrs >= 19.2.0} @@ -66,8 +59,9 @@ BuildRequires: %{python_module setuptools} BuildRequires: %{python_module zope.interface >= 4.4.2} BuildRequires: fdupes +BuildRequires: git-core BuildRequires: python-rpm-macros -Requires: python-Automat >= 0.3.0 +Requires: python-Automat >= 0.8.0 Requires: python-PyHamcrest >= 1.9.0 Requires: python-appdirs >= 1.4.0 Requires: python-attrs >= 19.2.0 @@ -93,7 +87,6 @@ %package -n %{name}-doc Summary: An asynchronous networking framework written in Python - Documentation -Group: Development/Languages/Python %description -n %{name}-doc An extensible framework for Python programming, with special focus @@ -137,7 +130,7 @@ export OPENSSL_SYSTEM_CIPHERS_OVERRIDE=xyz_nonexistent_file export OPENSSL_CONF='' -%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m twisted.trial twisted +%python_expand PYTHONPATH=%{buildroot}%{$python_sitelib} $python -m twisted.trial twisted %post # these were master alternatives until Dec 2020. Remove before the install as slave links @@ -171,7 +164,7 @@ %python_alternative %{_mandir}/man1/pyhtmlizer.1%{?ext_man} %python_alternative %{_mandir}/man1/tkconch.1%{?ext_man} %python_alternative %{_mandir}/man1/trial.1%{?ext_man} -%{python_sitearch}/twisted -%{python_sitearch}/Twisted-%{version}*-info +%{python_sitelib}/twisted +%{python_sitelib}/Twisted-%{version}*-info %changelog ++++++ 1521_delegate_parseqs_stdlib_bpo42967.patch ++++++ --- /var/tmp/diff_new_pack.xal84a/_old 2021-03-12 13:30:33.750093798 +0100 +++ /var/tmp/diff_new_pack.xal84a/_new 2021-03-12 13:30:33.750093798 +0100 @@ -9,28 +9,22 @@ 2 files changed, 2 insertions(+), 26 deletions(-) create mode 100644 src/twisted/web/newsfragments/10096.bugfix ---- a/src/twisted/web/http.py -+++ b/src/twisted/web/http.py -@@ -70,12 +70,12 @@ from io import BytesIO as StringIO - - try: - from urlparse import ( -- ParseResult as ParseResultBytes, urlparse as _urlparse) -+ ParseResult as ParseResultBytes, urlparse as _urlparse, parse_qs) - from urllib import unquote - from cgi import parse_header as _parseHeader - except ImportError: - from urllib.parse import ( -- ParseResultBytes, urlparse as _urlparse, unquote_to_bytes as unquote) -+ ParseResultBytes, urlparse as _urlparse, parse_qs) - - def _parseHeader(line): - # cgi.parse_header requires a str -@@ -191,33 +191,6 @@ def urlparse(url): +Index: Twisted-21.2.0/src/twisted/web/http.py +=================================================================== +--- Twisted-21.2.0.orig/src/twisted/web/http.py ++++ Twisted-21.2.0/src/twisted/web/http.py +@@ -110,6 +110,7 @@ from urllib.parse import ( + ParseResultBytes, + urlparse as _urlparse, + unquote_to_bytes as unquote, ++ parse_qs, + ) + + from zope.interface import Attribute, Interface, implementer, provider +@@ -261,31 +262,6 @@ def urlparse(url): return ParseResultBytes(scheme, netloc, path, params, query, fragment) -- -def parse_qs(qs, keep_blank_values=0, strict_parsing=0): - """ - Like C{cgi.parse_qs}, but with support for parsing byte strings on Python 3. @@ -56,29 +50,29 @@ - return d - - -- def datetimeToString(msSinceEpoch=None): """ Convert seconds since epoch to HTTP datetime string. +Index: Twisted-21.2.0/src/twisted/web/newsfragments/10096.bugfix +=================================================================== --- /dev/null -+++ b/src/twisted/web/newsfragments/10096.bugfix ++++ Twisted-21.2.0/src/twisted/web/newsfragments/10096.bugfix @@ -0,0 +1 @@ +delegate to urllib.parse:parse_qs in twisted.web.http:parse_qs to avoid CVE-2021-23336 and the associated CI failures ---- a/src/twisted/web/server.py -+++ b/src/twisted/web/server.py -@@ -19,9 +19,9 @@ import copy - import os +Index: Twisted-21.2.0/src/twisted/web/server.py +=================================================================== +--- Twisted-21.2.0.orig/src/twisted/web/server.py ++++ Twisted-21.2.0/src/twisted/web/server.py +@@ -19,7 +19,7 @@ import os import re - try: -- from urllib import quote -+ from urllib import quote, unquote_to_bytes as _unquote_to_bytes - except ImportError: -- from urllib.parse import quote as _quote -+ from urllib.parse import quote as _quote, unquote_to_bytes as _unquote_to_bytes - - def quote(string, *args, **kwargs): - return _quote( -@@ -37,7 +37,6 @@ from twisted.spread.pb import Copyable, + from html import escape + from typing import List, Optional +-from urllib.parse import quote as _quote ++from urllib.parse import quote as _quote, unquote_to_bytes as _unquote_to_bytes + + import zlib + from binascii import hexlify +@@ -31,7 +31,6 @@ from twisted.spread.pb import Copyable, from twisted.internet import address, interfaces from twisted.internet.error import AlreadyCalled, AlreadyCancelled from twisted.web import iweb, http, util @@ -86,12 +80,12 @@ from twisted.python import reflect, failure, components from twisted import copyright from twisted.web import resource -@@ -219,7 +218,7 @@ class Request(Copyable, http.Request, co +@@ -213,7 +212,7 @@ class Request(Copyable, http.Request, co # Resource Identification self.prepath = [] -- self.postpath = list(map(unquote, self.path[1:].split(b'/'))) +- self.postpath = list(map(unquote, self.path[1:].split(b"/"))) + self.postpath = [_unquote_to_bytes(v) for v in self.path[1:].split(b"/")] # Short-circuit for requests whose path is '*'. - if self.path == b'*': + if self.path == b"*": ++++++ no-cython_test_exception_raiser.patch ++++++ Index: Twisted-21.2.0/src/twisted/test/test_failure.py =================================================================== --- Twisted-21.2.0.orig/src/twisted/test/test_failure.py +++ Twisted-21.2.0/src/twisted/test/test_failure.py @@ -22,7 +22,8 @@ from twisted.python import failure from twisted.trial.unittest import SynchronousTestCase -from cython_test_exception_raiser import raiser +#from cython_test_exception_raiser import raiser +raiser = None def getDivisionFailure(*args, **kwargs): ++++++ no-test_successResultOfWithFailureHasTraceback.patch ++++++ --- /var/tmp/diff_new_pack.xal84a/_old 2021-03-12 13:30:33.778093838 +0100 +++ /var/tmp/diff_new_pack.xal84a/_new 2021-03-12 13:30:33.778093838 +0100 @@ -2,21 +2,22 @@ src/twisted/conch/test/test_keys.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) ---- a/src/twisted/conch/test/test_keys.py -+++ b/src/twisted/conch/test/test_keys.py -@@ -6,6 +6,7 @@ Tests for L{twisted.conch.ssh.keys}. - """ - - from __future__ import absolute_import, division +Index: Twisted-21.2.0/src/twisted/conch/test/test_keys.py +=================================================================== +--- Twisted-21.2.0.orig/src/twisted/conch/test/test_keys.py ++++ Twisted-21.2.0/src/twisted/conch/test/test_keys.py +@@ -15,6 +15,7 @@ from twisted.python import randbytes + from twisted.python.filepath import FilePath + from twisted.python.reflect import requireModule + from twisted.trial import unittest +import unittest as pyunit - from twisted.python.reflect import requireModule -@@ -225,7 +226,8 @@ class KeyTests(unittest.TestCase): + cryptography = requireModule("cryptography") +@@ -253,6 +254,8 @@ class KeyTests(unittest.TestCase): for k, v in data.items(): self.assertEqual(privateKey.data()[k], v) -- + @pyunit.skip('Upstream ticket https://twistedmatrix.com/trac/ticket/9665' + + ' has still not been resolved.') def test_fromOpenSSH(self): ++++++ skip_MultiCast.patch ++++++ --- /var/tmp/diff_new_pack.xal84a/_old 2021-03-12 13:30:33.794093860 +0100 +++ /var/tmp/diff_new_pack.xal84a/_new 2021-03-12 13:30:33.794093860 +0100 @@ -1,12 +1,21 @@ -Index: Twisted-19.7.0/src/twisted/test/test_udp.py +Index: Twisted-21.2.0/src/twisted/test/test_udp.py =================================================================== ---- Twisted-19.7.0.orig/src/twisted/test/test_udp.py -+++ Twisted-19.7.0/src/twisted/test/test_udp.py -@@ -514,6 +514,7 @@ class MulticastTests(unittest.TestCase): - skip = "Does not work on Azure Pipelines" +--- Twisted-21.2.0.orig/src/twisted/test/test_udp.py ++++ Twisted-21.2.0/src/twisted/test/test_udp.py +@@ -9,7 +9,7 @@ Tests for implementations of L{IReactorU + + import os + +-from unittest import skipIf ++from unittest import skipIf, SkipTest + from twisted.trial.unittest import TestCase + + from twisted.internet.defer import Deferred, gatherResults, maybeDeferred +@@ -522,6 +522,7 @@ class MulticastTests(TestCase): + skip = "This reactor does not support multicast" def setUp(self): -+ raise unittest.SkipTest("Multicast networking doesn't work with OBS") ++ raise SkipTest("Multicast networking doesn't work with OBS") self.server = Server() self.client = Client() # multicast won't work if we listen over loopback, apparently ++++++ true-binary.patch ++++++ --- /var/tmp/diff_new_pack.xal84a/_old 2021-03-12 13:30:33.806093877 +0100 +++ /var/tmp/diff_new_pack.xal84a/_new 2021-03-12 13:30:33.806093877 +0100 @@ -1,22 +1,22 @@ -Index: Twisted-20.3.0/src/twisted/conch/test/test_ckeygen.py +Index: Twisted-21.2.0/src/twisted/conch/test/test_ckeygen.py =================================================================== ---- Twisted-20.3.0.orig/src/twisted/conch/test/test_ckeygen.py -+++ Twisted-20.3.0/src/twisted/conch/test/test_ckeygen.py -@@ -66,7 +66,7 @@ class KeyGenTests(TestCase): +--- Twisted-21.2.0.orig/src/twisted/conch/test/test_ckeygen.py ++++ Twisted-21.2.0/src/twisted/conch/test/test_ckeygen.py +@@ -73,7 +73,7 @@ class KeyGenTests(TestCase): def _testrun(self, keyType, keySize=None, privateKeySubtype=None): filename = self.mktemp() -- args = ['ckeygen', '-t', keyType, '-f', filename, '--no-passphrase'] -+ args = ['ckeygen-' + sys.version[:3], '-t', keyType, '-f', filename, '--no-passphrase'] +- args = ["ckeygen", "-t", keyType, "-f", filename, "--no-passphrase"] ++ args = ["ckeygen-" + sys.version[:3], "-t", keyType, "-f", filename, "--no-passphrase"] if keySize is not None: - args.extend(['-b', keySize]) + args.extend(["-b", keySize]) if privateKeySubtype is not None: -@@ -100,7 +100,7 @@ class KeyGenTests(TestCase): +@@ -107,7 +107,7 @@ class KeyGenTests(TestCase): def test_runBadKeytype(self): filename = self.mktemp() with self.assertRaises(subprocess.CalledProcessError): -- subprocess.check_call(['ckeygen', '-t', 'foo', '-f', filename]) -+ subprocess.check_call(['ckeygen-' + sys.version[:3], '-t', 'foo', '-f', filename]) - - +- subprocess.check_call(["ckeygen", "-t", "foo", "-f", filename]) ++ subprocess.check_call(["ckeygen-" + sys.version[:3], "-t", "foo", "-f", filename]) + def test_enumrepresentation(self): + """
