Commit ea4cb63e authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #21827: Fixed textwrap.dedent() for the case when largest common

whitespace is a substring of smallest leading whitespace.
Based on patch by Robert Li.
parent 68b6874f
......@@ -732,6 +732,11 @@ def foo():
expect = "hello there\n how are you?"
self.assertEqual(expect, dedent(text))
# test margin is smaller than smallest indent
text = " \thello there\n \thow are you?\n \tI'm fine, thanks"
expect = " \thello there\n \thow are you?\n\tI'm fine, thanks"
self.assertEqual(expect, dedent(text))
# Test textwrap.indent
class IndentTestCase(unittest.TestCase):
......
......@@ -429,11 +429,15 @@ def dedent(text):
elif margin.startswith(indent):
margin = indent
# Current line and previous winner have no common whitespace:
# there is no margin.
# Find the largest common whitespace between current line and previous
# winner.
else:
margin = ""
break
for i, (x, y) in enumerate(zip(margin, indent)):
if x != y:
margin = margin[:i]
break
else:
margin = margin[:len(indent)]
# sanity check (testing/debugging only)
if 0 and margin:
......
......@@ -823,6 +823,7 @@ Mark Levitt
Ivan Levkivskyi
William Lewis
Akira Li
Robert Li
Xuanji Li
Robert van Liere
Ross Light
......
......@@ -96,6 +96,10 @@ Core and Builtins
Library
-------
- Issue #21827: Fixed textwrap.dedent() for the case when largest common
whitespace is a substring of smallest leading whitespace.
Based on patch by Robert Li.
- Issue #25471: Sockets returned from accept() shouldn't appear to be
nonblocking.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment