33"""
44
55import python_minifier .ast_compat as ast
6+ from python_minifier .ast_annotation import get_parent
67
78from python_minifier .rename .util import is_namespace
89
910
1011def add_parent_to_arguments (arguments , func ):
11- arguments .parent = func
1212 arguments .namespace = func
1313
1414 for arg in getattr (arguments , 'posonlyargs' , []) + arguments .args :
15- add_parent (arg , arguments , func )
15+ add_parent (arg , func )
1616 if hasattr (arg , 'annotation' ) and arg .annotation is not None :
17- add_parent (arg .annotation , arguments , func .namespace )
17+ add_parent (arg .annotation , func .namespace )
1818
1919 if hasattr (arguments , 'kwonlyargs' ):
2020 for arg in arguments .kwonlyargs :
21- add_parent (arg , arguments , func )
21+ add_parent (arg , func )
2222 if arg .annotation is not None :
23- add_parent (arg .annotation , arguments , func .namespace )
23+ add_parent (arg .annotation , func .namespace )
2424
2525 for node in arguments .kw_defaults :
2626 if node is not None :
27- add_parent (node , arguments , func .namespace )
27+ add_parent (node , func .namespace )
2828
2929 for node in arguments .defaults :
30- add_parent (node , arguments , func .namespace )
30+ add_parent (node , func .namespace )
3131
3232 if arguments .vararg :
3333 if hasattr (arguments , 'varargannotation' ) and arguments .varargannotation is not None :
34- add_parent (arguments .varargannotation , arguments , func .namespace )
34+ add_parent (arguments .varargannotation , func .namespace )
3535 elif isinstance (arguments .vararg , str ):
3636 pass
3737 else :
38- add_parent (arguments .vararg , arguments , func )
38+ add_parent (arguments .vararg , func )
3939
4040 if arguments .kwarg :
4141 if hasattr (arguments , 'kwargannotation' ) and arguments .kwargannotation is not None :
42- add_parent (arguments .kwargannotation , arguments , func .namespace )
42+ add_parent (arguments .kwargannotation , func .namespace )
4343 elif isinstance (arguments .kwarg , str ):
4444 pass
4545 else :
46- add_parent (arguments .kwarg , arguments , func )
46+ add_parent (arguments .kwarg , func )
4747
4848
4949def add_parent_to_functiondef (functiondef ):
@@ -55,17 +55,17 @@ def add_parent_to_functiondef(functiondef):
5555 add_parent_to_arguments (functiondef .args , func = functiondef )
5656
5757 for node in functiondef .body :
58- add_parent (node , parent = functiondef , namespace = functiondef )
58+ add_parent (node , namespace = functiondef )
5959
6060 for node in functiondef .decorator_list :
61- add_parent (node , parent = functiondef , namespace = functiondef .namespace )
61+ add_parent (node , namespace = functiondef .namespace )
6262
6363 if hasattr (functiondef , 'type_params' ) and functiondef .type_params is not None :
6464 for node in functiondef .type_params :
65- add_parent (node , parent = functiondef , namespace = functiondef .namespace )
65+ add_parent (node , namespace = functiondef .namespace )
6666
6767 if hasattr (functiondef , 'returns' ) and functiondef .returns is not None :
68- add_parent (functiondef .returns , parent = functiondef , namespace = functiondef .namespace )
68+ add_parent (functiondef .returns , namespace = functiondef .namespace )
6969
7070
7171def add_parent_to_classdef (classdef ):
@@ -74,65 +74,60 @@ def add_parent_to_classdef(classdef):
7474 """
7575
7676 for node in classdef .bases :
77- add_parent (node , parent = classdef , namespace = classdef .namespace )
77+ add_parent (node , namespace = classdef .namespace )
7878
7979 if hasattr (classdef , 'keywords' ):
8080 for node in classdef .keywords :
81- add_parent (node , parent = classdef , namespace = classdef .namespace )
81+ add_parent (node , namespace = classdef .namespace )
8282
8383 if hasattr (classdef , 'starargs' ) and classdef .starargs is not None :
84- add_parent (classdef .starargs , parent = classdef , namespace = classdef .namespace )
84+ add_parent (classdef .starargs , namespace = classdef .namespace )
8585
8686 if hasattr (classdef , 'kwargs' ) and classdef .kwargs is not None :
87- add_parent (classdef .kwargs , parent = classdef , namespace = classdef .namespace )
87+ add_parent (classdef .kwargs , namespace = classdef .namespace )
8888
8989 for node in classdef .body :
90- add_parent (node , parent = classdef , namespace = classdef )
90+ add_parent (node , namespace = classdef )
9191
9292 for node in classdef .decorator_list :
93- add_parent (node , parent = classdef , namespace = classdef .namespace )
93+ add_parent (node , namespace = classdef .namespace )
9494
9595 if hasattr (classdef , 'type_params' ) and classdef .type_params is not None :
9696 for node in classdef .type_params :
97- add_parent (node , parent = classdef , namespace = classdef .namespace )
97+ add_parent (node , namespace = classdef .namespace )
9898
9999
100100def add_parent_to_comprehension (node , namespace ):
101101 assert isinstance (node , (ast .GeneratorExp , ast .SetComp , ast .DictComp , ast .ListComp ))
102102
103103 if hasattr (node , 'elt' ):
104- add_parent (node .elt , parent = node , namespace = node )
104+ add_parent (node .elt , namespace = node )
105105 elif hasattr (node , 'key' ):
106- add_parent (node .key , parent = node , namespace = node )
107- add_parent (node .value , parent = node , namespace = node )
106+ add_parent (node .key , namespace = node )
107+ add_parent (node .value , namespace = node )
108108
109109 iter_namespace = namespace
110110 for generator in node .generators :
111- generator .parent = node
112111 generator .namespace = node
113112
114- add_parent (generator .target , parent = generator , namespace = node )
115- add_parent (generator .iter , parent = generator , namespace = iter_namespace )
113+ add_parent (generator .target , namespace = node )
114+ add_parent (generator .iter , namespace = iter_namespace )
116115 iter_namespace = node
117116 for if_ in generator .ifs :
118- add_parent (if_ , parent = generator , namespace = node )
117+ add_parent (if_ , namespace = node )
119118
120119
121- def add_parent (node , parent = None , namespace = None ):
120+ def add_parent (node , namespace = None ):
122121 """
123- Add a parent attribute to child nodes
124122 Add a namespace attribute to child nodes
125123
126- :param node: The tree to add parent and namespace properties to
124+ :param node: The tree to add namespace properties to
127125 :type node: :class:`ast.AST`
128- :param parent: The parent node of this node
129- :type parent: :class:`ast.AST`
130126 :param namespace: The namespace Node that this node is in
131127 :type namespace: ast.Lambda or ast.Module or ast.FunctionDef or ast.AsyncFunctionDef or ast.ClassDef or ast.DictComp or ast.SetComp or ast.ListComp or ast.Generator
132128
133129 """
134130
135- node .parent = parent if parent is not None else node
136131 node .namespace = namespace if namespace is not None else node
137132
138133 if is_namespace (node ):
@@ -146,12 +141,12 @@ def add_parent(node, parent=None, namespace=None):
146141 add_parent_to_comprehension (node , namespace = namespace )
147142 elif isinstance (node , ast .Lambda ):
148143 add_parent_to_arguments (node .args , func = node )
149- add_parent (node .body , parent = node , namespace = node )
144+ add_parent (node .body , namespace = node )
150145 elif isinstance (node , ast .ClassDef ):
151146 add_parent_to_classdef (node )
152147 else :
153148 for child in ast .iter_child_nodes (node ):
154- add_parent (child , parent = node , namespace = node )
149+ add_parent (child , namespace = node )
155150
156151 return
157152
@@ -163,11 +158,11 @@ def add_parent(node, parent=None, namespace=None):
163158 if isinstance (node , ast .Name ) and isinstance (namespace , ast .ClassDef ):
164159 if isinstance (node .ctx , ast .Load ):
165160 namespace .nonlocal_names .add (node .id )
166- elif isinstance (node .ctx , ast .Store ) and isinstance (node . parent , ast .AugAssign ):
161+ elif isinstance (node .ctx , ast .Store ) and isinstance (get_parent ( node ) , ast .AugAssign ):
167162 namespace .nonlocal_names .add (node .id )
168163
169164 for child in ast .iter_child_nodes (node ):
170- add_parent (child , parent = node , namespace = namespace )
165+ add_parent (child , namespace = namespace )
171166
172167
173168def add_namespace (module ):
0 commit comments