
    MhZ                        d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ 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lmZmZ d dlmZ d Z G d d          Z G d de          Z G d de          Z G d d          Z  G d de e          Z! G d de          Z" G d d          Z# G d de#          Z$ G d de$e          Z% G d  d!e%          Z& G d" d#e&          Z' G d$ d%e&          Z( G d& d'e#          Z) G d( d)e          Z* G d* d+e*          Z+ G d, d-          Z, G d. d/          Z- G d0 d1e-e"          Z. G d2 d3e e          Z/ G d4 d5e-e/          Z0d6S )7    )abstractmethod)	Parameter)OptionalTuple)search_ancestor)find_statement_documentationclean_scope_docstring)unite)ValueSet	NO_VALUES)inference_state_method_cache)
docstrings)memoize_method)deep_ast_copyinfer_call_of_leaf)plugin_managerc                 P    d}| D ] }|r|dz  }||                                 z  }!|S )N z 
------------------------------
)	py__doc__)namesdocnames      T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/names.py_merge_name_docsr      sF    
C     	* ))Ct~~J    c                       e Zd ZU dZeeeef                  ed<   eed<   dZ	dZ
dZ	 ed             Zed             ZddZd	 Zd
 Zd Zd Zd Zd Zed             Zd ZdS )AbstractNameDefinitionN	start_posstring_nameTc                     t           NNotImplementedErrorselfs    r   inferzAbstractNameDefinition.infer&   s    !!r   c                     | hS r!    r$   s    r   gotozAbstractNameDefinition.goto*   s     vr   Fc                 z    |                                  }||s|S |                                 j        }|d S ||z   S r!   )_get_qualified_namesget_root_contextstring_names)r%   include_module_namesqualified_namesmodule_namess       r   get_qualified_namesz*AbstractNameDefinition.get_qualified_names0   sO    3355"*>""",,..;4o--r   c                     d S r!   r(   r$   s    r   r+   z+AbstractNameDefinition._get_qualified_names:   s    tr   c                 4    | j                                         S r!   )parent_contextr,   r$   s    r   r,   z'AbstractNameDefinition.get_root_context>   s    "33555r   c                     | j         S r!   )r   r$   s    r   get_public_namez&AbstractNameDefinition.get_public_nameA   s    r   c                     | j         d| j        j        d| j        dS d| j        j        d| j        d| j         dS )N<z: string_name=>z start_pos=)r   	__class____name__r   r$   s    r   __repr__zAbstractNameDefinition.__repr__D   s_    >!!-1^-D-D-DdFVFVFVWW "6:n6M6M6M6:6F6F6FX 	Xr   c                     dS )NFr(   r$   s    r   	is_importz AbstractNameDefinition.is_importJ   s    ur   c                     dS )Nr   r(   r$   s    r   r   z AbstractNameDefinition.py__doc__M   s    rr   c                     | j         j        S r!   )r4   api_typer$   s    r   rA   zAbstractNameDefinition.api_typeP   s    "++r   c                     dS )z
        Returns either None or the value that is public and qualified. Won't
        return a function, because a name in a function is never public.
        Nr(   r$   s    r   get_defining_qualified_valuez3AbstractNameDefinition.get_defining_qualified_valueT   s	    
 tr   F)r;   
__module____qualname__r   r   r   int__annotations__strr4   	tree_nameis_value_namer   r&   r)   r1   r+   r,   r6   r<   r>   r   propertyrA   rC   r(   r   r   r   r      s$        +/Ixc3h(///NIM " " ^"   ^
. . . .  6 6 6     X X X     , , X,    r   r   c                   "    e Zd ZdZdZd Zd ZdS )AbstractArbitraryNamez
    When you e.g. want to complete dicts keys, you probably want to complete
    string literals, which is not really a name, but for Jedi we use this
    concept of Name for completions as well.
    Fc                 :    || _         || _        |j        | _        d S r!   )inference_stater   builtins_moduler4   )r%   rP   strings      r   __init__zAbstractArbitraryName.__init__d   s#    .!-=r   c                     t           S r!   r   r$   s    r   r&   zAbstractArbitraryName.inferi       r   N)r;   rE   rF   __doc__rK   rS   r&   r(   r   r   rN   rN   \   sC         
 M> > >
    r   rN   c                   j     e Zd Zd Zd
 fd	Zd Zd Zd Zd Ze	d             Z
e	d	             Z xZS )AbstractTreeNamec                 "    || _         || _        d S r!   )r4   rJ   )r%   r4   rJ   s      r   rS   zAbstractTreeName.__init__n   s    ,"r   Fc                 t   t          | j        dd          }||j        dk    r8|                                                                                                 s<|r8|j        s1t          d |                    | j                  D                       S d S t                      	                    |          S )Nimport_nameimport_from   c              3   $   K   | ]}|j         V  d S r!   )value).0ns     r   	<genexpr>z7AbstractTreeName.get_qualified_names.<locals>.<genexpr>|   s$      \\QW\\\\\\r   )
r   rJ   levelr,   	get_value
is_packagetupleget_path_for_namesuperr1   )r%   r.   import_noder:   s      r   r1   z$AbstractTreeName.get_qualified_namesr   s    %dnm]SS
 "K,=,B,B040E0E0G0G0Q0Q0S0S0^0^0`0` -C $ K,= \\k.K.KDN.[.[\\\\\\tww**+?@@@r   c                 \    | j                                         }|d S || j        j        fz   S r!   )r4   r1   rJ   r`   )r%   parent_namess     r   r+   z%AbstractTreeName._get_qualified_names   s4    *>>@@4t~3555r   c                     |                                  rt          d          | j        r| j                                        S d S )Nz&Shouldn't really happen, please report)r>   r#   r4   re   r$   s    r   rC   z-AbstractTreeName.get_defining_qualified_value   sH    >> 	3%&NOOO  	3&00222tr   c                    | j         | j                            d          }|<|j        }|dk    rj        j        dv}|r| gS n;|dv rddlm}  |          }|S | gS ddlm}  |          }|d	 |D             S j        }|j        }	|	d
k    ra|j        d         dk    rO|j        d         k    r=|j        }
|
j        dk    r|
j        }
|
j        dk    r|
j        dk    r!	                    |
j        d                   }n|
j        j        
                    |
          }|
j        j        d |         }|d         dk    r|                    d           	                    |d                   }ddlm} |dd          D ]}
 |||
          }g }|D ]U}|                                D ]>}|                                D ]'}|j        j        k    r|                    |           (?V|S nu|	dk    ro|j        
                              }|dk    rOt'          |          }g |j        |dz
  d <   	                    |          }t)          fd|D                       S |	dk    r:|j        d         dk    r)t+          d          }|                              S t/          dd          p}|j        dk    r}                    |j                  S )NTimport_name_always	expr_stmt)powertrailer)r]   r\   r   )goto_import)%follow_error_node_imports_if_possiblec                     g | ]	}|j         
S r(   r   )ra   r`   s     r   
<listcomp>z)AbstractTreeName.goto.<locals>.<listcomp>   s    777u
777r   argumentr^   =arglistclassdef	decoratorawait)infer_trailerdotted_namec              3   F   K   | ]}|                                V  dS )name_contextN)r)   )ra   r`   contextr   s     r   rc   z(AbstractTreeName.goto.<locals>.<genexpr>   sG         JJt'J::     r   rs   .)cut_own_trailerr   lambdef)position)r4   rJ   get_definitiontypeparentjedi.inference.importsrt   ru   children
infer_nodeindexpopjedi.inference.syntax_treer   get_signaturesget_param_namesr   r`   appendr   r
   r   r)   r   r   )r%   
definitiontype_is_simple_namert   r0   ru   valuespar	node_typers   	value_setito_inferr   param_namesr`   	signature
param_namer   
new_dottedstmtr   r   s                         @@r   r)   zAbstractTreeName.goto   s   %~((D(AA
!OE## "&!19M!M! " 6M"888>>>>>>*{7D99##vTTTTTT::7DIIF!777777kH	
""s|A#'='=#,q/UYBYBYjG|y((!.|z))<;.. ' 2 273CA3F G GII/55g>>A&~6rr:H{g-- Q ' 2 28A; ? ?IHHHHHH#+ABB< O O$1M'9g$N$N		 & ? ?E%*%9%9%;%; ? ?	*3*C*C*E*E ? ?J)5CC + 2 2: > > >?? #"% *& -''L&&t,,Eqyy*3//
24
#EAIJJ/ ++J77     !'     
 	!!cl1o&<&<'tLLLF;;t';:::"k9    yI%%<<t~<>>>r   c                 6    t          | j        dd          }|d uS )Nr]   r\   r   rJ   )r%   imps     r   r>   zAbstractTreeName.is_import   s    dnm]KK$r   c                     | j         j        S r!   )rJ   r`   r$   s    r   r   zAbstractTreeName.string_name   s    ~##r   c                     | j         j        S r!   )rJ   r   r$   s    r   r   zAbstractTreeName.start_pos   s    ~''r   rD   )r;   rE   rF   rS   r1   r+   rC   r)   r>   rL   r   r   __classcell__r:   s   @r   rY   rY   m   s        # # #A A A A A A 6 6 6  F? F? F?P   $ $ X$ ( ( X( ( ( ( (r   rY   c                   L     e Zd Zd Zd Zd Z fdZd Zed             Z	 xZ
S )ValueNameMixinc                 ,    t          | j        g          S r!   )r   _valuer$   s    r   r&   zValueNameMixin.infer   s    &&&r   c                     | j                                         }|s@| j                                         r'ddlm}  || gd          }| |vrt          |          S |S )Nr   convert_namesFprefer_stub_to_compiled)r   r   is_stub!jedi.inference.gradual.conversionr   r   )r%   r   r   r   s       r   r   zValueNameMixin.py__doc__   sx    k##%% 	/t{**,, 	/GGGGGG!M4&%HHHE5  '...
r   c                 4    | j                                         S r!   )r   r1   r$   s    r   r+   z#ValueNameMixin._get_qualified_names   s    {..000r   c                     | j         | j                                        S t                                                      S r!   )r4   r   
as_contextri   r,   r%   r:   s    r   r,   zValueNameMixin.get_root_context   s6    &;))+++ww'')))r   c                     | j         }|A|                                s|                                r| j                                         S d S r!   )r4   	is_moduleis_classre   )r%   r   s     r   rC   z+ValueNameMixin.get_defining_qualified_value   sL    %G$5$5$7$77;K;K;M;M&00222tr   c                     | j         j        S r!   )r   rA   r$   s    r   rA   zValueNameMixin.api_type   s    {##r   )r;   rE   rF   r&   r   r+   r,   rC   rL   rA   r   r   s   @r   r   r      s        ' ' '  1 1 1* * * * *
   $ $ X$ $ $ $ $r   r   c                   $     e Zd Z fdZd Z xZS )	ValueNamec                 d    t                                          |j        |           || _        d S r!   )ri   rS   r4   r   )r%   r`   rJ   r:   s      r   rS   zValueName.__init__  s+    -y999r   c                 6    t          | j        j        g          S r!   )r   r   r   r$   s    r   r)   zValueName.goto	  s    )*+++r   )r;   rE   rF   rS   r)   r   r   s   @r   r   r     sG            , , , , , , ,r   r   c                       e Zd Z eddddd          Zd Zed             Zd Zed	             Z	 e
d
          d             ZdS )TreeNameDefinitionmodulefunctionparamclass)r\   r]   funcdefr   r|   c                 P    ddl m}  || j        j        | j        | j                  S )Nr   )tree_name_to_values)r   r   r4   rP   rJ   )r%   r   s     r   r&   zTreeNameDefinition.infer  s=    BBBBBB""/N
 
 	
r   c                     | j                             d          }|dS | j                            |j        d          S )NTro   	statement)rJ   r   
_API_TYPESgetr   )r%   r   s     r   rA   zTreeNameDefinition.api_type  s?    ^22d2KK
;"":?K@@@r   c                    g }d}| j         j        }| j         }||j        dv rt          |j                  D ]q\  }}||k    rft          |dz            }|r8t          t          |j                  |z
  dz            }t          ||           }|                    d||f            nrt          d          d}n|j        dk    rd}n
|j        d	v rn|}|j        }||S )
a  
        Returns an array of tuple(int, node) of the indexes that are used in
        tuple assignments.

        For example if the name is ``y`` in the following code::

            x, (y, z) = 2, ''

        would result in ``[(1, xyz_node), (0, yz_node)]``.

        When searching for b in the case ``a, *b, c = [...]`` it will return::

            [(slice(1, -1), abc_node)]
        FN)testlisttestlist_comptestlist_star_exprexprlist   r   zCouldn't find the assignment.	star_exprT)rq   sync_comp_for)
rJ   r   r   	enumerater   rG   lensliceinsertLookupError)	r%   indexesis_star_exprnodecomparer   childr   from_ends	            r   assignment_indexesz%TreeNameDefinition.assignment_indexes&  s     ~$.y[[[ )$- 8 8 	G 	GHAu'' #AE

' <'*C,>,>,Ba+G'H'HH$)%($;$;Eq5$-888 ( &&EFFF$k))#<<<G;D' ( r   c                     | j         j        S r!   )r4   rP   r$   s    r   rP   z"TreeNameDefinition.inference_stateO  s     "22r   r   )defaultc                    | j         }|dv rx| j                                                                        r'ddlm}  || gd          }| |vrt          |          S t          | j        	                                          S |dk    r'| 
                                }| |vrt          |          S |dk    r?| j                                        r&t          | j        	                                          S dS )	N)r   r   rL   r   r   Fr   r   r   r   )rA   r4   r,   r   r   r   r   r	   rJ   r   r)   is_definitionr   )r%   rA   r   r   s       r   r   zTreeNameDefinition.py__doc__T  s   =888"3355==?? 3KKKKKK%tfeLLLu$$+E222 ))F)F)H)HIIIxIIKKE5  '...{""t~'C'C'E'E"/0M0M0O0OPPPrr   N)r;   rE   rF   dictr   r&   rL   rA   r   rP   r   r   r(   r   r   r   r     s          J
 
 
 A A XA' ' 'R 3 3 X3 "!"---  .-  r   r   c                   ,    e Zd ZddZddZd Zd	dZdS )
_ParamMixinTc                     t           j        t           j        g}|r|                    t           j                   |                                 |v S r!   )r   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr   VAR_POSITIONALget_kind)r%   include_staroptionss      r   maybe_positional_argumentz%_ParamMixin.maybe_positional_argumentl  sB    ,i.MN 	5NN93444}}'))r   c                     t           j        t           j        g}|r|                    t           j                   |                                 |v S r!   )r   KEYWORD_ONLYr   r   VAR_KEYWORDr   )r%   include_starsr   s      r   maybe_keyword_argumentz"_ParamMixin.maybe_keyword_argumentr  sB    )9+JK 	2NN90111}}'))r   c                 v    |                                  }|t          j        k    rdS |t          j        k    rdS dS )N*z**r   r   r   r   r   r%   kinds     r   _kind_stringz_ParamMixin._kind_stringx  s:    }}9+++39(((4rr   Fc                     d S r!   r(   )r%   r.   s     r   r1   z_ParamMixin.get_qualified_names  s    tr   N)TrD   )r;   rE   rF   r   r   r   r1   r(   r   r   r   r   k  s_        * * * ** * * *       r   r   c                   @    e Zd ZdZd Zd Zd Zed             Zd Z	dS )ParamNameInterfacer   c                     t           r!   r"   r$   s    r   r   zParamNameInterface.get_kind      !!r   c                     t           r!   r"   r$   s    r   	to_stringzParamNameInterface.to_string  r   r   c                     dS )as  
        For dealing with type inference and working around the graph, we
        sometimes want to have the param name of the execution. This feels a
        bit strange and we might have to refactor at some point.

        For now however it exists to avoid infering params when we don't really
        need them (e.g. when we can just instead use annotations.
        Nr(   r$   s    r   get_executed_param_namez*ParamNameInterface.get_executed_param_name  s	     tr   c                 v    |                                  }|t          j        k    rdS |t          j        k    rdS dS )Nr^   r   r   r   r   s     r   
star_countzParamNameInterface.star_count  s:    }}9+++19(((1qr   c                     t           S r!   rU   r$   s    r   infer_defaultz ParamNameInterface.infer_default  rV   r   N)
r;   rE   rF   rA   r   r  r  rL   r  r  r(   r   r   r   r     sp        H" " "" " "	 	 	   X    r   r   c                   (    e Zd ZdZdZd Zd Zd ZdS )BaseTreeParamNameNc                     |                                  |                                 z   }| j        }| j        }||d|                    d          z   z  }||d|                    d          z   z  }|S )N: F)include_prefixrz   )r   r6   annotation_nodedefault_nodeget_code)r%   output
annotationr   s       r   r  zBaseTreeParamName.to_string  s    ""$$t';';'='==)
#!dZ000FFFFFcG,,E,BBBBFr   c                 R    | j         }|                    d          r
|dd          }|S )N__r   )r   
startswithr%   r   s     r   r6   z!BaseTreeParamName.get_public_name  s2    ??4   	 8Dr   c                     | gS r!   r(   )r%   kwargss     r   r)   zBaseTreeParamName.goto  s	    vr   )r;   rE   rF   r  r  r  r6   r)   r(   r   r   r
  r
    sK        OL        r   r
  c                   j     e Zd Z fdZd Zed             ZddZd Zed             Z	d	 Z
d
 Z xZS )_ActualTreeParamNamec                 ~    t                                          |                                |           || _        d S r!   )ri   rS   get_default_param_contextfunction_value)r%   r  rJ   r:   s      r   rS   z_ActualTreeParamName.__init__  sA    4466		C 	C 	C,r   c                 ,    t          | j        d          S )Nr   r   r$   s    r   _get_param_nodez$_ActualTreeParamName._get_param_node  s    t~w777r   c                 4    |                                  j        S r!   )r  r  r$   s    r   r  z$_ActualTreeParamName.annotation_node  s    ##%%00r   TFc                     ddl m}  || j        |                                 |          }|r|                                }|S )Nr   )infer_param)ignore_stars)!jedi.inference.gradual.annotationr"  r  r  execute_annotation)r%   r%  r#  r"  r   s        r   infer_annotationz%_ActualTreeParamName.infer_annotation  sa    AAAAAA!5!5!7!7%' ' '  	1..00Fr   c                 V    | j         }|t          S | j                            |          S r!   )r  r   r4   r   )r%   r   s     r   r  z"_ActualTreeParamName.infer_default  s,     <"--d333r   c                 4    |                                  j        S r!   )r  r   r$   s    r   r  z!_ActualTreeParamName.default_node  s    ##%%--r   c                    |                                  }|j        dk    rt          j        S |j        dk    rt          j        S |j        j                            d          rt          j        S |j	        }d}|j
        D ]U}|r|dk    rt          j        c S |dk    rt          j        c S |j        dk    r|j        rt          j        c S ||k    rd}Vt          j        S )	Nr^   r   r  F/r   r   T)r  r  r   r   r   r   r`   r  r   r   r   r   r   r   )r%   
tree_paramr   param_appearedps        r   r   z_ActualTreeParamName.get_kind  s   ))++
 A%%++ A%%(( ? ++D11 	-,," 	. 	.A 
.88$4444  88$11116W$$| 6(5555J)-..r   c                     |                                  }|r|S t          j        | j        |                                           }|S r!   )r&  r   r"  r  r  )r%   r   
doc_paramss      r   r&   z_ActualTreeParamName.infer  sG    &&(( 	M+D,?AUAUAWAWXX
r   )TF)r;   rE   rF   rS   r  rL   r  r&  r  r  r   r&   r   r   s   @r   r  r    s        - - - - -
8 8 8 1 1 X1   4 4 4 . . X./ / /8      r   r  c                        e Zd Z ej        d           fd            Z ej        d           fd            Z xZS )AnonymousParamNamegoto_anonymous_paramrw   c                 D    t                                                      S r!   )ri   r)   r   s    r   r)   zAnonymousParamName.goto  s    ww||~~r   infer_anonymous_paramc                    t                                                      }|r|S ddlm} |                                 } || j        |j                  }|r|S |j        dk    rddlm	}  || j        j
        g           }nZ|j        dk    rddlm}  || j        j
        i           }n2|j        t          S | j        j                            |j                  S t!          |h          S )Nr   )dynamic_param_lookupr^   )	FakeTupler   )FakeDict)ri   r&   jedi.inference.dynamic_paramsr6  r  r  position_indexr  jedi.inference.value.iterabler7  rP   r8  r   r   r4   r   r   )r%   r   r6  r   r7  r`   r8  r:   s          r   r&   zAnonymousParamName.infer	  s    	MFFFFFF$$&&%%d&95;OPP 	Mq  ??????Id1A2FFEE"">>>>>>HT0@"EEEE]"&5@@OOO   r   )r;   rE   rF   r   decorater)   r&   r   r   s   @r   r1  r1    s        ^"8999    :9 ^"9:::! ! ! ! ;:! ! ! ! !r   r1  c                   .     e Zd Z fdZ fdZd Z xZS )	ParamNamec                 Z    t                                          ||           || _        d S r!   )ri   rS   	arguments)r%   r  rJ   r@  r:   s       r   rS   zParamName.__init__"  s(    333"r   c                     t                                                      }|r|S |                                                                 S r!   )ri   r&   r  )r%   r   r:   s     r   r&   zParamName.infer&  s?     	M++--33555r   c                 x    ddl m}  || j        | j                  }||                                 j                 S )Nr   )get_executed_param_names)jedi.inference.paramrC  r  r@  r  r:  )r%   rC  params_namess      r   r  z!ParamName.get_executed_param_name-  sE    AAAAAA//0CT^TTD0022ABBr   )r;   rE   rF   rS   r&   r  r   r   s   @r   r>  r>  !  sg        # # # # #6 6 6 6 6C C C C C C Cr   r>  c                        e Zd Zd Zd Zd ZdS )ParamNameWrapperc                     || _         d S r!   )_wrapped_param_name)r%   r   s     r   rS   zParamNameWrapper.__init__4  s    #-   r   c                 ,    t          | j        |          S r!   )getattrrI  r  s     r   __getattr__zParamNameWrapper.__getattr__7  s    t/666r   c                 2    d| j         j        d| j        dS )Nr8   r  r9   )r:   r;   rI  r$   s    r   r<   zParamNameWrapper.__repr__:  s#     !^444d6N6N6NOOr   Nr;   rE   rF   rS   rL  r<   r(   r   r   rG  rG  3  sF        . . .7 7 7P P P P Pr   rG  c                   r    e Zd ZdZdZd ZddZed             Ze	d             Z
d Zed	             Zd
 ZdS )
ImportNamer^   r   r   c                 "    || _         || _        d S r!   )_from_module_contextr   )r%   r4   r   s      r   rS   zImportName.__init__B  s    $2!&r   Fc                     |r?| j         r0| j         dk    s
J d            | j        j        }||S || j        fz   S | j        fS dS )Nr^   z(Everything else is not supported for nowr(   )_levelrS  r-   r   )r%   r.   r0   s      r   r1   zImportName.get_qualified_namesF  si     	'{ :{a''')S'''#8E'''#t'7&999$&&rr   c                     | j         }|                                 }|s|S t          t          |                                                    S r!   )rS  r&   nextiterr   )r%   mimport_valuess      r   r4   zImportName.parent_contextQ  sH    %

 	H D''((33555r   c                 ~    ddl m} | j        } ||j        | j        g|| j                                                  S )Nr   )Importer)rd   )r   r\  rS  rP   r   rU  follow)r%   r\  rY  s      r   r&   zImportName.infer[  sL    333333%x)D,<+=qTTT[[]]]r   c                 >    d |                                  D             S )Nc                     g | ]	}|j         
S r(   rw   )ra   rY  s     r   rx   z#ImportName.goto.<locals>.<listcomp>b  s    ---1---r   )r&   r$   s    r   r)   zImportName.gotoa  s    --

----r   c                     dS )Nr   r(   r$   s    r   rA   zImportName.api_typed  s    xr   c                 D    t          |                                           S r!   )r   r)   r$   s    r   r   zImportName.py__doc__h  s    		,,,r   NrD   )r;   rE   rF   r   rU  rS   r1   rL   r4   r   r&   r)   rA   r   r(   r   r   rP  rP  >  s        IF' ' '	 	 	 	 6 6 X6 ^ ^ ^^
. . .   X- - - - -r   rP  c                       e Zd ZdZdS )SubModuleNamer^   N)r;   rE   rF   rU  r(   r   r   rc  rc  l  s        FFFr   rc  c                        e Zd Zd Zd Zd ZdS )NameWrapperc                     || _         d S r!   )_wrapped_name)r%   wrapped_names     r   rS   zNameWrapper.__init__q  s    )r   c                 ,    t          | j        |          S r!   )rK  rg  r  s     r   rL  zNameWrapper.__getattr__t  s    t)4000r   c                 0    | j         j        d| j        dS )N())r:   r;   rg  r$   s    r   r<   zNameWrapper.__repr__w  s!    >222D4F4F4FGGr   NrN  r(   r   r   re  re  p  sF        * * *1 1 1H H H H Hr   re  c                        e Zd Z fdZ xZS )StubNameMixinc                 (   ddl m} | g}| j        dk    r>d| j                                        j        v rd |                                 D             } ||d          }| |v r t                                                      S t          |          S )Nr   r   r   rz   c                     g | ]	}|j         
S r(   rw   )ra   vs     r   rx   z+StubNameMixin.py__doc__.<locals>.<listcomp>  s    222QV222r   Fr   )
r   r   rA   rJ   r   r   r&   ri   r   r   )r%   r   r   r:   s      r   r   zStubNameMixin.py__doc__|  s    CCCCCC =K''C4>3P3P3R3R3[,[,[22TZZ\\222EeUCCC5==77$$&&& $E***r   )r;   rE   rF   r   r   r   s   @r   rn  rn  {  s8        + + + + + + + + +r   rn  c                        e Zd Z fdZ xZS )StubNamec                     t                                                      }| j        dk    rK|                                                                 dk    r!ddlm t          fd|D                       S |S )Nversion_infosysr   )VersionInfoc              3   .   K   | ]} |          V  d S r!   r(   )ra   crw  s     r   rc   z!StubName.infer.<locals>.<genexpr>  s+      ==qKKNN======r   )ri   r&   r   r,   
py__name__!jedi.inference.gradual.stub_valuerw  r   )r%   inferredrw  r:   s     @r   r&   zStubName.infer  s    77==??~--$2G2G2I2I2T2T2V2VZ_2_2_EEEEEE====H======r   )r;   rE   rF   r&   r   r   s   @r   rs  rs    s8                r   rs  c                   .    e Zd ZdZd Zed             ZdS )
ModuleNamerQ  c                 "    || _         || _        d S r!   )r   _name)r%   r`   r   s      r   rS   zModuleName.__init__  s    


r   c                     | j         S r!   )r  r$   s    r   r   zModuleName.string_name  s
    zr   N)r;   rE   rF   r   rS   rL   r   r(   r   r   r~  r~    sC        I     X  r   r~  c                       e Zd ZdS )StubModuleNameN)r;   rE   rF   r(   r   r   r  r    s        Dr   r  N)1abcr   inspectr   typingr   r   
parso.treer   jedi.parser_utilsr   r	   jedi.inference.utilsr
   jedi.inference.base_valuer   r   jedi.inference.cacher   jedi.inferencer   
jedi.cacher   jedi.inference.helpersr   r   jedi.pluginsr   r   r   rN   rY   r   r   r   r   r   r
  r  r1  r>  rG  rP  rc  re  rn  rs  r~  r  r(   r   r   <module>r     s               " " " " " " " " & & & & & & Q Q Q Q Q Q Q Q & & & & & & 9 9 9 9 9 9 9 9 = = = = = = % % % % % % % % % % % % D D D D D D D D ' ' ' ' ' '  = = = = = = = =@    2   "t( t( t( t( t(- t( t( t(n$ $ $ $ $ $ $ $@, , , , , 0 , , ,[ [ [ [ [) [ [ [|       2       B    *,<   4B B B B B, B B BJ! ! ! ! !- ! ! !:C C C C C$ C C C$P P P P P{ P P P+- +- +- +- +-' +- +- +-\    J   H H H H H H H H+ + + + + + + +(    }0   	 	 	 	 	!7 	 	 		 	 	 	 	]J 	 	 	 	 	r   