]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Fix crash on docstrings ending with "\ " (#2142)
authorJelle Zijlstra <jelle.zijlstra@gmail.com>
Mon, 26 Apr 2021 17:42:16 +0000 (10:42 -0700)
committerGitHub <noreply@github.com>
Mon, 26 Apr 2021 17:42:16 +0000 (19:42 +0200)
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
CHANGES.md
src/black/__init__.py
tests/data/docstring.py

index 9fe6b7e3fa4afd403ef25879267b7b745267be27..814956c80ba0729b813a63e6876797716eb5b127 100644 (file)
@@ -4,6 +4,8 @@
 
 #### _Black_
 
 
 #### _Black_
 
+- Fix crash on docstrings ending with "\ ". (#2142)
+
 - Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags
   in the name of the cache file. Without this fix, changes in these flags would not take
   effect if the cache had already been populated. (#2131)
 - Reflect the `--skip-magic-trailing-comma` and `--experimental-string-processing` flags
   in the name of the cache file. Without this fix, changes in these flags would not take
   effect if the cache had already been populated. (#2131)
index 99afc7d3c507fe06d0f21a1f1f50ea4a4b0577ad..051de5d13df58bfe7c0b6b300cfe629da27018d9 100644 (file)
@@ -2186,7 +2186,13 @@ class LineGenerator(Visitor[Line]):
                 if docstring[0] == quote_char:
                     docstring = " " + docstring
                 if docstring[-1] == quote_char:
                 if docstring[0] == quote_char:
                     docstring = " " + docstring
                 if docstring[-1] == quote_char:
-                    docstring = docstring + " "
+                    docstring += " "
+                if docstring[-1] == "\\":
+                    backslash_count = len(docstring) - len(docstring.rstrip("\\"))
+                    if backslash_count % 2:
+                        # Odd number of tailing backslashes, add some padding to
+                        # avoid escaping the closing string quote.
+                        docstring += " "
             else:
                 # Add some padding if the docstring is empty.
                 docstring = " "
             else:
                 # Add some padding if the docstring is empty.
                 docstring = " "
index 9e1c2441e0e2ebb344fe5ad793b7c6a3e44c0a2a..ee6d0c051d700bff8953ea5b1402a31896950450 100644 (file)
@@ -158,6 +158,22 @@ def docstring_with_inline_tabs_and_tab_indentation():
        """
        pass
 
        """
        pass
 
+
+def backslash_space():
+    """\ """
+
+
+def multiline_backslash_1():
+  '''
+  hey\there\
+  \ '''
+
+
+def multiline_backslash_2():
+  '''
+  hey there \ '''
+
+
 # output
 
 class MyClass:
 # output
 
 class MyClass:
@@ -316,3 +332,18 @@ def docstring_with_inline_tabs_and_tab_indentation():
     line ends with some tabs
     """
     pass
     line ends with some tabs
     """
     pass
+
+
+def backslash_space():
+    """\ """
+
+
+def multiline_backslash_1():
+    """
+  hey\there\
+  \ """
+
+
+def multiline_backslash_2():
+    """
+    hey there \ """