
    %^g                    D    d Z ddlmZ ddlmZmZmZ dd	 	 	 	 	 	 	 ddZy)	zf
This is a module for various lookup functions:
functions that will find a semantic node by its name.
    )annotations)MypyFileSymbolTableNodeTypeInfoF)raise_on_missingc                  | }g }	 d|vr|rd|v s
J d|         y|j                  dd      \  }}|j                  |       |j                  |      }|nQ|j                  }|s|r|sJ d|  d       y	 |j	                         }||vr|r||v sJ d|d	|        y||   }	|s|	S |	j
                  }
t        |
t              s|r|
s
J d|         y|
j                  }i)
aW  Find a symbol using it fully qualified name.

    The algorithm has two steps: first we try splitting the name on '.' to find
    the module, then iteratively look for each next chunk after a '.' (e.g. for
    nested classes).

    This function should *not* be used to find a module. Those should be looked
    in the modules dictionary.
    .zCannot find module for N   )maxsplitzCannot find z, got a module symbolzCannot find component z for )rsplitappendgetnamespopnode
isinstancer   )namemodulesr   headresttailmodr   keystnoder   s              +lib/python3.12/site-packages/mypy/lookup.pylookup_fully_qualifiedr      s(    DD
d?d{D&=dV$DD{[[q[1
dDkk$?  IIEC<v-BCC4
hhjee|R'=cWE$%RR|sM{{ $)2|D622t

!     N)r   strr   zdict[str, MypyFile]r   boolreturnzSymbolTableNode | None)__doc__
__future__r   
mypy.nodesr   r   r   r    r   r   <module>r%      sA   
 # : : JO0
0+0BF00r   