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