X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/1fc3215e8c8856094b20d497e4e0e3e547ed38eb..368f043f138112f63ff521c3481993c589eb7508:/src/black/__init__.py?ds=inline diff --git a/src/black/__init__.py b/src/black/__init__.py index efa82f4..5c9ab75 100644 --- a/src/black/__init__.py +++ b/src/black/__init__.py @@ -6466,12 +6466,22 @@ def _stringify_ast( # Constant strings may be indented across newlines, if they are # docstrings; fold spaces after newlines when comparing. Similarly, # trailing and leading space may be removed. + # Note that when formatting Python 2 code, at least with Windows + # line-endings, docstrings can end up here as bytes instead of + # str so make sure that we handle both cases. if ( isinstance(node, ast.Constant) and field == "value" - and isinstance(value, str) + and isinstance(value, (str, bytes)) ): - normalized = re.sub(r" *\n[ \t]*", "\n", value).strip() + lineend = "\n" if isinstance(value, str) else b"\n" + # To normalize, we strip any leading and trailing space from + # each line... + stripped = [line.strip() for line in value.splitlines()] + normalized = lineend.join(stripped) # type: ignore[attr-defined] + # ...and remove any blank lines at the beginning and end of + # the whole string + normalized = normalized.strip() else: normalized = value yield f"{' ' * (depth+2)}{normalized!r}, # {value.__class__.__name__}"