1111"""
1212
1313import ast
14+ from typing import Any , Dict , Optional
1415
1516
1617# Copied from orig-index
@@ -21,14 +22,14 @@ class ShortCircuitingVisitor(ast.NodeVisitor):
2122 visiting of children is not the responsibility of the visit_ method.
2223 """
2324
24- def visit (self , node ) :
25+ def visit (self , node : ast . AST ) -> None :
2526 method = "visit_" + node .__class__ .__name__
2627 visitor = getattr (self , method , self .generic_visit )
2728 rv = visitor (node )
2829 if rv :
2930 self .visit_children (node )
3031
31- def visit_children (self , node ) :
32+ def visit_children (self , node : ast . AST ) -> None :
3233 for field , value in ast .iter_fields (node ):
3334 if isinstance (value , list ):
3435 for item in value :
@@ -37,36 +38,37 @@ def visit_children(self, node):
3738 elif isinstance (value , ast .AST ):
3839 self .visit (value )
3940
40- def generic_visit (self , node ) -> bool :
41+ def generic_visit (self , node : ast . AST ) -> bool :
4142 return True
4243
4344
4445class QualifiedNameSaver (ShortCircuitingVisitor ):
4546 """Similar to LibCST's QualifiedNameProvider except simpler and wronger"""
4647
47- def __init__ (self ):
48+ def __init__ (self ) -> None :
4849 super ().__init__ ()
49- self .qualified_name_prefixes = {}
50+ self .qualified_name_prefixes : Dict [ str , str ] = {}
5051
5152 def qualified_name (self , node : ast .AST ) -> str :
5253 if isinstance (node , ast .Attribute ):
5354 return self .qualified_name (node .value ) + "." + node .attr
5455 elif isinstance (node , ast .Expr ):
5556 return self .qualified_name (node .value )
5657 elif isinstance (node , ast .Name ):
57- if new := self .qualified_name_prefixes .get (node .id ):
58+ new = self .qualified_name_prefixes .get (node .id )
59+ if new :
5860 return new
5961 return f"<locals>.{ node .id } "
6062 else :
6163 raise ValueError (f"Complex expression: { type (node )} " )
6264
63- def visit_Import (self , node : ast .Import ):
65+ def visit_Import (self , node : ast .Import ) -> None :
6466 # .names
6567 # alias = (identifier name, identifier? asname)
6668 for a in node .names :
6769 self .qualified_name_prefixes [a .asname or a .name ] = a .name
6870
69- def visit_ImportFrom (self , node : ast .ImportFrom ):
71+ def visit_ImportFrom (self , node : ast .ImportFrom ) -> None :
7072 # .identifier / .level
7173 # .names
7274 # alias = (identifier name, identifier? asname)
@@ -87,12 +89,12 @@ class Unknown:
8789
8890
8991class SetupFindingVisitor (QualifiedNameSaver ):
90- def __init__ (self ):
92+ def __init__ (self ) -> None :
9193 super ().__init__ ()
92- self .setup_call_args = None
93- self .setup_call_kwargs = None
94+ self .setup_call_args : Optional [ Dict [ str , Any ]] = None
95+ self .setup_call_kwargs : Optional [ bool ] = None
9496
95- def visit_Call (self , node ) :
97+ def visit_Call (self , node : ast . Call ) -> None :
9698 # .func (expr, can just be name)
9799 # .args
98100 # .keywords
0 commit comments