]>
git.madduck.net Git - etc/vim.git/blobdiff - black.py
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:
from multiprocessing import Manager
import os
from pathlib import Path
from multiprocessing import Manager
import os
from pathlib import Path
import tokenize
import signal
import sys
import tokenize
import signal
import sys
leaf.opening_bracket = opening_bracket
leaf.bracket_depth = self.depth
if self.depth == 0:
leaf.opening_bracket = opening_bracket
leaf.bracket_depth = self.depth
if self.depth == 0:
- after_delim = is_split_after_delimiter(leaf, self.previous)
- before_delim = is_split_before_delimiter(leaf, self.previous)
- if after_delim > before_delim:
- self.delimiters[id(leaf)] = after_delim
- elif before_delim > after_delim and self.previous is not None:
- self.delimiters[id(self.previous)] = before_delim
+ delim = is_split_before_delimiter(leaf, self.previous)
+ if delim and self.previous is not None:
+ self.delimiters[id(self.previous)] = delim
+ else:
+ delim = is_split_after_delimiter(leaf, self.previous)
+ if delim:
+ self.delimiters[id(leaf)] = delim
if leaf.type in OPENING_BRACKETS:
self.bracket_match[self.depth, BRACKET[leaf.type]] = leaf
self.depth += 1
if leaf.type in OPENING_BRACKETS:
self.bracket_match[self.depth, BRACKET[leaf.type]] = leaf
self.depth += 1
if leaf.type == token.COMMA:
return COMMA_PRIORITY
if leaf.type == token.COMMA:
return COMMA_PRIORITY
- if (
- leaf.type in VARARGS
- and leaf.parent
- and leaf.parent.type in {syms.argument, syms.typedargslist}
- ):
- return MATH_PRIORITY
-
Higher numbers are higher priority.
"""
Higher numbers are higher priority.
"""
+ if (
+ leaf.type in VARARGS
+ and leaf.parent
+ and leaf.parent.type in {syms.argument, syms.typedargslist}
+ ):
+ # * and ** might also be MATH_OPERATORS but in this case they are not.
+ # Don't treat them as a delimiter.
+ return 0
+
if (
leaf.type in MATH_OPERATORS
and leaf.parent
if (
leaf.type in MATH_OPERATORS
and leaf.parent
prefix = leaf.value[:first_quote_pos]
body = leaf.value[first_quote_pos + len(orig_quote):-len(orig_quote)]
prefix = leaf.value[:first_quote_pos]
body = leaf.value[first_quote_pos + len(orig_quote):-len(orig_quote)]
+ unescaped_new_quote = re.compile(r"(([^\\]|^)(\\\\)*)" + new_quote)
+ escaped_orig_quote = re.compile(r"\\(\\\\)*" + orig_quote)
if "r" in prefix.casefold():
if "r" in prefix.casefold():
- if body.count(new_quote) != body.count(f"\\{new_quote}" ):
+ if unescaped_new_quote.search(body ):
# There's at least one unescaped new_quote in this raw string
# so converting is impossible
return
# There's at least one unescaped new_quote in this raw string
# so converting is impossible
return
# Do not introduce or remove backslashes in raw strings
new_body = body
else:
# Do not introduce or remove backslashes in raw strings
new_body = body
else:
- new_body = body.replace(f"\\{orig_quote}", orig_quote).replace(
- new_quote, f"\\{new_quote}"
- )
+ new_body = escaped_orig_quote.sub(f"\\1{orig_quote}", body)
+ new_body = unescaped_new_quote.sub(f"\\1\\\\{new_quote}", new_body)
if new_quote == '"""' and new_body[-1] == '"':
# edge case:
new_body = new_body[:-1] + '\\"'
if new_quote == '"""' and new_body[-1] == '"':
# edge case:
new_body = new_body[:-1] + '\\"'