from blib2to3.pgen2 import driver, token
from blib2to3.pgen2.parse import ParseError
-__version__ = "18.4a0"
+__version__ = "18.4a1"
DEFAULT_LINE_LENGTH = 88
# types
syms = pygram.python_symbols
if (
leaf.type in VARARGS
and leaf.parent
- and leaf.parent.type in {syms.argument, syms.typedargslist}
+ and leaf.parent.type in {syms.argument, syms.typedargslist, syms.dictsetmaker}
):
# * and ** might also be MATH_OPERATORS but in this case they are not.
# Don't treat them as a delimiter.
else:
new_body = escaped_orig_quote.sub(rf"\1{orig_quote}", body)
new_body = unescaped_new_quote.sub(rf"\1\\{new_quote}", new_body)
+ # Add escapes again for consecutive occurences of new_quote (sub
+ # doesn't match overlapping substrings).
+ new_body = unescaped_new_quote.sub(rf"\1\\{new_quote}", new_body)
if new_quote == '"""' and new_body[-1] == '"':
# edge case:
new_body = new_body[:-1] + '\\"'
first = node.children[0]
last = node.children[-1]
- if first.type == token.LPAR and last.type == token.RPAR:
- bt = BracketTracker()
- for c in node.children[1:-1]:
- if isinstance(c, Leaf):
- bt.mark(c)
- else:
- for leaf in c.leaves():
- bt.mark(leaf)
+ if not (first.type == token.LPAR and last.type == token.RPAR):
+ return 0
+
+ bt = BracketTracker()
+ for c in node.children[1:-1]:
+ if isinstance(c, Leaf):
+ bt.mark(c)
+ else:
+ for leaf in c.leaves():
+ bt.mark(leaf)
try:
return bt.max_delimiter_priority()
import tempfile
with tempfile.NamedTemporaryFile(
- mode="w", prefix="blk_", suffix=".log", delete=False
+ mode="w", prefix="blk_", suffix=".log", delete=False, encoding="utf8"
) as f:
for lines in output:
f.write(lines)