You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.8 KiB
98 lines
3.8 KiB
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):
|