4
4
from flake8_variables_names .list_helpers import flat
5
5
6
6
7
- def extract_name_nodes_from_assignment (assignment_node : ast .Assign ) -> List [ast .Name ]:
8
- names = []
9
- for target in assignment_node .targets :
10
- if isinstance (target , ast .Name ):
11
- names .append (target )
12
- elif isinstance (target , ast .Tuple ):
13
- names .extend ([dim for dim in target .dims if isinstance (dim , ast .Name )])
14
- return names
7
+ def extract_names_from_node (node : Union [ast .expr , ast .stmt ]) -> List [ast .Name ]:
8
+ if isinstance (node , ast .Name ):
9
+ return [node ]
10
+ if isinstance (node , ast .Assign ):
11
+ nodes = []
12
+ for target in node .targets :
13
+ nodes .extend (extract_names_from_node (target ))
14
+ return nodes
15
+ if isinstance (node , ast .AnnAssign ):
16
+ return extract_names_from_node (node .target )
17
+ if isinstance (node , ast .Starred ):
18
+ return extract_names_from_node (node .value )
19
+ if isinstance (node , ast .Tuple ):
20
+ nodes = []
21
+ for elt in node .elts :
22
+ nodes .extend (extract_names_from_node (elt ))
23
+ return nodes
24
+ return []
15
25
16
26
17
27
def get_var_names_from_assignment (
18
28
assignment_node : Union [ast .Assign , ast .AnnAssign ],
19
29
) -> List [Tuple [str , ast .AST ]]:
20
- if (
21
- isinstance (assignment_node , ast .AnnAssign )
22
- and isinstance (assignment_node .target , ast .Name )
23
- ):
24
- return [(assignment_node .target .id , assignment_node .target )]
25
- elif isinstance (assignment_node , ast .Assign ):
26
- return [(n .id , n ) for n in extract_name_nodes_from_assignment (assignment_node )]
27
- return []
30
+ return [(n .id , n ) for n in extract_names_from_node (assignment_node )]
28
31
29
32
30
33
def get_var_names_from_funcdef (funcdef_node : ast .FunctionDef ) -> List [Tuple [str , ast .arg ]]:
@@ -46,10 +49,8 @@ def get_var_names_from_for(for_node: ast.For) -> List[Tuple[str, ast.AST]]:
46
49
47
50
def extract_all_variable_names (ast_tree : ast .AST ) -> List [Tuple [str , ast .AST ]]:
48
51
var_info : List [Tuple [str , ast .AST ]] = []
49
- assignments = [n for n in ast .walk (ast_tree ) if isinstance (n , ast .Assign )]
52
+ assignments = [n for n in ast .walk (ast_tree ) if isinstance (n , ( ast .Assign , ast . AnnAssign ) )]
50
53
var_info += flat ([get_var_names_from_assignment (a ) for a in assignments ])
51
- ann_assignments = [n for n in ast .walk (ast_tree ) if isinstance (n , ast .AnnAssign )]
52
- var_info += flat ([get_var_names_from_assignment (a ) for a in ann_assignments ])
53
54
funcdefs = [n for n in ast .walk (ast_tree ) if isinstance (n , ast .FunctionDef )]
54
55
var_info += flat ([get_var_names_from_funcdef (f ) for f in funcdefs ])
55
56
fors = [n for n in ast .walk (ast_tree ) if isinstance (n , ast .For )]
0 commit comments