More support for numpy tuple indexing

This commit is contained in:
Łukasz Langa 2018-03-17 02:39:53 -07:00
parent 94f50c1461
commit 2fa31ff314
2 changed files with 10 additions and 2 deletions

View File

@ -831,7 +831,7 @@ def __attrs_post_init__(self) -> None:
OPENING_BRACKETS = set(BRACKET.keys()) OPENING_BRACKETS = set(BRACKET.keys())
CLOSING_BRACKETS = set(BRACKET.values()) CLOSING_BRACKETS = set(BRACKET.values())
BRACKETS = OPENING_BRACKETS | CLOSING_BRACKETS BRACKETS = OPENING_BRACKETS | CLOSING_BRACKETS
ALWAYS_NO_SPACE = CLOSING_BRACKETS | {token.COMMA, token.COLON, STANDALONE_COMMENT} ALWAYS_NO_SPACE = CLOSING_BRACKETS | {token.COMMA, STANDALONE_COMMENT}
def whitespace(leaf: Leaf) -> str: # noqa C901 def whitespace(leaf: Leaf) -> str: # noqa C901
@ -849,12 +849,18 @@ def whitespace(leaf: Leaf) -> str: # noqa C901
return DOUBLESPACE return DOUBLESPACE
assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}" assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}"
if t == token.COLON and p.type != syms.subscript:
return NO
prev = leaf.prev_sibling prev = leaf.prev_sibling
if not prev: if not prev:
prevp = preceding_leaf(p) prevp = preceding_leaf(p)
if not prevp or prevp.type in OPENING_BRACKETS: if not prevp or prevp.type in OPENING_BRACKETS:
return NO return NO
if t == token.COLON:
return SPACE if prevp.type == token.COMMA else NO
if prevp.type == token.EQUAL: if prevp.type == token.EQUAL:
if prevp.parent and prevp.parent.type in { if prevp.parent and prevp.parent.type in {
syms.typedargslist, syms.typedargslist,
@ -983,7 +989,7 @@ def whitespace(leaf: Leaf) -> str: # noqa C901
return NO return NO
elif prev.type == token.COLON: else:
return NO return NO
elif p.type == syms.atom: elif p.type == syms.atom:

View File

@ -90,6 +90,7 @@
slice[1:] slice[1:]
slice[::-1] slice[::-1]
numpy[:, 0:1] numpy[:, 0:1]
numpy[:, :-1]
(str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None) (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
{'2.7': dead, '3.7': long_live or die_hard} {'2.7': dead, '3.7': long_live or die_hard}
{'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'} {'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}
@ -232,6 +233,7 @@ async def f():
slice[1:] slice[1:]
slice[::-1] slice[::-1]
numpy[:, 0:1] numpy[:, 0:1]
numpy[:, :-1]
(str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None) (str or None) if (sys.version_info[0] > (3,)) else (str or bytes or None)
{'2.7': dead, '3.7': long_live or die_hard} {'2.7': dead, '3.7': long_live or die_hard}
{'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'} {'2.7', '3.6', '3.7', '3.8', '3.9', '4.0' if gilectomy else '3.10'}