aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/ast.py
diff options
context:
space:
mode:
authorBatuhan Taskaya <isidentical@gmail.com>2021-05-16 16:33:22 +0300
committerGitHub <noreply@github.com>2021-05-16 16:33:22 +0300
commit51cef8be8c77dff522bec6f95d6853031bf19038 (patch)
tree0203aa036aa29740dfa17b719cdc854db6cf2522 /Lib/ast.py
parent1a08c5ac49b748d5e4e4b508d22d3804e3cd4dcc (diff)
downloadcpython-51cef8be8c77dff522bec6f95d6853031bf19038.tar.gz
cpython-51cef8be8c77dff522bec6f95d6853031bf19038.zip
bpo-44142: drop redundant parantheses when unparsing tuples as assignment targets (GH-26156)
Diffstat (limited to 'Lib/ast.py')
-rw-r--r--Lib/ast.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/Lib/ast.py b/Lib/ast.py
index 0aef172516b..64487d2f0a6 100644
--- a/Lib/ast.py
+++ b/Lib/ast.py
@@ -640,7 +640,8 @@ _INFSTR = "1e" + repr(sys.float_info.max_10_exp + 1)
class _Precedence:
"""Precedence table that originated from python grammar."""
- TUPLE = auto()
+ NAMED_EXPR = auto() # <target> := <expr1>
+ TUPLE = auto() # <expr1>, <expr2>
YIELD = auto() # 'yield', 'yield from'
TEST = auto() # 'if'-'else', 'lambda'
OR = auto() # 'or'
@@ -838,7 +839,7 @@ class _Unparser(NodeVisitor):
self.traverse(node.value)
def visit_NamedExpr(self, node):
- with self.require_parens(_Precedence.TUPLE, node):
+ with self.require_parens(_Precedence.NAMED_EXPR, node):
self.set_precedence(_Precedence.ATOM, node.target, node.value)
self.traverse(node.target)
self.write(" := ")
@@ -859,6 +860,7 @@ class _Unparser(NodeVisitor):
def visit_Assign(self, node):
self.fill()
for target in node.targets:
+ self.set_precedence(_Precedence.TUPLE, target)
self.traverse(target)
self.write(" = ")
self.traverse(node.value)
@@ -1030,6 +1032,7 @@ class _Unparser(NodeVisitor):
def _for_helper(self, fill, node):
self.fill(fill)
+ self.set_precedence(_Precedence.TUPLE, node.target)
self.traverse(node.target)
self.write(" in ")
self.traverse(node.iter)
@@ -1315,7 +1318,7 @@ class _Unparser(NodeVisitor):
)
def visit_Tuple(self, node):
- with self.delimit("(", ")"):
+ with self.require_parens(_Precedence.TUPLE, node):
self.items_view(self.traverse, node.elts)
unop = {"Invert": "~", "Not": "not", "UAdd": "+", "USub": "-"}