"""Returns True if there is an yet unmatched open bracket on the line."""
return bool(self.bracket_match)
- def max_priority(self, exclude: Iterable[LeafID] =()) -> int:
+ def max_priority(self, exclude: Iterable[LeafID] = ()) -> int:
"""Returns the highest priority of a delimiter found on the line.
Values are consistent with what `is_delimiter()` returns.
return SPACE if prevp.type == token.COMMA else NO
if prevp.type == token.EQUAL:
- if prevp.parent and prevp.parent.type in {
- syms.arglist,
- syms.argument,
- syms.parameters,
- syms.typedargslist,
- syms.varargslist,
- }:
- return NO
+ if prevp.parent:
+ if prevp.parent.type in {
+ syms.arglist, syms.argument, syms.parameters, syms.varargslist
+ }:
+ return NO
+
+ elif prevp.parent.type == syms.typedargslist:
+ # A bit hacky: if the equal sign has whitespace, it means we
+ # previously found it's a typed argument. So, we're using
+ # that, too.
+ return prevp.prefix
elif prevp.type == token.DOUBLESTAR:
if prevp.parent and prevp.parent.type in {
and prevp.parent.type == syms.shift_expr
and prevp.prev_sibling
and prevp.prev_sibling.type == token.NAME
- and prevp.prev_sibling.value == 'print'
+ and prevp.prev_sibling.value == 'print' # type: ignore
):
# Python 2 print chevron
return NO
if not prev or prev.type != token.COMMA:
return NO
- if p.type == syms.varargslist:
+ elif p.type == syms.varargslist:
# lambdas
if t == token.RPAR:
return NO
if content[0] == '#':
content = content[1:]
- if content and content[0] not in {' ', '!', '#'}:
+ if content and content[0] not in ' !:#':
content = ' ' + content
return '#' + content