
    *e                        d dl mZ d dlmZmZ d dlmZ d dlmZ d dlm	Z	 dd
Z
 G d deee                            ZdS )    )annotations)IterableSetN)TypeVisitorsplit_module_names	type_name
str | Nonereturn	list[str]c                <    | t          |           }|dd         S g S )z8Returns the module names of a fully qualified type name.N   r   )r	   possible_module_namess     0lib/python3.11/site-packages/mypy/indirection.pyextract_module_namesr   
   s*     29 = =$QRR((	    c                      e Zd ZdZd8dZd9dZd:dZd;dZd<dZd=dZ	d>dZ
d?dZd@dZdAdZdBdZdCdZdDd ZdEd"ZdFd$ZdGd&ZdHd(ZdId*ZdJd,ZdKd.ZdLd0ZdMd2ZdNd4ZdOd6Zd7S )PTypeIndirectionVisitorz7Returns all module references within a particular type.r   Nonec                :    i | _         t                      | _        d S N)cachesetseen_aliases)selfs    r   __init__zTypeIndirectionVisitor.__init__   s    13
69eer   typsIterable[types.Type]set[str]c                ^    | j                                          |                     |          S r   )r   clear_visit)r   r   s     r   find_modulesz#TypeIndirectionVisitor.find_modules   s)    !!!{{4   r   typ_or_typs!types.Type | Iterable[types.Type]c                   t          |t          j                  r|gn|}t                      }|D ]}t          |t          j                  r$|| j        v r&| j                            |           || j        v r| j        |         }n,|                    |           }t          |          | j        |<   |	                    |           |S r   )

isinstancetypesTyper   TypeAliasTyper   addr   acceptupdate)r   r$   r   outputtypmoduless         r   r"   zTypeIndirectionVisitor._visit   s     *;
 C CT}}55 	# 	#C#u233 +$+++!%%c***dj  *S/**T**"%g,,
3MM'""""r   ttypes.UnboundTypec                6    |                      |j                  S r   )r"   argsr   r1   s     r   visit_unbound_typez)TypeIndirectionVisitor.visit_unbound_type0       {{16"""r   types.AnyTypec                    t                      S r   r   r5   s     r   	visit_anyz TypeIndirectionVisitor.visit_any3       uur   types.NoneTypec                    t                      S r   r:   r5   s     r   visit_none_typez&TypeIndirectionVisitor.visit_none_type6   r<   r   types.UninhabitedTypec                    t                      S r   r:   r5   s     r   visit_uninhabited_typez-TypeIndirectionVisitor.visit_uninhabited_type9   r<   r   types.ErasedTypec                    t                      S r   r:   r5   s     r   visit_erased_typez(TypeIndirectionVisitor.visit_erased_type<   r<   r   types.DeletedTypec                    t                      S r   r:   r5   s     r   visit_deleted_typez)TypeIndirectionVisitor.visit_deleted_type?   r<   r   types.TypeVarTypec                    |                      |j                  |                      |j                  z  |                      |j                  z  S r   )r"   valuesupper_bounddefaultr5   s     r   visit_type_varz%TypeIndirectionVisitor.visit_type_varB   s>    {{18$$t{{1='A'AADKKPQPYDZDZZZr   types.ParamSpecTypec                l    |                      |j                  |                      |j                  z  S r   r"   rL   rM   r5   s     r   visit_param_specz'TypeIndirectionVisitor.visit_param_specE   )    {{1=))DKK	,B,BBBr   types.TypeVarTupleTypec                l    |                      |j                  |                      |j                  z  S r   rQ   r5   s     r   visit_type_var_tuplez+TypeIndirectionVisitor.visit_type_var_tupleH   rS   r   types.UnpackTypec                6    |j                             |           S r   )typer,   r5   s     r   visit_unpack_typez(TypeIndirectionVisitor.visit_unpack_typeK   s    v}}T"""r   types.Parametersc                6    |                      |j                  S r   )r"   	arg_typesr5   s     r   visit_parametersz'TypeIndirectionVisitor.visit_parametersN   s    {{1;'''r   types.Instancec                8   |                      |j                  }|j        rx|j        j        D ])}|                    t          |j                             *|j        j        6|                    t          |j        j        j        j                             |S r   )r"   r4   rY   mror-   r   module_namemetaclass_type)r   r1   outss       r   visit_instancez%TypeIndirectionVisitor.visit_instanceQ   s    kk!&!!6 	W VZ > >

-am<<====v$0

-af.C.H.TUUVVV
r   types.CallableTypec                    |                      |j                  |                      |j                  z  }|j        ,|                    t          |j        j                             |S r   )r"   r]   ret_type
definitionr-   r   fullname)r   r1   rd   s      r   visit_callable_typez*TypeIndirectionVisitor.visit_callable_type]   sU    kk!+&&QZ)@)@@<#JJ+AL,ABBCCC
r   types.Overloadedc                l    |                      |j                  |                      |j                  z  S r   )r"   itemsfallbackr5   s     r   visit_overloadedz'TypeIndirectionVisitor.visit_overloadedc   s)    {{17##dkk!*&=&===r   types.TupleTypec                l    |                      |j                  |                      |j                  z  S r   )r"   ro   partial_fallbackr5   s     r   visit_tuple_typez'TypeIndirectionVisitor.visit_tuple_typef   s*    {{17##dkk!2D&E&EEEr   types.TypedDictTypec                    |                      |j                                                  |                      |j                  z  S r   )r"   ro   rK   rp   r5   s     r   visit_typeddict_typez+TypeIndirectionVisitor.visit_typeddict_typei   s3    {{17>>++,,t{{1:/F/FFFr   types.LiteralTypec                6    |                      |j                  S r   )r"   rp   r5   s     r   visit_literal_typez)TypeIndirectionVisitor.visit_literal_typel   s    {{1:&&&r   types.UnionTypec                6    |                      |j                  S r   )r"   ro   r5   s     r   visit_union_typez'TypeIndirectionVisitor.visit_union_typeo   s    {{17###r   types.PartialTypec                    t                      S r   r:   r5   s     r   visit_partial_typez)TypeIndirectionVisitor.visit_partial_typer   r<   r   types.TypeTypec                6    |                      |j                  S r   )r"   itemr5   s     r   visit_type_typez&TypeIndirectionVisitor.visit_type_typeu   r7   r   types.TypeAliasTypec                P    |                      t          j        |                    S r   )r"   r(   get_proper_typer5   s     r   visit_type_alias_typez,TypeIndirectionVisitor.visit_type_alias_typex   s    {{5033444r   N)r   r   )r   r   r   r   )r$   r%   r   r   )r1   r2   r   r   )r1   r8   r   r   )r1   r=   r   r   )r1   r@   r   r   )r1   rC   r   r   )r1   rF   r   r   )r1   rI   r   r   )r1   rO   r   r   )r1   rT   r   r   )r1   rW   r   r   )r1   r[   r   r   )r1   r_   r   r   )r1   rg   r   r   )r1   rm   r   r   )r1   rr   r   r   )r1   rv   r   r   )r1   ry   r   r   )r1   r|   r   r   )r1   r   r   r   )r1   r   r   r   )r1   r   r   r   )__name__
__module____qualname____doc__r   r#   r"   r6   r;   r?   rB   rE   rH   rN   rR   rV   rZ   r^   rf   rl   rq   ru   rx   r{   r~   r   r   r    r   r   r   r      s       AA< < < <! ! ! !   "# # # #               [ [ [ [C C C CC C C C# # # #( ( ( (
 
 
 
   > > > >F F F FG G G G' ' ' '$ $ $ $   # # # #5 5 5 5 5 5r   r   )r	   r
   r   r   )
__future__r   typingr   r   
mypy.typesr(   r   	mypy.utilr   r   strr   r   r   r   <module>r      s    " " " " " "                       " " " " " " ( ( ( ( ( (   e5 e5 e5 e5 e5[S2 e5 e5 e5 e5 e5r   