fix crashes on docstring whitespace changes (#1417)

Fixes #1415
This commit is contained in:
Jelle Zijlstra 2020-05-15 20:47:21 -07:00 committed by GitHub
parent 45c98cf150
commit c7da3482c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 4 deletions

View File

@ -6006,13 +6006,14 @@ def _stringify_ast(
else:
# Constant strings may be indented across newlines, if they are
# docstrings; fold spaces after newlines when comparing
# docstrings; fold spaces after newlines when comparing. Similarly,
# trailing and leading space may be removed.
if (
isinstance(node, ast.Constant)
and field == "value"
and isinstance(value, str)
):
normalized = re.sub(r"\n[ \t]+", "\n ", value)
normalized = re.sub(r" *\n[ \t]+", "\n ", value).strip()
else:
normalized = value
yield f"{' ' * (depth+2)}{normalized!r}, # {value.__class__.__name__}"

View File

@ -1,5 +1,5 @@
class MyClass:
"""Multiline
""" Multiline
class docstring
"""
@ -11,7 +11,7 @@ def method(self):
def foo():
"""This is a docstring with
"""This is a docstring with
some lines of text here
"""
return
@ -66,6 +66,13 @@ def over_indent():
"""
pass
def single_line():
"""But with a newline after it!
"""
pass
# output
class MyClass:
@ -136,3 +143,8 @@ def over_indent():
- And the closing quote is too deep
"""
pass
def single_line():
"""But with a newline after it!"""
pass