commit
3ec996ddb1
@ -0,0 +1 @@
|
||||
SOURCES/twisted-23.10.0.tar.gz
|
@ -0,0 +1 @@
|
||||
26b660dad1c80ad1ee821b651ca5e37c6d9f955a SOURCES/twisted-23.10.0.tar.gz
|
@ -0,0 +1,31 @@
|
||||
From 0bd00bf2fdb3d0039913a3ce747f20197f55c1aa Mon Sep 17 00:00:00 2001
|
||||
From: Adam Williamson <awilliam@redhat.com>
|
||||
Date: Fri, 27 Oct 2023 16:56:24 -0700
|
||||
Subject: [PATCH] Adjust to deprecation of 3-arg signature of generator.throw()
|
||||
|
||||
In Python 3.12, the 3-arg signature of generator.throw() is
|
||||
deprecated, you're only supposed to use the 1-arg signature
|
||||
where you pass only an exception instance. I *think* this is the
|
||||
right thing to pass in this case.
|
||||
|
||||
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||
---
|
||||
src/twisted/python/failure.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/twisted/python/failure.py b/src/twisted/python/failure.py
|
||||
index ca893ca4c9..c006d555e5 100644
|
||||
--- a/src/twisted/python/failure.py
|
||||
+++ b/src/twisted/python/failure.py
|
||||
@@ -516,7 +516,7 @@ class Failure(BaseException):
|
||||
"""
|
||||
# Note that the actual magic to find the traceback information
|
||||
# is done in _findFailure.
|
||||
- return g.throw(self.type, self.value, self.tb)
|
||||
+ return g.throw(self.value.with_traceback(self.tb))
|
||||
|
||||
@classmethod
|
||||
def _findFailure(cls):
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,181 @@
|
||||
diff -up twisted-twisted-23.10.0/src/twisted/conch/test/test_cftp.py.orig twisted-twisted-23.10.0/src/twisted/conch/test/test_cftp.py
|
||||
--- twisted-twisted-23.10.0/src/twisted/conch/test/test_cftp.py.orig 2023-10-31 01:14:47.000000000 -0600
|
||||
+++ twisted-twisted-23.10.0/src/twisted/conch/test/test_cftp.py 2023-10-31 19:40:05.091714294 -0600
|
||||
@@ -1436,6 +1436,7 @@ exit
|
||||
@skipIf(skipTests, "don't run w/o spawnProcess or cryptography")
|
||||
@skipIf(not which("ssh"), "no ssh command-line client available")
|
||||
@skipIf(not which("sftp"), "no sftp command-line client available")
|
||||
+@skipIf(True, "no networking in Fedora buildsystem")
|
||||
class OurServerSftpClientTests(CFTPClientTestBase):
|
||||
"""
|
||||
Test the sftp server against sftp command line client.
|
||||
@@ -1479,11 +1480,11 @@ class OurServerSftpClientTests(CFTPClien
|
||||
# first need to check if we can set it. If we can, -V will just print
|
||||
# the version without doing anything else; if we can't, we will get a
|
||||
# configuration error.
|
||||
- d = getProcessValue("ssh", ("-o", "PubkeyAcceptedKeyTypes=ssh-dss", "-V"), env)
|
||||
+ d = getProcessValue("ssh", ("-o", "PubkeyAcceptedKeyTypes=ssh-rsa", "-V"), env)
|
||||
|
||||
def hasPAKT(status):
|
||||
if status == 0:
|
||||
- args = ("-o", "PubkeyAcceptedKeyTypes=ssh-dss")
|
||||
+ args = ("-o", "PubkeyAcceptedKeyTypes=+ssh-rsa")
|
||||
else:
|
||||
args = ()
|
||||
# Pass -F /dev/null to avoid the user's configuration file from
|
||||
@@ -1497,7 +1498,9 @@ class OurServerSftpClientTests(CFTPClien
|
||||
"-o",
|
||||
"UserKnownHostsFile=kh_test",
|
||||
"-o",
|
||||
- "HostKeyAlgorithms=ssh-rsa",
|
||||
+ "HostKeyAlgorithms=+ssh-rsa",
|
||||
+ "-o",
|
||||
+ "PubkeyAcceptedKeyTypes=+ssh-rsa",
|
||||
"-o",
|
||||
"Port=%i" % (port,),
|
||||
"-b",
|
||||
diff -up twisted-twisted-23.10.0/src/twisted/conch/test/test_checkers.py.orig twisted-twisted-23.10.0/src/twisted/conch/test/test_checkers.py
|
||||
--- twisted-twisted-23.10.0/src/twisted/conch/test/test_checkers.py.orig 2023-10-31 01:14:47.000000000 -0600
|
||||
+++ twisted-twisted-23.10.0/src/twisted/conch/test/test_checkers.py 2023-10-31 19:40:05.092714302 -0600
|
||||
@@ -12,6 +12,8 @@ from collections import namedtuple
|
||||
from io import BytesIO
|
||||
from typing import Optional
|
||||
|
||||
+from unittest import skipIf
|
||||
+
|
||||
cryptSkip: Optional[str]
|
||||
try:
|
||||
import crypt
|
||||
@@ -53,6 +55,7 @@ else:
|
||||
euidSkip = "Cannot run without effective UIDs (questionable)"
|
||||
|
||||
|
||||
+@skipIf(True, "disable in Fedora buildsys")
|
||||
class HelperTests(TestCase):
|
||||
"""
|
||||
Tests for helper functions L{verifyCryptedPassword}, L{_pwdGetByName} and
|
||||
diff -up twisted-twisted-23.10.0/src/twisted/conch/test/test_conch.py.orig twisted-twisted-23.10.0/src/twisted/conch/test/test_conch.py
|
||||
--- twisted-twisted-23.10.0/src/twisted/conch/test/test_conch.py.orig 2023-10-31 01:14:47.000000000 -0600
|
||||
+++ twisted-twisted-23.10.0/src/twisted/conch/test/test_conch.py 2023-10-31 19:40:05.092714302 -0600
|
||||
@@ -421,7 +421,7 @@ class ForwardingMixin(ConchServerSetupMi
|
||||
localPort = self._getFreePort()
|
||||
process = ConchTestForwardingProcess(localPort, b"test\n")
|
||||
d = self.execute(
|
||||
- "", process, sshArgs="-N -L%i:127.0.0.1:%i" % (localPort, self.echoPort)
|
||||
+ "", process, sshArgs="-oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa -N -L%i:127.0.0.1:%i" % (localPort, self.echoPort)
|
||||
)
|
||||
d.addCallback(self.assertEqual, b"test\n")
|
||||
return d
|
||||
@@ -434,7 +434,7 @@ class ForwardingMixin(ConchServerSetupMi
|
||||
localPort = self._getFreePort()
|
||||
process = ConchTestForwardingProcess(localPort, b"test\n")
|
||||
d = self.execute(
|
||||
- "", process, sshArgs="-N -R %i:127.0.0.1:%i" % (localPort, self.echoPort)
|
||||
+ "", process, sshArgs="-oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa -N -R %i:127.0.0.1:%i" % (localPort, self.echoPort)
|
||||
)
|
||||
d.addCallback(self.assertEqual, b"test\n")
|
||||
return d
|
||||
@@ -572,12 +572,12 @@ class OpenSSHClientMixin:
|
||||
# the version without doing anything else; if we can't, we will get a
|
||||
# configuration error.
|
||||
d = getProcessValue(
|
||||
- which("ssh")[0], ("-o", "PubkeyAcceptedKeyTypes=ssh-dss", "-V")
|
||||
+ which("ssh")[0], ("-o", "PubkeyAcceptedKeyTypes=ssh-rsa", "-V")
|
||||
)
|
||||
|
||||
def hasPAKT(status):
|
||||
if status == 0:
|
||||
- opts = "-oPubkeyAcceptedKeyTypes=ssh-dss "
|
||||
+ opts = "-oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa "
|
||||
else:
|
||||
opts = ""
|
||||
|
||||
@@ -592,7 +592,8 @@ class OpenSSHClientMixin:
|
||||
"-oUserKnownHostsFile=kh_test "
|
||||
"-oPasswordAuthentication=no "
|
||||
# Always use the RSA key, since that's the one in kh_test.
|
||||
- "-oHostKeyAlgorithms=ssh-rsa "
|
||||
+ "-oHostKeyAlgorithms=+ssh-rsa "
|
||||
+ "-oPubkeyAcceptedKeyTypes=+ssh-rsa "
|
||||
"-a "
|
||||
"-i dsa_test "
|
||||
)
|
||||
@@ -614,6 +615,7 @@ class OpenSSHClientMixin:
|
||||
return d.addCallback(hasPAKT)
|
||||
|
||||
|
||||
+@skipIf(True, "broken on Fedora, possibly crypto policies")
|
||||
class OpenSSHKeyExchangeTests(ConchServerSetupMixin, OpenSSHClientMixin, TestCase):
|
||||
"""
|
||||
Tests L{SSHTransportBase}'s key exchange algorithm compatibility with
|
||||
@@ -706,6 +708,7 @@ class OpenSSHKeyExchangeTests(ConchServe
|
||||
)
|
||||
|
||||
|
||||
+@skipIf(True, "no networking in Fedora buildsystem")
|
||||
class OpenSSHClientForwardingTests(ForwardingMixin, OpenSSHClientMixin, TestCase):
|
||||
"""
|
||||
Connection forwarding tests run against the OpenSSL command line client.
|
||||
@@ -719,12 +722,13 @@ class OpenSSHClientForwardingTests(Forwa
|
||||
localPort = self._getFreePort()
|
||||
process = ConchTestForwardingProcess(localPort, b"test\n")
|
||||
d = self.execute(
|
||||
- "", process, sshArgs="-N -L%i:[::1]:%i" % (localPort, self.echoPortV6)
|
||||
+ "", process, sshArgs="-oHostKeyAlgorithms=+ssh-rsa -oPubkeyAcceptedKeyTypes=+ssh-rsa -N -L%i:[::1]:%i" % (localPort, self.echoPortV6)
|
||||
)
|
||||
d.addCallback(self.assertEqual, b"test\n")
|
||||
return d
|
||||
|
||||
|
||||
+@skipIf(True, "broken on Fedora, possibly crypto policies")
|
||||
class OpenSSHClientRekeyTests(RekeyTestsMixin, OpenSSHClientMixin, TestCase):
|
||||
"""
|
||||
Rekeying tests run against the OpenSSL command line client.
|
||||
@@ -755,6 +759,8 @@ class CmdLineClientTests(ForwardingMixin
|
||||
"--user-authentications publickey "
|
||||
"-a "
|
||||
"-i dsa_test "
|
||||
+ "-oHostKeyAlgorithms=+ssh-rsa "
|
||||
+ "-oPubkeyAcceptedKeyTypes=+ssh-rsa "
|
||||
"-v ".format(port) + sshArgs + " 127.0.0.1 " + remoteCommand
|
||||
)
|
||||
cmds = _makeArgs(conchArgs + cmd.split())
|
||||
diff -up twisted-twisted-23.10.0/src/twisted/test/test_failure.py.orig twisted-twisted-23.10.0/src/twisted/test/test_failure.py
|
||||
--- twisted-twisted-23.10.0/src/twisted/test/test_failure.py.orig 2023-10-31 01:14:47.000000000 -0600
|
||||
+++ twisted-twisted-23.10.0/src/twisted/test/test_failure.py 2023-10-31 19:40:05.093714309 -0600
|
||||
@@ -18,7 +18,10 @@ from types import TracebackType
|
||||
from typing import Any, Generator
|
||||
from unittest import skipIf
|
||||
|
||||
-from cython_test_exception_raiser import raiser # type: ignore[import]
|
||||
+try:
|
||||
+ from cython_test_exception_raiser import raiser # type: ignore[import]
|
||||
+except ImportError:
|
||||
+ raiser = None
|
||||
|
||||
from twisted.python import failure, reflect
|
||||
from twisted.trial.unittest import SynchronousTestCase
|
||||
diff -up twisted-twisted-23.10.0/src/twisted/test/test_main.py.orig twisted-twisted-23.10.0/src/twisted/test/test_main.py
|
||||
--- twisted-twisted-23.10.0/src/twisted/test/test_main.py.orig 2023-10-31 01:14:47.000000000 -0600
|
||||
+++ twisted-twisted-23.10.0/src/twisted/test/test_main.py 2023-10-31 19:40:05.093714309 -0600
|
||||
@@ -13,7 +13,9 @@ from twisted.internet import defer, reac
|
||||
from twisted.test.test_process import Accumulator
|
||||
from twisted.trial.unittest import TestCase
|
||||
|
||||
+from unittest import skipIf
|
||||
|
||||
+@skipIf(True, "PYTHONPATH lost on sub process, just skip these vs passing this in")
|
||||
class MainTests(TestCase):
|
||||
"""Test that twisted scripts can be invoked as modules."""
|
||||
|
||||
diff -up twisted-twisted-23.10.0/src/twisted/test/test_udp.py.orig twisted-twisted-23.10.0/src/twisted/test/test_udp.py
|
||||
--- twisted-twisted-23.10.0/src/twisted/test/test_udp.py.orig 2023-10-31 01:14:47.000000000 -0600
|
||||
+++ twisted-twisted-23.10.0/src/twisted/test/test_udp.py 2023-10-31 19:40:05.093714309 -0600
|
||||
@@ -599,6 +599,7 @@ class MulticastTests(TestCase):
|
||||
o.transport.setTTL(2)
|
||||
self.assertEqual(o.transport.getTTL(), 2)
|
||||
|
||||
+ @skipIf(True, "no networking in Fedora buildsystem")
|
||||
def test_loopback(self):
|
||||
"""
|
||||
Test that after loopback mode has been set, multicast packets are
|
@ -0,0 +1,179 @@
|
||||
From 3038382d8b01912358419cee96a56730499881e1 Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Mon, 18 Dec 2023 13:42:28 +0000
|
||||
Subject: [PATCH 1/4] Run with latest Python.
|
||||
|
||||
---
|
||||
.github/workflows/test.yaml | 6 +++---
|
||||
src/twisted/newsfragments/12052.1.misc | 0
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
create mode 100644 src/twisted/newsfragments/12052.1.misc
|
||||
|
||||
diff --git a/src/twisted/newsfragments/12052.1.misc b/src/twisted/newsfragments/12052.1.misc
|
||||
new file mode 100644
|
||||
index 00000000000..e69de29bb2d
|
||||
|
||||
From e208717cb5f9831a81d4e867c42cf66016bd70f6 Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Mon, 18 Dec 2023 13:43:02 +0000
|
||||
Subject: [PATCH 2/4] Add support for latest python 3.12.1 unittest skip
|
||||
method.
|
||||
|
||||
---
|
||||
src/twisted/trial/reporter.py | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/twisted/trial/reporter.py b/src/twisted/trial/reporter.py
|
||||
index 2664b2fe0d5..2f6b8909a0e 100644
|
||||
--- a/src/twisted/trial/reporter.py
|
||||
+++ b/src/twisted/trial/reporter.py
|
||||
@@ -96,6 +96,11 @@ class TestResult(pyunit.TestResult):
|
||||
expectedFailures: List[Tuple[itrial.ITestCase, str, "Todo"]] # type: ignore[assignment]
|
||||
unexpectedSuccesses: List[Tuple[itrial.ITestCase, str]] # type: ignore[assignment]
|
||||
successes: int
|
||||
+ # The time when the test was started.
|
||||
+ # It might be 0 if the tests was skipped, so never started.
|
||||
+ _testStarted: int
|
||||
+ # The duration of the test. It can be zero if tests was skipped.
|
||||
+ _lastTime: int
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
@@ -104,6 +109,8 @@ def __init__(self):
|
||||
self.unexpectedSuccesses = []
|
||||
self.successes = 0
|
||||
self._timings = []
|
||||
+ self._testStarted = 0
|
||||
+ self._lastTime = 0
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<%s run=%d errors=%d failures=%d todos=%d dones=%d skips=%d>" % (
|
||||
@@ -146,7 +153,8 @@ def stopTest(self, test):
|
||||
@type test: L{pyunit.TestCase}
|
||||
"""
|
||||
super().stopTest(test)
|
||||
- self._lastTime = self._getTime() - self._testStarted
|
||||
+ if self._testStarted:
|
||||
+ self._lastTime = self._getTime() - self._testStarted
|
||||
|
||||
def addFailure(self, test, fail):
|
||||
"""
|
||||
|
||||
From c14f5f8717a314b1cf70277f1ff766b1962865ec Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Tue, 19 Dec 2023 08:54:50 +0000
|
||||
Subject: [PATCH 3/4] Update after review.
|
||||
|
||||
---
|
||||
src/twisted/newsfragments/12052.1.misc | 0
|
||||
src/twisted/newsfragments/12052.removal | 4 ++++
|
||||
src/twisted/trial/reporter.py | 21 ++++++++++++---------
|
||||
3 files changed, 16 insertions(+), 9 deletions(-)
|
||||
delete mode 100644 src/twisted/newsfragments/12052.1.misc
|
||||
create mode 100644 src/twisted/newsfragments/12052.removal
|
||||
|
||||
diff --git a/src/twisted/newsfragments/12052.1.misc b/src/twisted/newsfragments/12052.1.misc
|
||||
deleted file mode 100644
|
||||
index e69de29bb2d..00000000000
|
||||
diff --git a/src/twisted/newsfragments/12052.removal b/src/twisted/newsfragments/12052.removal
|
||||
new file mode 100644
|
||||
index 00000000000..e236451bf57
|
||||
--- /dev/null
|
||||
+++ b/src/twisted/newsfragments/12052.removal
|
||||
@@ -0,0 +1,4 @@
|
||||
+twisted.trial.reporter.TestRun.startTest() is no longer called for tests
|
||||
+with skip annotation or skip attribute for Python 3.12.1 or newer.
|
||||
+This is the result of upstream Python gh-106584 change.
|
||||
+The behavior is not change in 3.12.0 or older.
|
||||
diff --git a/src/twisted/trial/reporter.py b/src/twisted/trial/reporter.py
|
||||
index 2f6b8909a0e..a0e0b8dc506 100644
|
||||
--- a/src/twisted/trial/reporter.py
|
||||
+++ b/src/twisted/trial/reporter.py
|
||||
@@ -7,7 +7,7 @@
|
||||
"""
|
||||
Defines classes that handle the results of tests.
|
||||
"""
|
||||
-
|
||||
+from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
@@ -16,7 +16,7 @@
|
||||
import warnings
|
||||
from collections import OrderedDict
|
||||
from types import TracebackType
|
||||
-from typing import TYPE_CHECKING, List, Tuple, Type, Union
|
||||
+from typing import TYPE_CHECKING, List, Optional, Tuple, Type, Union
|
||||
|
||||
from zope.interface import implementer
|
||||
|
||||
@@ -87,6 +87,11 @@ class TestResult(pyunit.TestResult):
|
||||
|
||||
@ivar successes: count the number of successes achieved by the test run.
|
||||
@type successes: C{int}
|
||||
+
|
||||
+ @ivar _startTime: The time when the current test was started. It defaults to
|
||||
+ L{None}, which means that the test was skipped.
|
||||
+ @ivar _lastTime: The duration of the current test run. It defaults to
|
||||
+ L{None}, which means that the test was skipped.
|
||||
"""
|
||||
|
||||
# Used when no todo provided to addExpectedFailure or addUnexpectedSuccess.
|
||||
@@ -96,11 +101,9 @@ class TestResult(pyunit.TestResult):
|
||||
expectedFailures: List[Tuple[itrial.ITestCase, str, "Todo"]] # type: ignore[assignment]
|
||||
unexpectedSuccesses: List[Tuple[itrial.ITestCase, str]] # type: ignore[assignment]
|
||||
successes: int
|
||||
- # The time when the test was started.
|
||||
- # It might be 0 if the tests was skipped, so never started.
|
||||
- _testStarted: int
|
||||
+ _testStarted: Optional[int]
|
||||
# The duration of the test. It can be zero if tests was skipped.
|
||||
- _lastTime: int
|
||||
+ _lastTime: Optional[int]
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
@@ -109,8 +112,8 @@ def __init__(self):
|
||||
self.unexpectedSuccesses = []
|
||||
self.successes = 0
|
||||
self._timings = []
|
||||
- self._testStarted = 0
|
||||
- self._lastTime = 0
|
||||
+ self._testStarted = None
|
||||
+ self._lastTime = None
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return "<%s run=%d errors=%d failures=%d todos=%d dones=%d skips=%d>" % (
|
||||
@@ -153,7 +156,7 @@ def stopTest(self, test):
|
||||
@type test: L{pyunit.TestCase}
|
||||
"""
|
||||
super().stopTest(test)
|
||||
- if self._testStarted:
|
||||
+ if self._testStarted is not None:
|
||||
self._lastTime = self._getTime() - self._testStarted
|
||||
|
||||
def addFailure(self, test, fail):
|
||||
|
||||
From 10e759a3c365cb4d07f5c8aacf608f63ffc92447 Mon Sep 17 00:00:00 2001
|
||||
From: Glyph <glyph@twistedmatrix.com>
|
||||
Date: Tue, 19 Dec 2023 13:13:22 -0500
|
||||
Subject: [PATCH 4/4] Update src/twisted/trial/reporter.py
|
||||
|
||||
Co-authored-by: Jean-Paul Calderone <exarkun@twistedmatrix.com>
|
||||
---
|
||||
src/twisted/trial/reporter.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/twisted/trial/reporter.py b/src/twisted/trial/reporter.py
|
||||
index a0e0b8dc506..a803c5103e0 100644
|
||||
--- a/src/twisted/trial/reporter.py
|
||||
+++ b/src/twisted/trial/reporter.py
|
||||
@@ -102,7 +102,7 @@ class TestResult(pyunit.TestResult):
|
||||
unexpectedSuccesses: List[Tuple[itrial.ITestCase, str]] # type: ignore[assignment]
|
||||
successes: int
|
||||
_testStarted: Optional[int]
|
||||
- # The duration of the test. It can be zero if tests was skipped.
|
||||
+ # The duration of the test. It is None until the test completes.
|
||||
_lastTime: Optional[int]
|
||||
|
||||
def __init__(self):
|
@ -0,0 +1,137 @@
|
||||
From 29353a92f01280ee2af3cc25ec80032db28a4e98 Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Tue, 16 Jan 2024 10:52:21 +0100
|
||||
Subject: [PATCH] Remove the usage of cgi.parse_multipart and replace with
|
||||
email module
|
||||
|
||||
---
|
||||
src/twisted/web/http.py | 87 ++++++++++++++++++++---------------------
|
||||
1 file changed, 42 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/src/twisted/web/http.py b/src/twisted/web/http.py
|
||||
index 2bad147..d4b12d8 100644
|
||||
--- a/src/twisted/web/http.py
|
||||
+++ b/src/twisted/web/http.py
|
||||
@@ -100,13 +100,14 @@ __all__ = [
|
||||
import base64
|
||||
import binascii
|
||||
import calendar
|
||||
-import cgi
|
||||
import math
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
import time
|
||||
import warnings
|
||||
+from email import message_from_bytes
|
||||
+from email.message import EmailMessage
|
||||
from io import BytesIO
|
||||
from typing import AnyStr, Callable, List, Optional, Tuple
|
||||
from urllib.parse import (
|
||||
@@ -224,15 +225,40 @@ weekdayname_lower = [name.lower() for name in weekdayname]
|
||||
monthname_lower = [name and name.lower() for name in monthname]
|
||||
|
||||
|
||||
-def _parseHeader(line):
|
||||
- # cgi.parse_header requires a str
|
||||
- key, pdict = cgi.parse_header(line.decode("charmap"))
|
||||
+def _parseContentType(line: bytes) -> bytes:
|
||||
+ """
|
||||
+ Parse the Content-Type header.
|
||||
+ """
|
||||
+ msg = EmailMessage()
|
||||
+ msg["content-type"] = line.decode("charmap")
|
||||
+ key = msg.get_content_type()
|
||||
+ encodedKey = key.encode("charmap")
|
||||
+ return encodedKey
|
||||
+
|
||||
+
|
||||
+class _MultiPartParseException(Exception):
|
||||
+ """
|
||||
+ Failed to parse the multipart/form-data payload.
|
||||
+ """
|
||||
+
|
||||
|
||||
- # We want the key as bytes, and cgi.parse_multipart (which consumes
|
||||
- # pdict) expects a dict of str keys but bytes values
|
||||
- key = key.encode("charmap")
|
||||
- pdict = {x: y.encode("charmap") for x, y in pdict.items()}
|
||||
- return (key, pdict)
|
||||
+def _getMultiPartArgs(content, ctype):
|
||||
+ """
|
||||
+ Parse the content of a multipart/form-data request.
|
||||
+ """
|
||||
+ result = {}
|
||||
+ multiPartHeaders = b"MIME-Version: 1.0\r\n" + b"Content-Type: " + ctype + b"\r\n"
|
||||
+ msg = message_from_bytes(multiPartHeaders + content)
|
||||
+ if not msg.is_multipart():
|
||||
+ raise _MultiPartParseException("Not a multipart.")
|
||||
+
|
||||
+ for part in msg.get_payload():
|
||||
+ name = part.get_param("name", header="content-disposition")
|
||||
+ if not name:
|
||||
+ continue
|
||||
+ payload = part.get_payload(decode=True)
|
||||
+ result[name.encode("utf8")] = [payload]
|
||||
+ return result
|
||||
|
||||
|
||||
def urlparse(url):
|
||||
@@ -973,47 +999,18 @@ class Request:
|
||||
|
||||
if self.method == b"POST" and ctype and clength:
|
||||
mfd = b"multipart/form-data"
|
||||
- key, pdict = _parseHeader(ctype)
|
||||
- # This weird CONTENT-LENGTH param is required by
|
||||
- # cgi.parse_multipart() in some versions of Python 3.7+, see
|
||||
- # bpo-29979. It looks like this will be relaxed and backported, see
|
||||
- # https://github.com/python/cpython/pull/8530.
|
||||
- pdict["CONTENT-LENGTH"] = clength
|
||||
+ key = _parseContentType(ctype)
|
||||
if key == b"application/x-www-form-urlencoded":
|
||||
args.update(parse_qs(self.content.read(), 1))
|
||||
elif key == mfd:
|
||||
try:
|
||||
- cgiArgs = cgi.parse_multipart(
|
||||
- self.content,
|
||||
- pdict,
|
||||
- encoding="utf8",
|
||||
- errors="surrogateescape",
|
||||
- )
|
||||
-
|
||||
- # The parse_multipart function on Python 3.7+
|
||||
- # decodes the header bytes as iso-8859-1 and
|
||||
- # decodes the body bytes as utf8 with
|
||||
- # surrogateescape -- we want bytes
|
||||
- self.args.update(
|
||||
- {
|
||||
- x.encode("iso-8859-1"): [
|
||||
- z.encode("utf8", "surrogateescape")
|
||||
- if isinstance(z, str)
|
||||
- else z
|
||||
- for z in y
|
||||
- ]
|
||||
- for x, y in cgiArgs.items()
|
||||
- if isinstance(x, str)
|
||||
- }
|
||||
- )
|
||||
- except Exception as e:
|
||||
- # It was a bad request, or we got a signal.
|
||||
+ self.content.seek(0)
|
||||
+ content = self.content.read()
|
||||
+ self.args.update(_getMultiPartArgs(content, ctype))
|
||||
+ except _MultiPartParseException:
|
||||
+ # It was a bad request.
|
||||
self.channel._respondToBadRequestAndDisconnect()
|
||||
- if isinstance(e, (TypeError, ValueError, KeyError)):
|
||||
- return
|
||||
- else:
|
||||
- # If it's not a userspace error from CGI, reraise
|
||||
- raise
|
||||
+ return
|
||||
|
||||
self.content.seek(0, 0)
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,42 @@
|
||||
From 5a45846df7bc8cbc683b2b19ba11d20bb7f6fdf1 Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Tue, 16 Jan 2024 14:42:20 +0100
|
||||
Subject: [PATCH] Update dis.findlinestarts for Python 3.13
|
||||
|
||||
---
|
||||
src/twisted/python/deprecate.py | 6 +++++-
|
||||
src/twisted/trial/_synctest.py | 1 +
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/twisted/python/deprecate.py b/src/twisted/python/deprecate.py
|
||||
index c85b98d..08d37eb 100644
|
||||
--- a/src/twisted/python/deprecate.py
|
||||
+++ b/src/twisted/python/deprecate.py
|
||||
@@ -606,7 +606,11 @@ def warnAboutFunction(offender, warningString):
|
||||
warningString,
|
||||
category=DeprecationWarning,
|
||||
filename=inspect.getabsfile(offenderModule),
|
||||
- lineno=max(lineNumber for _, lineNumber in findlinestarts(offender.__code__)),
|
||||
+ lineno=max(
|
||||
+ lineNumber
|
||||
+ for _, lineNumber in findlinestarts(offender.__code__)
|
||||
+ if lineNumber is not None
|
||||
+ ),
|
||||
module=offenderModule.__name__,
|
||||
registry=offender.__globals__.setdefault("__warningregistry__", {}),
|
||||
module_globals=None,
|
||||
diff --git a/src/twisted/trial/_synctest.py b/src/twisted/trial/_synctest.py
|
||||
index 2cffc2c..8d8e9b1 100644
|
||||
--- a/src/twisted/trial/_synctest.py
|
||||
+++ b/src/twisted/trial/_synctest.py
|
||||
@@ -1192,6 +1192,7 @@ class SynchronousTestCase(_Assertions):
|
||||
lineNumbers = [
|
||||
lineNumber
|
||||
for _, lineNumber in _findlinestarts(aFunction.__code__)
|
||||
+ if lineNumber is not None
|
||||
]
|
||||
if not (min(lineNumbers) <= aWarning.lineno <= max(lineNumbers)):
|
||||
continue
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,286 @@
|
||||
From e5473d7575dfe12c43fa0cc9ca80df22b276742f Mon Sep 17 00:00:00 2001
|
||||
From: eevelweezel <eevel.weezel@gmail.com>
|
||||
Date: Wed, 24 Jan 2024 22:00:31 -0600
|
||||
Subject: [PATCH 1/4] fix inlinecb tests
|
||||
|
||||
---
|
||||
src/twisted/internet/test/test_inlinecb.py | 71 ++++++++++++++++++++++
|
||||
1 file changed, 71 insertions(+)
|
||||
|
||||
diff --git a/src/twisted/internet/test/test_inlinecb.py b/src/twisted/internet/test/test_inlinecb.py
|
||||
index a8fcc77351d..1ab00df4230 100644
|
||||
--- a/src/twisted/internet/test/test_inlinecb.py
|
||||
+++ b/src/twisted/internet/test/test_inlinecb.py
|
||||
@@ -9,6 +9,8 @@
|
||||
well.
|
||||
"""
|
||||
|
||||
+import sys
|
||||
+from unittest import skipIf
|
||||
|
||||
from twisted.internet.defer import (
|
||||
CancelledError,
|
||||
@@ -126,6 +128,7 @@ def inline():
|
||||
|
||||
|
||||
class ForwardTraceBackTests(SynchronousTestCase):
|
||||
+ @skipIf(sys.version_info > (3, 12), 'applies to Python 3.12 and older')
|
||||
def test_forwardTracebacks(self):
|
||||
"""
|
||||
Chained inlineCallbacks are forwarding the traceback information
|
||||
@@ -150,6 +153,32 @@ def calling():
|
||||
self.assertIn("in calling", tb)
|
||||
self.assertIn("Error Marker", tb)
|
||||
|
||||
+ @skipIf(sys.version_info < (3, 13), 'new in Python 3.13')
|
||||
+ def test_forwardTracebacks313(self):
|
||||
+ """
|
||||
+ Chained inlineCallbacks are forwarding the traceback information
|
||||
+ from generator to generator.
|
||||
+
|
||||
+ A first simple test with a couple of inline callbacks.
|
||||
+ """
|
||||
+
|
||||
+ @inlineCallbacks
|
||||
+ def erroring():
|
||||
+ yield "forcing generator"
|
||||
+ raise Exception("Error Marker")
|
||||
+
|
||||
+ @inlineCallbacks
|
||||
+ def calling():
|
||||
+ yield erroring()
|
||||
+
|
||||
+ d = calling()
|
||||
+ f = self.failureResultOf(d)
|
||||
+ tb = f.getTraceback()
|
||||
+ self.assertIn("yield erroring", tb)
|
||||
+ self.assertIn("in calling", tb)
|
||||
+ self.assertIn("Error Marker", tb)
|
||||
+
|
||||
+ @skipIf(sys.version_info > (3, 12), 'applies to Python 3.12 and older')
|
||||
def test_forwardLotsOfTracebacks(self):
|
||||
"""
|
||||
Several Chained inlineCallbacks gives information about all generators.
|
||||
@@ -197,6 +226,48 @@ def calling():
|
||||
self.assertIn("Error Marker", tb)
|
||||
self.assertIn("in erroring", f.getTraceback())
|
||||
|
||||
+ @skipIf(sys.version_info < (3, 13), 'new in Python 3.13')
|
||||
+ def test_forwardLotsOfTracebacks313(self):
|
||||
+ """
|
||||
+ Several Chained inlineCallbacks gives information about all generators.
|
||||
+
|
||||
+ A wider test with a 4 chained inline callbacks.
|
||||
+
|
||||
+ Note that the previous test is testing the simple case, and this one is
|
||||
+ testing the deep recursion case.
|
||||
+
|
||||
+ That case needs specific code in failure.py to accomodate to stack
|
||||
+ breakage introduced by throwExceptionIntoGenerator.
|
||||
+
|
||||
+ Hence we keep the two tests in order to sort out which code we
|
||||
+ might have regression in.
|
||||
+ """
|
||||
+
|
||||
+ @inlineCallbacks
|
||||
+ def erroring():
|
||||
+ yield "forcing generator"
|
||||
+ raise Exception("Error Marker")
|
||||
+
|
||||
+ @inlineCallbacks
|
||||
+ def calling3():
|
||||
+ yield erroring()
|
||||
+
|
||||
+ @inlineCallbacks
|
||||
+ def calling2():
|
||||
+ yield calling3()
|
||||
+
|
||||
+ @inlineCallbacks
|
||||
+ def calling():
|
||||
+ yield calling2()
|
||||
+
|
||||
+ d = calling()
|
||||
+ f = self.failureResultOf(d)
|
||||
+ tb = f.getTraceback()
|
||||
+ self.assertIn("in calling", tb)
|
||||
+ self.assertIn("yield calling2", tb)
|
||||
+ self.assertIn("throwExceptionIntoGenerator", tb)
|
||||
+ self.assertIn("Error Marker", tb)
|
||||
+
|
||||
|
||||
class UntranslatedError(Exception):
|
||||
"""
|
||||
|
||||
From 1545ecae0b73cbdf80a83816cb2cf7beb701c9ee Mon Sep 17 00:00:00 2001
|
||||
From: eevelweezel <eevel.weezel@gmail.com>
|
||||
Date: Wed, 24 Jan 2024 22:06:04 -0600
|
||||
Subject: [PATCH 2/4] add newsfragment
|
||||
|
||||
---
|
||||
src/twisted/newsfragments/12061.misc | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
create mode 100644 src/twisted/newsfragments/12061.misc
|
||||
|
||||
diff --git a/src/twisted/newsfragments/12061.misc b/src/twisted/newsfragments/12061.misc
|
||||
new file mode 100644
|
||||
index 00000000000..4880acc97d9
|
||||
--- /dev/null
|
||||
+++ b/src/twisted/newsfragments/12061.misc
|
||||
@@ -0,0 +1 @@
|
||||
+Make inline callback tests compatible with 3.13.
|
||||
|
||||
From 0e5b1896b99cddcab47ed0f7963837a3242f8a3e Mon Sep 17 00:00:00 2001
|
||||
From: eevelweezel <eevel.weezel@gmail.com>
|
||||
Date: Wed, 24 Jan 2024 22:33:26 -0600
|
||||
Subject: [PATCH 3/4] fix tests in light of codecoverage
|
||||
|
||||
---
|
||||
src/twisted/internet/test/test_inlinecb.py | 82 +---------------------
|
||||
1 file changed, 3 insertions(+), 79 deletions(-)
|
||||
|
||||
diff --git a/src/twisted/internet/test/test_inlinecb.py b/src/twisted/internet/test/test_inlinecb.py
|
||||
index 1ab00df4230..2efdd68d2d2 100644
|
||||
--- a/src/twisted/internet/test/test_inlinecb.py
|
||||
+++ b/src/twisted/internet/test/test_inlinecb.py
|
||||
@@ -9,8 +9,6 @@
|
||||
well.
|
||||
"""
|
||||
|
||||
-import sys
|
||||
-from unittest import skipIf
|
||||
|
||||
from twisted.internet.defer import (
|
||||
CancelledError,
|
||||
@@ -128,7 +126,6 @@ def inline():
|
||||
|
||||
|
||||
class ForwardTraceBackTests(SynchronousTestCase):
|
||||
- @skipIf(sys.version_info > (3, 12), 'applies to Python 3.12 and older')
|
||||
def test_forwardTracebacks(self):
|
||||
"""
|
||||
Chained inlineCallbacks are forwarding the traceback information
|
||||
@@ -149,89 +146,17 @@ def calling():
|
||||
d = calling()
|
||||
f = self.failureResultOf(d)
|
||||
tb = f.getTraceback()
|
||||
- self.assertIn("in erroring", tb)
|
||||
+ self.assertIn("erroring", tb)
|
||||
self.assertIn("in calling", tb)
|
||||
self.assertIn("Error Marker", tb)
|
||||
|
||||
- @skipIf(sys.version_info < (3, 13), 'new in Python 3.13')
|
||||
- def test_forwardTracebacks313(self):
|
||||
- """
|
||||
- Chained inlineCallbacks are forwarding the traceback information
|
||||
- from generator to generator.
|
||||
-
|
||||
- A first simple test with a couple of inline callbacks.
|
||||
- """
|
||||
-
|
||||
- @inlineCallbacks
|
||||
- def erroring():
|
||||
- yield "forcing generator"
|
||||
- raise Exception("Error Marker")
|
||||
-
|
||||
- @inlineCallbacks
|
||||
- def calling():
|
||||
- yield erroring()
|
||||
-
|
||||
- d = calling()
|
||||
- f = self.failureResultOf(d)
|
||||
- tb = f.getTraceback()
|
||||
- self.assertIn("yield erroring", tb)
|
||||
- self.assertIn("in calling", tb)
|
||||
- self.assertIn("Error Marker", tb)
|
||||
-
|
||||
- @skipIf(sys.version_info > (3, 12), 'applies to Python 3.12 and older')
|
||||
def test_forwardLotsOfTracebacks(self):
|
||||
"""
|
||||
Several Chained inlineCallbacks gives information about all generators.
|
||||
|
||||
A wider test with a 4 chained inline callbacks.
|
||||
|
||||
- Application stack-trace should be reported, and implementation details
|
||||
- like "throwExceptionIntoGenerator" symbols are omitted from the stack.
|
||||
-
|
||||
- Note that the previous test is testing the simple case, and this one is
|
||||
- testing the deep recursion case.
|
||||
-
|
||||
- That case needs specific code in failure.py to accomodate to stack
|
||||
- breakage introduced by throwExceptionIntoGenerator.
|
||||
-
|
||||
- Hence we keep the two tests in order to sort out which code we
|
||||
- might have regression in.
|
||||
- """
|
||||
-
|
||||
- @inlineCallbacks
|
||||
- def erroring():
|
||||
- yield "forcing generator"
|
||||
- raise Exception("Error Marker")
|
||||
-
|
||||
- @inlineCallbacks
|
||||
- def calling3():
|
||||
- yield erroring()
|
||||
-
|
||||
- @inlineCallbacks
|
||||
- def calling2():
|
||||
- yield calling3()
|
||||
-
|
||||
- @inlineCallbacks
|
||||
- def calling():
|
||||
- yield calling2()
|
||||
-
|
||||
- d = calling()
|
||||
- f = self.failureResultOf(d)
|
||||
- tb = f.getTraceback()
|
||||
- self.assertIn("in erroring", tb)
|
||||
- self.assertIn("in calling", tb)
|
||||
- self.assertIn("in calling2", tb)
|
||||
- self.assertIn("in calling3", tb)
|
||||
- self.assertNotIn("throwExceptionIntoGenerator", tb)
|
||||
- self.assertIn("Error Marker", tb)
|
||||
- self.assertIn("in erroring", f.getTraceback())
|
||||
-
|
||||
- @skipIf(sys.version_info < (3, 13), 'new in Python 3.13')
|
||||
- def test_forwardLotsOfTracebacks313(self):
|
||||
- """
|
||||
- Several Chained inlineCallbacks gives information about all generators.
|
||||
-
|
||||
- A wider test with a 4 chained inline callbacks.
|
||||
+ Application stack-trace should be reported.
|
||||
|
||||
Note that the previous test is testing the simple case, and this one is
|
||||
testing the deep recursion case.
|
||||
@@ -264,8 +189,7 @@ def calling():
|
||||
f = self.failureResultOf(d)
|
||||
tb = f.getTraceback()
|
||||
self.assertIn("in calling", tb)
|
||||
- self.assertIn("yield calling2", tb)
|
||||
- self.assertIn("throwExceptionIntoGenerator", tb)
|
||||
+ self.assertIn("calling2", tb)
|
||||
self.assertIn("Error Marker", tb)
|
||||
|
||||
|
||||
|
||||
From 6376bbc5193ec055ec4abcc3b13da8b3934f652a Mon Sep 17 00:00:00 2001
|
||||
From: eevelweezel <eevel.weezel@gmail.com>
|
||||
Date: Wed, 24 Jan 2024 22:47:16 -0600
|
||||
Subject: [PATCH 4/4] typo
|
||||
|
||||
---
|
||||
src/twisted/internet/test/test_inlinecb.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/twisted/internet/test/test_inlinecb.py b/src/twisted/internet/test/test_inlinecb.py
|
||||
index 2efdd68d2d2..3983767a464 100644
|
||||
--- a/src/twisted/internet/test/test_inlinecb.py
|
||||
+++ b/src/twisted/internet/test/test_inlinecb.py
|
||||
@@ -154,7 +154,7 @@ def test_forwardLotsOfTracebacks(self):
|
||||
"""
|
||||
Several Chained inlineCallbacks gives information about all generators.
|
||||
|
||||
- A wider test with a 4 chained inline callbacks.
|
||||
+ A wider test with 4 chained inline callbacks.
|
||||
|
||||
Application stack-trace should be reported.
|
||||
|
@ -0,0 +1,24 @@
|
||||
From dba8a12453f55ff783ed43d0b4b11163a828bc86 Mon Sep 17 00:00:00 2001
|
||||
From: Karolina Surma <ksurma@redhat.com>
|
||||
Date: Tue, 30 Jan 2024 14:51:32 +0100
|
||||
Subject: [PATCH] Account with the new traceback pointing characters
|
||||
|
||||
---
|
||||
src/twisted/web/test/test_flatten.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/twisted/web/test/test_flatten.py b/src/twisted/web/test/test_flatten.py
|
||||
index effe153..d05d032 100644
|
||||
--- a/src/twisted/web/test/test_flatten.py
|
||||
+++ b/src/twisted/web/test/test_flatten.py
|
||||
@@ -655,6 +655,7 @@ class FlattenerErrorTests(SynchronousTestCase):
|
||||
"Exception while flattening:\n"
|
||||
' File "%s", line %d, in f\n'
|
||||
" g()\n"
|
||||
+ ' ~^^\n'
|
||||
' File "%s", line %d, in g\n'
|
||||
' raise RuntimeError("reason")\n'
|
||||
"RuntimeError: reason\n"
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,91 @@
|
||||
From 6727de0ec58892c32ae848b17f799fc4ee80de68 Mon Sep 17 00:00:00 2001
|
||||
From: Karolina Surma <ksurma@redhat.com>
|
||||
Date: Mon, 3 Jun 2024 13:39:29 +0200
|
||||
Subject: [PATCH] Work around the test_flatten failures
|
||||
|
||||
---
|
||||
src/twisted/test/test_failure.py | 4 +++-
|
||||
src/twisted/web/_flatten.py | 3 ++-
|
||||
src/twisted/web/test/test_cgi.py | 2 ++
|
||||
src/twisted/web/test/test_flatten.py | 2 ++
|
||||
4 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/twisted/test/test_failure.py b/src/twisted/test/test_failure.py
|
||||
index 10d9542..9feb74a 100644
|
||||
--- a/src/twisted/test/test_failure.py
|
||||
+++ b/src/twisted/test/test_failure.py
|
||||
@@ -16,7 +16,7 @@ from io import StringIO
|
||||
from traceback import FrameSummary
|
||||
from types import TracebackType
|
||||
from typing import Any, Generator
|
||||
-from unittest import skipIf
|
||||
+from unittest import skipIf, skip
|
||||
|
||||
try:
|
||||
from cython_test_exception_raiser import raiser # type: ignore[import]
|
||||
@@ -942,6 +942,8 @@ class ExtendedGeneratorTests(SynchronousTestCase):
|
||||
|
||||
self.assertEqual(traceback.extract_tb(stuff[0][2])[-1][-1], "1 / 0")
|
||||
|
||||
+
|
||||
+ @skip("Fails with Python 3.13")
|
||||
def test_findFailureInGenerator(self) -> None:
|
||||
"""
|
||||
Within an exception handler, it should be possible to find the
|
||||
diff --git a/src/twisted/web/_flatten.py b/src/twisted/web/_flatten.py
|
||||
index 87a8bf2..b8daad6 100644
|
||||
--- a/src/twisted/web/_flatten.py
|
||||
+++ b/src/twisted/web/_flatten.py
|
||||
@@ -432,7 +432,8 @@ async def _flattenTree(
|
||||
roots = []
|
||||
for generator in stack:
|
||||
roots.append(generator.gi_frame.f_locals["root"])
|
||||
- roots.append(frame.f_locals["root"])
|
||||
+ if "root" in frame.f_locals:
|
||||
+ roots.append(frame.f_locals["root"])
|
||||
raise FlattenerError(e, roots, extract_tb(exc_info()[2]))
|
||||
else:
|
||||
stack.append(element)
|
||||
diff --git a/src/twisted/web/test/test_cgi.py b/src/twisted/web/test/test_cgi.py
|
||||
index 7d546b5..43e2cd9 100644
|
||||
--- a/src/twisted/web/test/test_cgi.py
|
||||
+++ b/src/twisted/web/test/test_cgi.py
|
||||
@@ -9,6 +9,7 @@ import json
|
||||
import os
|
||||
import sys
|
||||
from io import BytesIO
|
||||
+from unittest import skip
|
||||
|
||||
from twisted.internet import address, error, interfaces, reactor
|
||||
from twisted.internet.error import ConnectionLost
|
||||
@@ -369,6 +370,7 @@ class CGIScriptTests(_StartServerAndTearDownMixin, unittest.TestCase):
|
||||
Tests for L{twcgi.CGIScript}.
|
||||
"""
|
||||
|
||||
+ @skip("Fails with Python 3.13")
|
||||
def test_urlParameters(self):
|
||||
"""
|
||||
If the CGI script is passed URL parameters, do not fall over,
|
||||
diff --git a/src/twisted/web/test/test_flatten.py b/src/twisted/web/test/test_flatten.py
|
||||
index d05d032..60a27c4 100644
|
||||
--- a/src/twisted/web/test/test_flatten.py
|
||||
+++ b/src/twisted/web/test/test_flatten.py
|
||||
@@ -13,6 +13,7 @@ from collections import OrderedDict
|
||||
from textwrap import dedent
|
||||
from types import FunctionType
|
||||
from typing import Callable, Dict, List, NoReturn, Optional, Tuple, cast
|
||||
+from unittest import skip
|
||||
from xml.etree.ElementTree import XML
|
||||
|
||||
from zope.interface import implementer
|
||||
@@ -667,6 +668,7 @@ class FlattenerErrorTests(SynchronousTestCase):
|
||||
),
|
||||
)
|
||||
|
||||
+ @skip("Fails with Python 3.13")
|
||||
def test_asynchronousFlattenError(self) -> None:
|
||||
"""
|
||||
When flattening a renderer which raises an exception asynchronously,
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,97 @@
|
||||
From eb0e435dae182363500c3e291f757a24b9df2e9d Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Thu, 21 Dec 2023 09:18:42 +0000
|
||||
Subject: [PATCH] Initial update for deprecation helpers.
|
||||
|
||||
---
|
||||
src/twisted/newsfragments/12063.removal | 2 ++
|
||||
src/twisted/python/deprecate.py | 8 +++++-
|
||||
src/twisted/python/test/test_deprecate.py | 30 +++++++++--------------
|
||||
3 files changed, 21 insertions(+), 19 deletions(-)
|
||||
create mode 100644 src/twisted/newsfragments/12063.removal
|
||||
|
||||
diff --git a/src/twisted/newsfragments/12063.removal b/src/twisted/newsfragments/12063.removal
|
||||
new file mode 100644
|
||||
index 00000000000..7958fc00d6e
|
||||
--- /dev/null
|
||||
+++ b/src/twisted/newsfragments/12063.removal
|
||||
@@ -0,0 +1,2 @@
|
||||
+twisted.python.deprecate helper function will now always strip the docstrings.
|
||||
+This is done to have the same behaviour as with Python 3.13.
|
||||
diff --git a/src/twisted/python/deprecate.py b/src/twisted/python/deprecate.py
|
||||
index c85b98d6272..ffc2103a65c 100644
|
||||
--- a/src/twisted/python/deprecate.py
|
||||
+++ b/src/twisted/python/deprecate.py
|
||||
@@ -258,8 +258,14 @@ def _appendToDocstring(thingWithDoc, textToAppend):
|
||||
elif len(docstringLines) == 1:
|
||||
docstringLines.extend(["", textToAppend, ""])
|
||||
else:
|
||||
- spaces = docstringLines.pop()
|
||||
+ trailer = docstringLines[-1]
|
||||
+ spaces = ""
|
||||
+ if not trailer.strip():
|
||||
+ # On Python 3.13 the docstring is already stripped.
|
||||
+ # For older Python version we keep the trailer.
|
||||
+ spaces = docstringLines.pop()
|
||||
docstringLines.extend(["", spaces + textToAppend, spaces])
|
||||
+ docstringLines = [l.lstrip(" ") for l in docstringLines]
|
||||
thingWithDoc.__doc__ = "\n".join(docstringLines)
|
||||
|
||||
|
||||
diff --git a/src/twisted/python/test/test_deprecate.py b/src/twisted/python/test/test_deprecate.py
|
||||
index ff3b21cb469..fc91e1f22b4 100644
|
||||
--- a/src/twisted/python/test/test_deprecate.py
|
||||
+++ b/src/twisted/python/test/test_deprecate.py
|
||||
@@ -876,12 +876,11 @@ def test_deprecatedReplacement(self):
|
||||
self.assertEqual(
|
||||
dummy.__doc__,
|
||||
"\n"
|
||||
- " Do nothing.\n\n"
|
||||
- " This is used to test the deprecation decorators.\n\n"
|
||||
- " Deprecated in Twisted 8.0.0; please use "
|
||||
+ "Do nothing.\n\n"
|
||||
+ "This is used to test the deprecation decorators.\n\n"
|
||||
+ "Deprecated in Twisted 8.0.0; please use "
|
||||
"something.foobar"
|
||||
- " instead.\n"
|
||||
- " ",
|
||||
+ " instead.\n",
|
||||
)
|
||||
|
||||
def test_deprecatedReplacementWithCallable(self):
|
||||
@@ -897,11 +896,10 @@ def test_deprecatedReplacementWithCallable(self):
|
||||
self.assertEqual(
|
||||
dummy.__doc__,
|
||||
"\n"
|
||||
- " Do nothing.\n\n"
|
||||
- " This is used to test the deprecation decorators.\n\n"
|
||||
- " Deprecated in Twisted 8.0.0; please use "
|
||||
- "%s.dummyReplacementMethod instead.\n"
|
||||
- " " % (__name__,),
|
||||
+ "Do nothing.\n\n"
|
||||
+ "This is used to test the deprecation decorators.\n\n"
|
||||
+ "Deprecated in Twisted 8.0.0; please use "
|
||||
+ "{}.dummyReplacementMethod instead.\n".format(__name__),
|
||||
)
|
||||
|
||||
def test_deprecatedKeywordParameter(self):
|
||||
@@ -993,15 +991,11 @@ def multiLineDocstring():
|
||||
This is a multi-line docstring.
|
||||
"""
|
||||
|
||||
- def expectedDocstring():
|
||||
- """
|
||||
- This is a multi-line docstring.
|
||||
-
|
||||
- Appended text.
|
||||
- """
|
||||
-
|
||||
_appendToDocstring(multiLineDocstring, "Appended text.")
|
||||
- self.assertEqual(expectedDocstring.__doc__, multiLineDocstring.__doc__)
|
||||
+ self.assertEqual(
|
||||
+ "\n" "This is a multi-line docstring.\n" "\n" "Appended text.\n",
|
||||
+ multiLineDocstring.__doc__,
|
||||
+ )
|
||||
|
||||
|
||||
class MutualArgumentExclusionTests(SynchronousTestCase):
|
@ -0,0 +1,34 @@
|
||||
From f0b39dae0a02138a21eaa1f280b1be7cb7f1ff3c Mon Sep 17 00:00:00 2001
|
||||
From: Adi Roiban <adi.roiban@chevah.com>
|
||||
Date: Thu, 21 Dec 2023 10:05:32 +0000
|
||||
Subject: [PATCH] Update twisted.python._shellcomp.ZshArgumentsGenerator for
|
||||
Python 3.13.
|
||||
|
||||
---
|
||||
src/twisted/newsfragments/12065.feature | 1 +
|
||||
src/twisted/python/_shellcomp.py | 4 +++-
|
||||
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||
create mode 100644 src/twisted/newsfragments/12065.feature
|
||||
|
||||
diff --git a/src/twisted/newsfragments/12065.feature b/src/twisted/newsfragments/12065.feature
|
||||
new file mode 100644
|
||||
index 00000000000..4b9b4b2f07c
|
||||
--- /dev/null
|
||||
+++ b/src/twisted/newsfragments/12065.feature
|
||||
@@ -0,0 +1 @@
|
||||
+twisted.python._shellcomp.ZshArgumentsGenerator was updated for Python 3.13.
|
||||
diff --git a/src/twisted/python/_shellcomp.py b/src/twisted/python/_shellcomp.py
|
||||
index e36620210b2..9c9a46a8d42 100644
|
||||
--- a/src/twisted/python/_shellcomp.py
|
||||
+++ b/src/twisted/python/_shellcomp.py
|
||||
@@ -603,7 +603,9 @@ def getDescription(self, longname):
|
||||
obj = getattr(self.options, "opt_%s" % longMangled, None)
|
||||
if obj is not None:
|
||||
descr = descrFromDoc(obj)
|
||||
- if descr is not None:
|
||||
+ # On Python3.13 we have an empty string instead of None,
|
||||
+ # for missing description.
|
||||
+ if descr:
|
||||
return descr
|
||||
|
||||
return longname # we really ought to have a good description to use
|
@ -0,0 +1,560 @@
|
||||
## START: Set by rpmautospec
|
||||
## (rpmautospec version 0.6.3)
|
||||
## RPMAUTOSPEC: autorelease, autochangelog
|
||||
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
|
||||
release_number = 7;
|
||||
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
|
||||
print(release_number + base_release_number - 1);
|
||||
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
|
||||
## END: Set by rpmautospec
|
||||
|
||||
%global srcname twisted
|
||||
|
||||
%global common_description %{expand:
|
||||
Twisted is a networking engine written in Python, supporting numerous protocols.
|
||||
It contains a web server, numerous chat clients, chat servers, mail servers
|
||||
and more.}
|
||||
|
||||
Name: python-%{srcname}
|
||||
Version: 23.10.0
|
||||
Release: %autorelease
|
||||
Summary: Twisted is a networking engine written in Python
|
||||
|
||||
License: MIT
|
||||
URL: http://twistedmatrix.com/
|
||||
VCS: https://github.com/twisted/twisted
|
||||
Source0: %vcs/archive/%{srcname}-%{version}/%{srcname}-%{version}.tar.gz
|
||||
# https://github.com/twisted/twisted/pull/12027
|
||||
# https://github.com/twisted/twisted/issues/12026
|
||||
Patch1: 0001-Adjust-to-deprecation-of-3-arg-signature-of-generato.patch
|
||||
# downstream-only fix tests, skip network tests that fail in buildsys
|
||||
Patch2: 0002-23.10.0-fix-and-skip-tests-fedora.patch
|
||||
# https://github.com/twisted/twisted/issues/12052
|
||||
# https://github.com/twisted/twisted/pull/12054
|
||||
Patch3: 0003-python3.12.1.patch
|
||||
|
||||
# Three backported upstream commits to remove cgi module (removed from Python 3.13)
|
||||
# https://github.com/twisted/twisted/commit/e6bf82b0a703e4bc78934d
|
||||
# https://github.com/twisted/twisted/commit/2bceedc79f86c750f27432
|
||||
# https://github.com/twisted/twisted/commit/4579398f6b089f93181ba2
|
||||
Patch4: 0004-Remove-the-usage-of-cgi.parse_multipart.patch
|
||||
|
||||
# In Python 3.13 line numbers returned by findlinestarts
|
||||
# can be None for bytecode that does not map to source lines.
|
||||
# https://github.com/twisted/twisted/pull/12059
|
||||
Patch5: 0005-Update-dis.findlinestarts-for-Python-3.13.patch
|
||||
|
||||
# Fix inlineCallbacks tests on Python 3.13
|
||||
# https://github.com/twisted/twisted/pull/12092
|
||||
Patch6: 0006-fix-inlinecb-tests.patch
|
||||
|
||||
# Fix stripped indentation (change of behaviour with Python 3.13)
|
||||
Patch7: https://github.com/twisted/twisted/pull/12064.patch
|
||||
|
||||
# Update twisted.python._shellcomp.ZshArgumentsGenerator for Python 3.13
|
||||
# Merged upstream: https://github.com/twisted/twisted/pull/12066
|
||||
Patch8: https://github.com/twisted/twisted/pull/12066.patch
|
||||
|
||||
# Reported: https://github.com/twisted/twisted/issues/12098
|
||||
Patch9: 0009-Account-with-the-new-traceback-pointing-characters.patch
|
||||
|
||||
# With Python 3.13.0b1 there are issues with test_flatten
|
||||
# https://github.com/twisted/twisted/issues/12194
|
||||
# Skip the last failing tests, reported:
|
||||
# https://github.com/twisted/twisted/issues/12099
|
||||
Patch10: 0010-Skip-failing-tests.patch
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
%description %{common_description}
|
||||
|
||||
%package -n python3-%{srcname}
|
||||
Summary: %{summary}
|
||||
|
||||
BuildRequires: python3-devel >= 3.3
|
||||
BuildRequires: python3-pyasn1-modules, python3-cryptography, python3-pynacl
|
||||
BuildRequires: python3-service-identity, python3-pyOpenSSL, python3-h2
|
||||
BuildRequires: python3-bcrypt, python3-subunit
|
||||
BuildRequires: python3-hamcrest, python3-hypothesis
|
||||
BuildRequires: git-core
|
||||
|
||||
Recommends: python3-%{srcname}+tls
|
||||
|
||||
%description -n python3-%{srcname} %{common_description}
|
||||
|
||||
%pyproject_extras_subpkg -n python3-%{srcname} tls
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %{srcname}-%{srcname}-%{version}
|
||||
|
||||
%generate_buildrequires
|
||||
%pyproject_buildrequires
|
||||
|
||||
|
||||
%build
|
||||
%pyproject_wheel
|
||||
|
||||
|
||||
%install
|
||||
%pyproject_install
|
||||
|
||||
# no-manual-page-for-binary
|
||||
mkdir -p %{buildroot}%{_mandir}/man1/
|
||||
for s in conch core mail; do
|
||||
cp -a docs/$s/man/*.1 %{buildroot}%{_mandir}/man1/
|
||||
done
|
||||
|
||||
# Packages that install arch-independent twisted plugins install here.
|
||||
# https:# bugzilla.redhat.com/show_bug.cgi?id=1252140
|
||||
mkdir -p %{buildroot}%{python3_sitelib}/twisted/plugins
|
||||
|
||||
# Move and symlink python3 scripts
|
||||
ln -s ./trial %{buildroot}%{_bindir}/trial-3
|
||||
ln -s ./twistd %{buildroot}%{_bindir}/twistd-3
|
||||
|
||||
%pyproject_save_files %{srcname}
|
||||
echo "%ghost %{python3_sitelib}/twisted/plugins/dropin.cache" >> %{pyproject_files}
|
||||
|
||||
|
||||
%check
|
||||
PATH=%{buildroot}%{_bindir}:$PATH PYTHONPATH=$PWD/src %{buildroot}%{_bindir}/trial twisted
|
||||
|
||||
|
||||
%files -n python3-twisted -f %{pyproject_files}
|
||||
%doc NEWS.rst README.rst
|
||||
%license LICENSE
|
||||
%{_bindir}/cftp
|
||||
%{_bindir}/ckeygen
|
||||
%{_bindir}/conch
|
||||
%{_bindir}/mailmail
|
||||
%{_bindir}/pyhtmlizer
|
||||
%{_bindir}/tkconch
|
||||
%{_bindir}/trial
|
||||
%{_bindir}/twist
|
||||
%{_bindir}/twistd
|
||||
%{_bindir}/trial-3
|
||||
%{_bindir}/twistd-3
|
||||
%{_mandir}/man1/cftp.1*
|
||||
%{_mandir}/man1/ckeygen.1*
|
||||
%{_mandir}/man1/conch.1*
|
||||
%{_mandir}/man1/mailmail.1*
|
||||
%{_mandir}/man1/pyhtmlizer.1*
|
||||
%{_mandir}/man1/tkconch.1*
|
||||
%{_mandir}/man1/trial.1*
|
||||
%{_mandir}/man1/twistd.1*
|
||||
|
||||
|
||||
%changelog
|
||||
* Sun Jan 05 2025 Arkady L. Shane <tigro@msvsphere-os.ru> - 23.10.0-7
|
||||
- Rebuilt for MSVSphere 10
|
||||
|
||||
## START: Generated by rpmautospec
|
||||
* Sun Jun 09 2024 Python Maint <python-maint@redhat.com> - 23.10.0-7
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Mon Jun 03 2024 Karolina Surma <ksurma@redhat.com> - 23.10.0-6
|
||||
- Make twisted build with Python 3.13
|
||||
|
||||
* Tue Jan 16 2024 Karolina Surma <ksurma@redhat.com> - 23.10.0-4
|
||||
- Update dis.findlinestarts for Python 3.13
|
||||
|
||||
* Tue Jan 16 2024 Karolina Surma <ksurma@redhat.com> - 23.10.0-3
|
||||
- Remove the usage of cgi module (removed in Python 3.13)
|
||||
|
||||
* Wed Dec 20 2023 Miro Hrončok <miro@hroncok.cz> - 23.10.0-2
|
||||
- Fix tests failures with Python 3.12.1+
|
||||
|
||||
* Wed Nov 01 2023 Jonathan Steffan <jsteffan@fedoraproject.org> - 23.10.0-1
|
||||
- Update to 23.10.0
|
||||
|
||||
* Sat Oct 28 2023 Adam Williamson <awilliam@redhat.com> - 23.8.0-4
|
||||
- Update comment for patch4 as I submitted the PR
|
||||
|
||||
* Sat Oct 28 2023 Adam Williamson <awilliam@redhat.com> - 23.8.0-3
|
||||
- Patch to not use deprecated form of generator.throw()
|
||||
|
||||
* Mon Aug 28 2023 Jonathan Steffan <jsteffan@fedoraproject.org> - 23.8.0-2
|
||||
- Update to Update to 23.8.0
|
||||
- Closes RHBZ#2235436
|
||||
|
||||
* Tue Aug 22 2023 Jonathan Steffan <jsteffan@fedoraproject.org> - 23.8.0-0.1.rc1
|
||||
- Update to 23.8.0rc1
|
||||
- Closes RHBZ#2232681
|
||||
|
||||
* Fri Jul 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 22.10.0-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Wed Jun 28 2023 Miro Hrončok <miro@hroncok.cz> - 22.10.0-6
|
||||
- Backport trivial upstream's imp->importlib update
|
||||
|
||||
* Wed Jun 28 2023 Miro Hrončok <miro@hroncok.cz> - 22.10.0-5
|
||||
- Cowardly skip tests that fail/error/hang with Python 3.12
|
||||
|
||||
* Thu Jun 15 2023 Python Maint <python-maint@redhat.com> - 22.10.0-4
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Wed Apr 05 2023 Carl George <carl@george.computer> - 22.10.0-3
|
||||
- Fix attrs import error on EPEL9
|
||||
- Resolves: rhbz#2182954
|
||||
- Enforce tests
|
||||
|
||||
* Fri Jan 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 22.10.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Wed Dec 28 2022 Robert-André Mauchin <zebob.m@gmail.com> - 22.10.0-1
|
||||
- Update to 22.10.0
|
||||
|
||||
* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 22.4.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Sun Jul 03 2022 Robert-André Mauchin <zebob.m@gmail.com> - 22.4.0-2
|
||||
- Remove commented BuildRequires
|
||||
|
||||
* Thu Jun 23 2022 Robert-André Mauchin <zebob.m@gmail.com> - 22.4.0-1
|
||||
- Update to 22.4.0 Close: rhbz#2046562 rhbz#2073115 rhbz#2060972
|
||||
rhbz#2059508
|
||||
|
||||
* Tue Jun 14 2022 Python Maint <python-maint@redhat.com> - 21.7.0-6
|
||||
- Rebuilt for Python 3.11
|
||||
|
||||
* Fri Jan 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 21.7.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Dec 20 2021 Miro Hrončok <miro@hroncok.cz> - 21.7.0-4
|
||||
- Use PEP 503 names for BuildRequires
|
||||
|
||||
* Mon Dec 20 2021 Robert-André Mauchin <zebob.m@gmail.com> - 21.7.0-3
|
||||
- Reapply patch importing gobject from gi.repository
|
||||
|
||||
* Sun Aug 01 2021 Robert-André Mauchin <zebob.m@gmail.com> - 21.7.0-2
|
||||
- Fix minimum version for incremental. Fix: rhbz#1988712
|
||||
|
||||
* Sat Jul 31 2021 Robert-André Mauchin <zebob.m@gmail.com> - 21.7.0-1
|
||||
- Update to 21.7.0 Close: rhbz#1988076
|
||||
|
||||
* Fri Jul 30 2021 Robert-André Mauchin <zebob.m@gmail.com> - 21.2.0-6
|
||||
- Fix FTBFS Close: rhbz#1988076
|
||||
|
||||
* Tue Jul 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 21.2.0-4
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 21.2.0-3
|
||||
- Rebuilt for Python 3.10
|
||||
|
||||
* Fri Mar 05 2021 Miro Hrončok <mhroncok@redhat.com> - 21.2.0-2
|
||||
- Reintroduce twisted[tls] subpackage
|
||||
- Fixes: rhbz#1935872
|
||||
- Fixes: rhbz#1935873
|
||||
- Fixes: rhbz#1935869
|
||||
- Fixes: rhbz#1935870
|
||||
- Fixes: rhbz#1935871
|
||||
|
||||
* Fri Mar 5 09:54:54 CET 2021 Robert-André Mauchin <zebob.m@gmail.com> - 21.2.0-1
|
||||
- Update to 21.2.0
|
||||
|
||||
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 20.3.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Sun Dec 20 2020 Robert-André Mauchin <zebob.m@gmail.com> - 20.3.0-4
|
||||
- Bump h2 dependency
|
||||
- Fix: rhbz#1909413
|
||||
|
||||
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 20.3.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri Jul 10 2020 Miro Hrončok <mhroncok@redhat.com> - 20.3.0-2
|
||||
- Add twisted[tls] subpackage
|
||||
|
||||
* Thu Jun 18 05:29:03 CEST 2020 Robert-André Mauchin <zebob.m@gmail.com> - 20.3.0-1
|
||||
- Update to 20.3.0
|
||||
|
||||
* Sun May 24 2020 Miro Hrončok <mhroncok@redhat.com> - 19.10.0-3
|
||||
- Rebuilt for Python 3.9
|
||||
|
||||
* Tue Mar 17 16:31:05 CET 2020 Robert-André Mauchin <zebob.m@gmail.com> - 19.10.0-2
|
||||
- Security fix for CVE-2020-10108 (#1813439, #1813441)
|
||||
- Security fix for CVE-2020-10109 (#1813447, #1813449)
|
||||
|
||||
* Tue Mar 17 15:15:48 CET 2020 Robert-André Mauchin <zebob.m@gmail.com> - 19.10.0-1
|
||||
- Update to 19.10.0
|
||||
- Revert removal of %%{python3_sitelib}/twisted/plugins/
|
||||
|
||||
* Sun Oct 13 23:35:33 CEST 2019 Robert-André Mauchin <zebob.m@gmail.com> - 19.7.0-2
|
||||
- Drop Python 2 support (#1761204)
|
||||
|
||||
* Mon Sep 16 2019 Jeremy Cline <jcline@redhat.com> - 19.7.0-1
|
||||
- Update to 19.7.0
|
||||
|
||||
* Tue Sep 03 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.1-6
|
||||
- Stop running Python 2 tests at build time, reduce the build dependencies
|
||||
|
||||
* Sat Aug 17 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.1-5
|
||||
- Rebuilt for Python 3.8
|
||||
|
||||
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 19.2.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Tue Jul 09 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.1-3
|
||||
- Security fix for CVE-2019-12855 (Check certificates for XMPP TLS) (#1728206) (#1728207)
|
||||
|
||||
* Wed Jul 03 2019 Miro Hrončok <mhroncok@redhat.com> - 19.2.1-2
|
||||
- Rebuilt to update automatic Python dependencies
|
||||
|
||||
* Sun Jun 09 18:40:31 CEST 2019 Robert-André Mauchin <zebob.m@gmail.com> - 19.2.1-1
|
||||
- Release 19.2.1
|
||||
|
||||
* Wed May 22 18:26:29 CEST 2019 Robert-André Mauchin <zebob.m@gmail.com> - 19.2.0-3
|
||||
- Add patch to import gobject from gi.repository for Python 3
|
||||
- Fix #1712748
|
||||
|
||||
* Tue May 14 16:00:42 CEST 2019 Robert-André Mauchin <zebob.m@gmail.com> - 19.2.0-2
|
||||
- Add patch regenerating raiser.c to use with Python 3.8a4
|
||||
- Fix #11709817
|
||||
|
||||
* Wed Apr 10 17:38:50 CET 2019 Robert-André Mauchin <zebob.m@gmail.com> - 19.2.0-1
|
||||
- Release 19.2.0 (#1698490)
|
||||
|
||||
* Thu Mar 07 2019 Robert-André Mauchin <zebob.m@gmail.com> - 18.9.0-1
|
||||
- Release 18.9.0
|
||||
- Run tests
|
||||
|
||||
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 18.7.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Mon Oct 22 2018 Miro Hrončok <mhroncok@redhat.com> - 18.7.0-3
|
||||
- Recommend pythonX-service-identity
|
||||
|
||||
* Sat Jul 21 2018 Robert-André Mauchin <zebob.m@gmail.com> - 18.7.0-2
|
||||
- Remove erroneous symlink to binaries
|
||||
|
||||
* Sun Jul 15 2018 Robert-André Mauchin <zebob.m@gmail.com> - 18.7.0-1
|
||||
- Update to 18.7.0
|
||||
|
||||
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 18.4.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed Jun 27 2018 Robert-André Mauchin <zebob.m@gmail.com> - 18.4.0-1
|
||||
- Update to 18.4.0
|
||||
- Default binaries to Python 3
|
||||
- Drop old Obsoletes/Provides
|
||||
- Refresh BR
|
||||
- Remove useless macros
|
||||
- Use python_enable_dependency_generator
|
||||
|
||||
* Mon Jun 18 2018 Miro Hrončok <mhroncok@redhat.com> - 16.4.1-11
|
||||
- Rebuilt for Python 3.7
|
||||
|
||||
* Wed May 23 2018 Miro Hrončok <mhroncok@redhat.com> - 16.4.1-10
|
||||
- Fix ambiguous shebangs
|
||||
|
||||
* Fri Apr 27 2018 Petr Viktorin <pviktori@redhat.com> - 16.4.1-9
|
||||
- No longer require python-crypto
|
||||
|
||||
* Mon Mar 26 2018 Iryna Shcherbina <ishcherb@redhat.com> - 16.4.1-8
|
||||
- Update Python 2 dependency declarations to new packaging standards
|
||||
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)
|
||||
|
||||
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 16.4.1-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Fri Sep 29 2017 Troy Dawson <tdawson@redhat.com> - 16.4.1-6
|
||||
- Cleanup spec file conditionals
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 16.4.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 16.4.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 16.4.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Tue Dec 13 2016 Stratakis Charalampos <cstratak@redhat.com> - 16.4.1-2
|
||||
- rebuilt
|
||||
|
||||
* Wed Oct 26 2016 Jonathan Steffan <jsteffan@fedoraproject.org> - 16.4.1-1
|
||||
- Update to 16.4.1
|
||||
|
||||
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 16.3.0-2
|
||||
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||
|
||||
* Fri Jul 8 2016 Jonathan Steffan <jsteffan@fedoraproject.org> - 16.3.0-1
|
||||
- Update to 16.3.0
|
||||
- mahole, tap2deb, tap2rpm are removed upstream
|
||||
|
||||
* Sun Jun 26 2016 Jonathan Steffan <jsteffan@fedoraproject.org> - 16.2.0-2
|
||||
- Add rpmlint notes
|
||||
- Fix unneeded py3 conditional for py2 script chmod
|
||||
|
||||
* Sun Jun 26 2016 Jonathan Steffan <jsteffan@fedoraproject.org> - 16.2.0-1
|
||||
- Update to 16.2.0
|
||||
- Update upstream source location
|
||||
|
||||
* Thu Jun 2 2016 Haïkel Guémar <hguemar@fedoraproject.org> - 16.1.1-3
|
||||
- Drop tkinter dependency (only required for tkconch)
|
||||
- Use python3 conditionals
|
||||
- Move BR under the proper subpackage
|
||||
|
||||
* Tue May 10 2016 Petr Viktorin <pviktori@redhat.com> - 16.1.1-2
|
||||
- Update to better conform to Python packaging guidelines
|
||||
|
||||
* Thu May 05 2016 Julien Enselme <jujens@jujens.eu> - 16.1.1-1
|
||||
- Update to 16.1.1 (#1287381)
|
||||
|
||||
* Thu Mar 10 2016 Julien Enselme <jujens@jujens.eu> - 15.5.0-2
|
||||
- Add python3 support
|
||||
|
||||
* Thu Mar 10 2016 Julien Enselme <jujens@jujens.eu> - 15.5.0-1
|
||||
- Update to 15.5.0 (#1287381)
|
||||
- Use new python macros
|
||||
- Remove deprecated %%clean section
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 15.4.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Fri Nov 27 2015 Tom Prince <tom.prince@twistedmatrix.com> - 15.4.0-2
|
||||
- Add arch-independent plugin directory to package. (RHBZ#1252140)
|
||||
|
||||
* Thu Oct 29 2015 Tom Prince <tom.prince@twistedmatrix.com> - 15.4.0-1
|
||||
- Update to 15.4.0
|
||||
- Include test certificates.
|
||||
|
||||
* Mon Jul 20 2015 Jonathan Steffan <jsteffan@fedoraproject.org> - 15.2.1-1
|
||||
- Update to 15.2.1
|
||||
|
||||
* Sat May 09 2015 Jonathan Steffan <jsteffan@fedoraproject.org> - 15.1.0-1
|
||||
- Update to 15.1.0 (RHBZ#1187921,RHBZ#1192707)
|
||||
- Require python-service-identity (RHBZ#1119067)
|
||||
- Obsolete python-twisted-core-doc (RHBZ#1187025)
|
||||
|
||||
* Sat Nov 22 2014 Jonathan Steffan <jsteffan@fedoraproject.org> - 14.0.2-1
|
||||
- Update to 14.0.2 (RHBZ#1143002)
|
||||
|
||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 14.0.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Jonathan Steffan <jsteffan@fedoraproject.org> - 14.0.0-1
|
||||
- Update to 14.0.0
|
||||
- Ship Twisted as a fully featured package without subpackages on the advice
|
||||
of upstream and to mirror what pypi provides
|
||||
- Explictly build for python2 with new macros
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 12.2.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 12.2.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 12.2.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Mon Sep 03 2012 Julian Sikorski <belegdol@fedoraproject.org> - 12.2.0-1
|
||||
- Updated to 12.2.0
|
||||
|
||||
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 12.1.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Sun Jun 17 2012 Julian Sikorski <belegdol@fedoraproject.org> - 12.1.0-1
|
||||
- Updated to 12.1.0
|
||||
|
||||
* Sun Feb 12 2012 Julian Sikorski <belegdol@fedoraproject.org> - 12.0.0-1
|
||||
- Updated to 12.0.0
|
||||
|
||||
* Sat Jan 07 2012 Julian Sikorski <belegdol@fedoraproject.org> - 11.1.0-2
|
||||
- Rebuilt for gcc-4.7
|
||||
|
||||
* Fri Nov 18 2011 Julian Sikorski <belegdol@fedoraproject.org> - 11.1.0-1
|
||||
- Updated to 11.1.0
|
||||
- Dropped obsolete Group, Buildroot, %%clean and %%defattr
|
||||
|
||||
* Sat Apr 30 2011 Julian Sikorski <belegdol@fedoraproject.org> - 11.0.0-1
|
||||
- Updated to 11.0.0
|
||||
- Added comment on how to obtain the PKG-INFO file
|
||||
|
||||
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 10.2.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Sat Jan 15 2011 Julian Sikorski <belegdol@fedoraproject.org> - 10.2.0-1
|
||||
- Updated to 10.2.0
|
||||
|
||||
* Mon Nov 08 2010 Julian Sikorski <belegdol@fedoraproject.org> - 10.1.0-3
|
||||
- Use python_sitelib instead of python-sitearch
|
||||
- The aforementioned macros are defined in Fedora 13 and above
|
||||
|
||||
* Sun Nov 07 2010 Julian Sikorski <belegdol@fedoraproject.org> - 10.1.0-2
|
||||
- Added egg-info file
|
||||
|
||||
* Tue Sep 21 2010 Julian Sikorski <belegdol@fedoraproject.org> - 10.1.0-1
|
||||
- Updated to 10.1.0
|
||||
- Switched to macros for versioned dependencies
|
||||
|
||||
* Sun Jul 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 8.2.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
* Thu Feb 26 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 8.2.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
|
||||
* Mon Dec 29 2008 Matthias Saou <http://freshrpms.net/> 8.2.0-1
|
||||
- Update to 8.2.0.
|
||||
- Change back spec cosmetic details from Paul's to Thomas' preference.
|
||||
|
||||
* Wed Jul 16 2008 Matthias Saou <http://freshrpms.net/> 8.1.0-2
|
||||
- Update to 8.1.0.
|
||||
- Minor spec file cleanups.
|
||||
- Merge back changes from Paul Howarth.
|
||||
|
||||
* Wed May 21 2008 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
- 2.5.0-1
|
||||
- update to 2.5.0 release (only the umbrella package was missing)
|
||||
|
||||
* Tue Jan 16 2007 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
- 2.4.0-3
|
||||
- list packages in README.fedora
|
||||
|
||||
* Wed Jan 03 2007 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
- 2.4.0-2
|
||||
- add a README.fedora
|
||||
- made noarch, since it doesn't actually install any python twisted/ module
|
||||
code
|
||||
- fixed provides/obsoletes
|
||||
|
||||
* Wed Jun 07 2006 Thomas Vander Stichele <thomas at apestaart dot org>
|
||||
- 2.4.0-1
|
||||
- this is now a pure umbrella package
|
||||
|
||||
* Mon Oct 10 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.1.0-1
|
||||
- upstream release
|
||||
|
||||
* Tue Aug 23 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.1-1
|
||||
- upstream release
|
||||
|
||||
* Mon Apr 04 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.0-2
|
||||
- add zsh support
|
||||
|
||||
* Fri Mar 25 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.0-1
|
||||
- final release
|
||||
|
||||
* Thu Mar 17 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.0-0.2.a3
|
||||
- dropped web2
|
||||
|
||||
* Wed Mar 16 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.0-0.1.a3
|
||||
- upstream release
|
||||
|
||||
* Sat Mar 12 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.0-0.1.a2
|
||||
- new prerelease; FE versioning
|
||||
|
||||
* Mon Feb 07 2005 Jeff Pitman <symbiont+pyvault@berlios.de> 2.0.0a1-1
|
||||
- prep for split
|
||||
|
||||
* Fri Aug 20 2004 Jeff Pitman <symbiont+pyvault@berlios.de> 1.3.0-1
|
||||
- new version
|
||||
|
||||
* Mon Apr 19 2004 Jeff Pitman <symbiont+pyvault@berlios.de> 1.2.0-3
|
||||
- vaultize
|
||||
|
||||
* Mon Apr 12 2004 Jeff Pitman <symbiont+pyvault@berlios.de> 1.2.0-2
|
||||
- require pyOpenSSL, SOAPpy, openssh-clients, crypto, dia so trial can run
|
||||
|
||||
## END: Generated by rpmautospec
|
Loading…
Reference in new issue