22import sys
33
44from .expression_printer import ExpressionPrinter
5+ from .util import is_ast_node
56
67
78class ModulePrinter (ExpressionPrinter ):
@@ -64,9 +65,7 @@ def visit_Exec(self, node):
6465 def visit_Expr (self , node ):
6566 assert isinstance (node , ast .Expr )
6667
67- if isinstance (node .value , ast .Yield ):
68- self ._yield_expr (node .value )
69- elif hasattr (ast , 'YieldFrom' ) and isinstance (node .value , ast .YieldFrom ):
68+ if is_ast_node (node .value , (ast .Yield , 'YieldFrom' )):
7069 self ._yield_expr (node .value )
7170 else :
7271 self ._testlist (node .value )
@@ -95,9 +94,7 @@ def visit_Assign(self, node):
9594 self .code += '='
9695
9796 # Yield nodes that are the sole node on the right hand side of an assignment do not need parens
98- if isinstance (node .value , ast .Yield ):
99- self ._yield_expr (node .value )
100- elif hasattr (ast , 'YieldFrom' ) and isinstance (node .value , ast .YieldFrom ):
97+ if is_ast_node (node .value , (ast .Yield , 'YieldFrom' )):
10198 self ._yield_expr (node .value )
10299 else :
103100 self ._testlist (node .value )
@@ -112,9 +109,7 @@ def visit_AugAssign(self, node):
112109 self .code += '='
113110
114111 # Yield nodes that are the sole node on the right hand side of an assignment do not need parens
115- if isinstance (node .value , ast .Yield ):
116- self ._yield_expr (node .value )
117- elif hasattr (ast , 'YieldFrom' ) and isinstance (node .value , ast .YieldFrom ):
112+ if is_ast_node (node .value , (ast .Yield , 'YieldFrom' )):
118113 self ._yield_expr (node .value )
119114 else :
120115 self ._testlist (node .value )
@@ -162,7 +157,7 @@ def visit_Return(self, node):
162157 self .token_break ()
163158 self .code += 'return'
164159 if isinstance (node .value , ast .Tuple ):
165- if sys .version_info < (3 , 8 ) and hasattr ( ast , 'Starred' ) and [n for n in node .value .elts if isinstance (n , ast . Starred )]:
160+ if sys .version_info < (3 , 8 ) and [n for n in node .value .elts if is_ast_node (n , ' Starred' )]:
166161 self .code += '('
167162 self ._testlist (node .value )
168163 self .code += ')'
0 commit comments