]>
 
 
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:
 
summary  | 
shortlog  | 
log  | 
commit  | commitdiff | 
tree 
raw  | 
patch  | 
inline  | side by side (parent: 
5b01a8e )
 
 * fixed bug that led *Black* format some code with a line length target
   of 1 (#762)
 
 * fixed bug that led *Black* format some code with a line length target
   of 1 (#762)
 
+* *Black* no longer introduces quotes in f-string subexpressions on string
+  boundaries (#863)
+
 
         new_body = sub_twice(escaped_orig_quote, rf"\1\2{orig_quote}", new_body)
         new_body = sub_twice(unescaped_new_quote, rf"\1\\{new_quote}", new_body)
     if "f" in prefix.casefold():
         new_body = sub_twice(escaped_orig_quote, rf"\1\2{orig_quote}", new_body)
         new_body = sub_twice(unescaped_new_quote, rf"\1\\{new_quote}", new_body)
     if "f" in prefix.casefold():
-        matches = re.findall(r"[^{]\{(.*?)\}[^}]", new_body)
+        matches = re.findall(
+            r"""
+            (?:[^{]|^)\{  # start of the string or a non-{ followed by a single {
+                ([^{].*?)  # contents of the brackets except if begins with {{
+            \}(?:[^}]|$)  # A } followed by end of the string or a non-}
+            """,
+            new_body,
+            re.VERBOSE,
+        )
         for m in matches:
             if "\\" in str(m):
                 # Do not introduce backslashes in interpolated expressions
         for m in matches:
             if "\\" in str(m):
                 # Do not introduce backslashes in interpolated expressions
 
 '\\""'
 "\\''"
 'Lots of \\\\\\\\\'quotes\''
 '\\""'
 "\\''"
 'Lots of \\\\\\\\\'quotes\''
+f'{y * " "} \'{z}\''
+f'{{y * " "}} \'{z}\''
+f'\'{z}\' {y * " "}'
+f'{y * x} \'{z}\''
+'\'{z}\' {y * " "}'
+'{y * x} \'{z}\''
 
 '\\""'
 "\\''"
 "Lots of \\\\\\\\'quotes'"
 '\\""'
 "\\''"
 "Lots of \\\\\\\\'quotes'"
+f'{y * " "} \'{z}\''
+f"{{y * \" \"}} '{z}'"
+f'\'{z}\' {y * " "}'
+f"{y * x} '{z}'"
+"'{z}' {y * \" \"}"
+"{y * x} '{z}'"
\ No newline at end of file