@@ -640,7 +640,8 @@ class Param(expr_context):
640640class _Precedence :
641641 """Precedence table that originated from python grammar."""
642642
643- TUPLE = auto ()
643+ NAMED_EXPR = auto () # <target> := <expr1>
644+ TUPLE = auto () # <expr1>, <expr2>
644645 YIELD = auto () # 'yield', 'yield from'
645646 TEST = auto () # 'if'-'else', 'lambda'
646647 OR = auto () # 'or'
@@ -838,7 +839,7 @@ def visit_Expr(self, node):
838839 self .traverse (node .value )
839840
840841 def visit_NamedExpr (self , node ):
841- with self .require_parens (_Precedence .TUPLE , node ):
842+ with self .require_parens (_Precedence .NAMED_EXPR , node ):
842843 self .set_precedence (_Precedence .ATOM , node .target , node .value )
843844 self .traverse (node .target )
844845 self .write (" := " )
@@ -859,6 +860,7 @@ def visit_ImportFrom(self, node):
859860 def visit_Assign (self , node ):
860861 self .fill ()
861862 for target in node .targets :
863+ self .set_precedence (_Precedence .TUPLE , target )
862864 self .traverse (target )
863865 self .write (" = " )
864866 self .traverse (node .value )
@@ -1030,6 +1032,7 @@ def visit_AsyncFor(self, node):
10301032
10311033 def _for_helper (self , fill , node ):
10321034 self .fill (fill )
1035+ self .set_precedence (_Precedence .TUPLE , node .target )
10331036 self .traverse (node .target )
10341037 self .write (" in " )
10351038 self .traverse (node .iter )
@@ -1315,7 +1318,7 @@ def write_item(item):
13151318 )
13161319
13171320 def visit_Tuple (self , node ):
1318- with self .delimit ( "(" , ")" ):
1321+ with self .require_parens ( _Precedence . TUPLE , node ):
13191322 self .items_view (self .traverse , node .elts )
13201323
13211324 unop = {"Invert" : "~" , "Not" : "not" , "UAdd" : "+" , "USub" : "-" }
0 commit comments