Force parentheses between unary op and binary power. (#909)
This commit is contained in:
parent
7d213c6d43
commit
b073c9a4e9
13
black.py
13
black.py
@ -1643,6 +1643,19 @@ def visit_atom(self, node: Node) -> Iterator[Line]:
|
|||||||
node.children[2].value = ""
|
node.children[2].value = ""
|
||||||
yield from super().visit_default(node)
|
yield from super().visit_default(node)
|
||||||
|
|
||||||
|
def visit_factor(self, node: Node) -> Iterator[Line]:
|
||||||
|
"""Force parentheses between a unary op and a binary power:
|
||||||
|
|
||||||
|
-2 ** 8 -> -(2 ** 8)
|
||||||
|
"""
|
||||||
|
child = node.children[1]
|
||||||
|
if child.type == syms.power and len(child.children) == 3:
|
||||||
|
lpar = Leaf(token.LPAR, "(")
|
||||||
|
rpar = Leaf(token.RPAR, ")")
|
||||||
|
index = child.remove() or 0
|
||||||
|
node.insert_child(index, Node(syms.atom, [lpar, child, rpar]))
|
||||||
|
yield from self.visit_default(node)
|
||||||
|
|
||||||
def visit_INDENT(self, node: Node) -> Iterator[Line]:
|
def visit_INDENT(self, node: Node) -> Iterator[Line]:
|
||||||
"""Increase indentation level, maybe yield a line."""
|
"""Increase indentation level, maybe yield a line."""
|
||||||
# In blib2to3 INDENT never holds comments.
|
# In blib2to3 INDENT never holds comments.
|
||||||
|
@ -11,13 +11,15 @@
|
|||||||
True
|
True
|
||||||
False
|
False
|
||||||
1
|
1
|
||||||
@@ -29,62 +29,83 @@
|
@@ -29,63 +29,84 @@
|
||||||
~great
|
~great
|
||||||
+value
|
+value
|
||||||
-1
|
-1
|
||||||
~int and not v1 ^ 123 + v2 | True
|
~int and not v1 ^ 123 + v2 | True
|
||||||
(~int) and (not ((v1 ^ (123 + v2)) | True))
|
(~int) and (not ((v1 ^ (123 + v2)) | True))
|
||||||
|
-+really ** -confusing ** ~operator ** -precedence
|
||||||
-flags & ~ select.EPOLLIN and waiters.write_task is not None
|
-flags & ~ select.EPOLLIN and waiters.write_task is not None
|
||||||
|
++(really ** -(confusing ** ~(operator ** -precedence)))
|
||||||
+flags & ~select.EPOLLIN and waiters.write_task is not None
|
+flags & ~select.EPOLLIN and waiters.write_task is not None
|
||||||
lambda arg: None
|
lambda arg: None
|
||||||
lambda a=True: a
|
lambda a=True: a
|
||||||
@ -116,7 +118,7 @@
|
|||||||
call(**self.screen_kwargs)
|
call(**self.screen_kwargs)
|
||||||
call(b, **self.screen_kwargs)
|
call(b, **self.screen_kwargs)
|
||||||
lukasz.langa.pl
|
lukasz.langa.pl
|
||||||
@@ -93,23 +114,25 @@
|
@@ -94,23 +115,25 @@
|
||||||
1.0 .real
|
1.0 .real
|
||||||
....__class__
|
....__class__
|
||||||
list[str]
|
list[str]
|
||||||
@ -147,7 +149,7 @@
|
|||||||
slice[0:1:2]
|
slice[0:1:2]
|
||||||
slice[:]
|
slice[:]
|
||||||
slice[:-1]
|
slice[:-1]
|
||||||
@@ -133,113 +156,171 @@
|
@@ -134,113 +157,171 @@
|
||||||
numpy[-(c + 1) :, d]
|
numpy[-(c + 1) :, d]
|
||||||
numpy[:, l[-2]]
|
numpy[:, l[-2]]
|
||||||
numpy[:, ::-1]
|
numpy[:, ::-1]
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
-1
|
-1
|
||||||
~int and not v1 ^ 123 + v2 | True
|
~int and not v1 ^ 123 + v2 | True
|
||||||
(~int) and (not ((v1 ^ (123 + v2)) | True))
|
(~int) and (not ((v1 ^ (123 + v2)) | True))
|
||||||
|
+really ** -confusing ** ~operator ** -precedence
|
||||||
flags & ~ select.EPOLLIN and waiters.write_task is not None
|
flags & ~ select.EPOLLIN and waiters.write_task is not None
|
||||||
lambda arg: None
|
lambda arg: None
|
||||||
lambda a=True: a
|
lambda a=True: a
|
||||||
@ -280,6 +281,7 @@ async def f():
|
|||||||
-1
|
-1
|
||||||
~int and not v1 ^ 123 + v2 | True
|
~int and not v1 ^ 123 + v2 | True
|
||||||
(~int) and (not ((v1 ^ (123 + v2)) | True))
|
(~int) and (not ((v1 ^ (123 + v2)) | True))
|
||||||
|
+(really ** -(confusing ** ~(operator ** -precedence)))
|
||||||
flags & ~select.EPOLLIN and waiters.write_task is not None
|
flags & ~select.EPOLLIN and waiters.write_task is not None
|
||||||
lambda arg: None
|
lambda arg: None
|
||||||
lambda a=True: a
|
lambda a=True: a
|
||||||
|
Loading…
Reference in New Issue
Block a user