
    -hZ                     b   S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  S SKJr  S r " S S5      r " S S\5      r " S S\5      r " S S5      r  " S S\ \5      r! " S S\5      r" " S S5      r# " S S\#5      r$ " S S\$\5      r% " S  S!\%5      r& " S" S#\&5      r' " S$ S%\&5      r( " S& S'\#5      r) " S( S)\5      r* " S* S+\*5      r+ " S, S-5      r, " S. S/5      r- " S0 S1\-\"5      r. " S2 S3\ \5      r/ " S4 S5\-\/5      r0g6)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                 X    SnU  H!  nU(       a  US-  nXR                  5       -  nM#     U$ )N z 
------------------------------
)	py__doc__)namesdocnames      gC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jedi/inference/names.py_merge_name_docsr      s7    
C ))C~~  J    c                       \ rS rSr% Sr\\\\4      \S'   \	\S'   Sr
SrSr \S 5       r\S 5       rSS jrS	 rS
 rS rS rS rS r\S 5       rS rSrg)AbstractNameDefinition   N	start_posstring_nameTc                     [         eNNotImplementedErrorselfs    r   inferAbstractNameDefinition.infer&   s    !!r   c                     U 1$ r"    r%   s    r   gotoAbstractNameDefinition.goto*   s     vr   c                 ~    U R                  5       nUb  U(       d  U$ U R                  5       R                  nUc  g X2-   $ r"   )_get_qualified_namesget_root_contextstring_names)r&   include_module_namesqualified_namesmodule_namess       r   get_qualified_names*AbstractNameDefinition.get_qualified_names0   sE    335"*>"",,.;;--r   c                     g r"   r*   r%   s    r   r.   +AbstractNameDefinition._get_qualified_names:   s    r   c                 6    U R                   R                  5       $ r"   )parent_contextr/   r%   s    r   r/   'AbstractNameDefinition.get_root_context>   s    ""3355r   c                     U R                   $ r"   )r    r%   s    r   get_public_name&AbstractNameDefinition.get_public_nameA   s    r   c                     U R                   c)  SU R                  R                  < SU R                  < S3$ SU R                  R                  < SU R                  < SU R                   < S3$ )N<z: string_name=>z start_pos=)r   	__class____name__r    r%   s    r   __repr__AbstractNameDefinition.__repr__D   sT    >>!-1^^-D-DdFVFVWW "6:nn6M6M6:6F6FX 	Xr   c                     g)NFr*   r%   s    r   	is_import AbstractNameDefinition.is_importJ   s    r   c                     g)Nr   r*   r%   s    r   r    AbstractNameDefinition.py__doc__M   s    r   c                 .    U R                   R                  $ r"   )r9   api_typer%   s    r   rK   AbstractNameDefinition.api_typeP   s    ""+++r   c                     g)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_value3AbstractNameDefinition.get_defining_qualified_valueT   s    
 r   r*   F)rB   
__module____qualname____firstlineno__r   r   r   int__annotations__strr9   	tree_nameis_value_namer   r'   r+   r4   r.   r/   r<   rC   rF   r   propertyrK   rN   __static_attributes__r*   r   r   r   r      s    +/Ixc3h(/NIM " "  
.6 X , ,r   r   c                   (    \ rS rSrSrSrS rS rSrg)AbstractArbitraryName\   z
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                 >    Xl         X l        UR                  U l        g r"   )inference_stater    builtins_moduler9   )r&   r_   strings      r   __init__AbstractArbitraryName.__init__d   s    .!-==r   c                     [         $ r"   r   r%   s    r   r'   AbstractArbitraryName.inferi       r   )r_   r9   r    N)	rB   rQ   rR   rS   __doc__rX   rb   r'   rZ   r*   r   r   r\   r\   \   s    
 M>
r   r\   c                   j   ^  \ rS rSrS rSU 4S jjrS rS rS rS r	\
S 5       r\
S	 5       rS
rU =r$ )AbstractTreeNamem   c                     Xl         X l        g r"   r9   rW   )r&   r9   rW   s      r   rb   AbstractTreeName.__init__n   s    ,"r   c                 `  > [        U R                  SS5      nUb  UR                  S:X  a1  U R                  5       R	                  5       R                  5       (       dD  U(       a<  UR                  (       d+  [        S UR                  U R                  5       5       5      $ g [        TU ]%  U5      $ )Nimport_nameimport_from   c              3   8   #    U  H  oR                   v   M     g 7fr"   )value).0ns     r   	<genexpr>7AbstractTreeName.get_qualified_names.<locals>.<genexpr>|   s     \.[WW.[s   )
r   rW   levelr/   	get_value
is_packagetupleget_path_for_namesuperr4   )r&   r1   import_noderA   s      r   r4   $AbstractTreeName.get_qualified_namesr   s    %dnnm]S
 "K,=,=,B040E0E0G0Q0Q0S0^0^0`0`#K,=,=\k.K.KDNN.[\\\w*+?@@r   c                 p    U R                   R                  5       nUc  g XR                  R                  4-   $ r"   )r9   r4   rW   rt   )r&   parent_namess     r   r.   %AbstractTreeName._get_qualified_names   s5    **>>@~~33555r   c                     U R                  5       (       a  [        S5      eU R                  (       a  U R                  R                  5       $ g )Nz&Shouldn't really happen, please report)rF   r$   r9   rz   r%   s    r   rN   -AbstractTreeName.get_defining_qualified_value   s<    >>%&NOO  &&0022r   c                 `  ^^ U R                   mU R                  mTR                  SS9nUbP  UR                  nUS:X  a$  TR                  R                  S;  nU(       a  U /$ OHUS;   a  SSKJn  U" TT5      nU$ U /$ SSKJn  U" TT5      nUb  U Vs/ s H  oR                  PM     sn$ TR                  n	U	R                  n
U
S	:X  Ga  U	R                  S
   S:X  Gal  U	R                  S   T:X  GaX  U	R                  nUR                  S:X  a  UR                  nUR                  S:w  Ga  UR                  S:X  a  TR                  UR                  S
   5      nOUR                  R                  R                  U5      nUR                  R                  S U nUS   S:X  a  UR                  S5        TR                  US   5      nSSKJn  US
S   H  nU" TX5      nM     / nU H^  nUR                  5        HG  nUR!                  5        H0  nUR"                  TR$                  :X  d  M  UR'                  U5        M2     MI     M`     U$ OkU
S:X  ae  U	R                  R                  T5      nUS:  aD  [)        U	5      n/ UR                  US
-
  S & TR                  U5      n[+        UU4S jU 5       5      $ U
S:X  a.  U	R                  S   S:X  a  [-        TTSS9nUR/                  TTS9$ [1        TSS5      =(       d    TnUR                  S:X  a  TnTR/                  TUR2                  S9$ s  snf )NTimport_name_always	expr_stmt)powertrailer)rq   rp   r   )goto_import)%follow_error_node_imports_if_possibleargumentrr   =arglistclassdef	decoratorawait)infer_trailerdotted_namec              3   D   >#    U  H  nUR                  TTS 9v   M     g7f)name_contextN)r+   )ru   rt   contextr   s     r   rw   (AbstractTreeName.goto.<locals>.<genexpr>   s%      !' JJt'J:!'s    r   .)cut_own_trailerr   lambdef)position)r9   rW   get_definitiontypeparentjedi.inference.importsr   r   r   children
infer_nodeindexpopjedi.inference.syntax_treer   get_signaturesget_param_namesr    rt   appendr   r
   r   r+   r   r   )r&   
definitiontype_is_simple_namer   r3   r   valuesrt   par	node_typer   	value_setito_inferr   param_names	signature
param_namer   
new_dottedstmtr   r   s                         @@r   r+   AbstractTreeName.goto   s   %%~~((D(A
!OOE# "&!1!19M!M! 6M "88>*7D9##vT:7DIF!067u

77kkHH	
"s||A#'=#,,q/UYBYjjG||y(!..||z)<<;. ' 2 273C3CA3F GI//55g>A&~~66r:H{g- Q ' 2 28A; ?IH#+AB<$1'9$N	 $0 &E%*%9%9%;	*3*C*C*EJ)55C + 2 2: > +F &< '
 #"% *& -'LL&&t,Eqy*3/
24
##EAIJ/ ++J7 !'  
 	!cll1o&<'tLF;;t';::"k9   yyI%<<t~~<>>a 8s   L+c                 8    [        U R                  SS5      nUS L$ )Nrq   rp   r   rW   )r&   imps     r   rF   AbstractTreeName.is_import   s    dnnm]K$r   c                 .    U R                   R                  $ r"   )rW   rt   r%   s    r   r    AbstractTreeName.string_name   s    ~~###r   c                 .    U R                   R                  $ r"   )rW   r   r%   s    r   r   AbstractTreeName.start_pos   s    ~~'''r   rm   rP   )rB   rQ   rR   rS   rb   r4   r.   rN   r+   rF   rY   r    r   rZ   __classcell__rA   s   @r   rj   rj   m   sL    #A 6F?P $ $ ( (r   rj   c                   P   ^  \ rS rSrS rS rS rU 4S jrS r\	S 5       r
SrU =r$ )	ValueNameMixin   c                 .    [        U R                  /5      $ r"   )r   _valuer%   s    r   r'   ValueNameMixin.infer   s    &&r   c                     U R                   R                  5       nU(       d=  U R                   R                  5       (       a  SSKJn  U" U /SS9nX;  a  [        U5      $ U$ )Nr   convert_namesFprefer_stub_to_compiled)r   r   is_stub!jedi.inference.gradual.conversionr   r   )r&   r   r   r   s       r   r   ValueNameMixin.py__doc__   sP    kk##%t{{**,,G!4&%HE '..
r   c                 6    U R                   R                  5       $ r"   )r   r4   r%   s    r   r.   #ValueNameMixin._get_qualified_names   s    {{..00r   c                 n   > U R                   c  U R                  R                  5       $ [        TU ]  5       $ r"   )r9   r   
as_contextr~   r/   r&   rA   s    r   r/   ValueNameMixin.get_root_context   s0    &;;))++w'))r   c                     U R                   nUbD  UR                  5       (       d  UR                  5       (       a  U R                   R                  5       $ g r"   )r9   	is_moduleis_classrz   )r&   r   s     r   rN   +ValueNameMixin.get_defining_qualified_value   sG    %%G$5$5$7$77;K;K;M;M&&0022r   c                 .    U R                   R                  $ r"   )r   rK   r%   s    r   rK   ValueNameMixin.api_type   s    {{###r   r*   )rB   rQ   rR   rS   r'   r   r.   r/   rN   rY   rK   rZ   r   r   s   @r   r   r      s0    '1*
 $ $r   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	ValueNamei  c                 F   > [         TU ]  UR                  U5        Xl        g r"   )r~   rb   r9   r   )r&   rt   rW   rA   s      r   rb   ValueName.__init__  s    --y9r   c                 B    [        U R                  R                  /5      $ r"   )r   r   r   r%   s    r   r+   ValueName.goto	  s    ))*++r   )r   )rB   rQ   rR   rS   rb   r+   rZ   r   r   s   @r   r   r     s    , ,r   r   c                   l    \ rS rSr\" SSSSSS9rS r\S 5       rS	 r	\S
 5       r
\" SS9S 5       rSrg)TreeNameDefinitioni  modulefunctionparamclass)rp   rq   funcdefr   r   c                 r    SSK Jn  U" U R                  R                  U R                  U R                  5      $ )Nr   )tree_name_to_values)r   r   r9   r_   rW   )r&   r   s     r   r'   TreeNameDefinition.infer  s1    B"//NN
 	
r   c                     U R                   R                  SS9nUc  gU R                  R                  UR                  S5      $ )NTr   	statement)rW   r   
_API_TYPESgetr   )r&   r   s     r   rK   TreeNameDefinition.api_type  s=    ^^22d2K
"":??K@@r   c                     / nSnU R                   R                  nU R                   nUb  UR                  S;   a  [        UR                  5       Hd  u  pVXd:X  d  M  [        US-  5      nU(       a0  [        [        UR                  5      U-
  S-  5      n[        Xx* 5      nUR                  SXs45          O   [        S5      eSnO&UR                  S:X  a  SnOUR                  S;   a   U$ UnUR                  nUb  M  U$ )	aF  
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)]
F)testlisttestlist_comptestlist_star_exprexprlist   r   zCouldn't find the assignment.	star_exprT)r   sync_comp_for)
rW   r   r   	enumerater   rT   lensliceinsertLookupError)	r&   indexesis_star_exprnodecomparer   childr   from_ends	            r   assignment_indexes%TreeNameDefinition.assignment_indexes&  s     ~~$$..yy[[ )$-- 8HA' #AE
''*C,>,Ba+G'HH$)%$;Eq5-8 !9 &&EFF$k)#<<  G;;D' ( r   c                 .    U R                   R                  $ r"   )r9   r_   r%   s    r   r_   "TreeNameDefinition.inference_stateO  s     ""222r   r   )defaultc                    U R                   nUS;   an  U R                  R                  5       R                  5       (       a  SSKJn  U" U /SS9nX;  a  [        U5      $ [        U R                  R                  5       5      $ US:X  a   U R                  5       nX;  a  [        U5      $ US:X  aB  U R                  R                  5       (       a#  [        U R                  R                  5       5      $ g)	N)r   r   rY   r   r   Fr   r   r   r   )rK   r9   r/   r   r   r   r   r	   rW   r   r+   is_definitionr   )r&   rK   r   r   s       r   r   TreeNameDefinition.py__doc__T  s    ==88""335==??K%tfeL$+E22 ))F)F)HIIxIIKE '..{"t~~'C'C'E'E/0M0M0OPPr   r*   N)rB   rQ   rR   rS   dictr   r'   rY   rK   r  r_   r   r   rZ   r*   r   r   r   r     si    J
 A A'R 3 3 ""- .r   r   c                   8    \ rS rSrSS jrSS jrS rS	S jrSrg)
_ParamMixinik  c                     [         R                  [         R                  /nU(       a  UR                  [         R                  5        U R                  5       U;   $ r"   )r   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDr   VAR_POSITIONALget_kind)r&   include_staroptionss      r   maybe_positional_argument%_ParamMixin.maybe_positional_argumentl  s>    ,,i.M.MNNN9334}}'))r   c                     [         R                  [         R                  /nU(       a  UR                  [         R                  5        U R                  5       U;   $ r"   )r   KEYWORD_ONLYr  r   VAR_KEYWORDr  )r&   include_starsr  s      r   maybe_keyword_argument"_ParamMixin.maybe_keyword_argumentr  s>    ))9+J+JKNN9001}}'))r   c                 x    U R                  5       nU[        R                  :X  a  gU[        R                  :X  a  gg)N*z**r   r  r   r  r  r&   kinds     r   _kind_string_ParamMixin._kind_stringx  s2    }}9+++9(((r   c                     g r"   r*   )r&   r1   s     r   r4   _ParamMixin.get_qualified_names  s    r   r*   N)TrP   )	rB   rQ   rR   rS   r  r  r%  r4   rZ   r*   r   r   r  r  k  s    **r   r  c                   @    \ rS rSrSrS rS rS r\S 5       r	S r
Srg	)
ParamNameInterfacei  r   c                     [         er"   r#   r%   s    r   r  ParamNameInterface.get_kind      !!r   c                     [         er"   r#   r%   s    r   	to_stringParamNameInterface.to_string  r-  r   c                     g)aC  
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_name*ParamNameInterface.get_executed_param_name  s     r   c                 x    U R                  5       nU[        R                  :X  a  gU[        R                  :X  a  gg)Nrr   r   r   r"  r#  s     r   
star_countParamNameInterface.star_count  s2    }}9+++9(((r   c                     [         $ r"   re   r%   s    r   infer_default ParamNameInterface.infer_default  rg   r   r*   N)rB   rQ   rR   rS   rK   r  r/  r2  rY   r5  r8  rZ   r*   r   r   r*  r*    s/    H""	  r   r*  c                   .    \ rS rSrSrSrS rS rS rSr	g)BaseTreeParamNamei  Nc                     U R                  5       U R                  5       -   nU R                  nU R                  nUb  USUR	                  SS9-   -  nUb  USUR	                  SS9-   -  nU$ )N: F)include_prefixr   )r%  r<   annotation_nodedefault_nodeget_code)r&   output
annotationr
  s       r   r/  BaseTreeParamName.to_string  s    ""$t';';'==))
##!dZ000FFFFcG,,E,BBBFr   c                 T    U R                   nUR                  S5      (       a  USS  nU$ )N__r   )r    
startswithr&   r   s     r   r<   !BaseTreeParamName.get_public_name  s.    ??4   8Dr   c                     U /$ r"   r*   )r&   kwargss     r   r+   BaseTreeParamName.goto  s	    vr   r*   )
rB   rQ   rR   rS   r?  r@  r/  r<   r+   rZ   r*   r   r   r;  r;    s    OLr   r;  c                   j   ^  \ rS rSrU 4S jrS r\S 5       rSS jrS r	\S 5       r
S rS	 rS
rU =r$ )_ActualTreeParamNamei  c                 N   > [         TU ]  UR                  5       U5        Xl        g r"   )r~   rb   get_default_param_contextfunction_value)r&   rQ  rW   rA   s      r   rb   _ActualTreeParamName.__init__  s%    446		C,r   c                 .    [        U R                  S5      $ )Nr   r   r%   s    r   _get_param_node$_ActualTreeParamName._get_param_node  s    t~~w77r   c                 6    U R                  5       R                  $ r"   )rT  rC  r%   s    r   r?  $_ActualTreeParamName.annotation_node  s    ##%000r   c                     SSK Jn  U" U R                  U R                  5       US9nU(       a  UR	                  5       nU$ )Nr   )infer_param)ignore_stars)!jedi.inference.gradual.annotationrY  rQ  rT  execute_annotation)r&   r\  rZ  rY  r   s        r   infer_annotation%_ActualTreeParamName.infer_annotation  s>    A!5!5!7%' ..0Fr   c                 b    U R                   nUc  [        $ U R                  R                  U5      $ r"   )r@  r   r9   r   )r&   r  s     r   r8  "_ActualTreeParamName.infer_default  s/      <""--d33r   c                 6    U R                  5       R                  $ r"   )rT  r
  r%   s    r   r@  !_ActualTreeParamName.default_node  s    ##%---r   c                 f   U R                  5       nUR                  S:X  a  [        R                  $ UR                  S:X  a  [        R                  $ UR
                  R                  R                  S5      (       a  [        R                  $ UR                  nSnUR                   Hz  nU(       a  US:X  a  [        R                  s  $ M$  US:X  a  [        R                  s  $ UR                  S:X  d  MN  UR                  (       a  [        R                  s  $ XA:X  d  Mx  SnM|     [        R                  $ )	Nrr   r   rF  F/r!  r   T)rT  r5  r   r  r  r   rt   rG  r  r   r   r  r   r  )r&   
tree_paramr   param_appearedps        r   r  _ActualTreeParamName.get_kind  s    ))+
  A%+++  A%((( ??  ++D11,,,""A8$444  8$11166W$||(555)- ! ...r   c                     U R                  5       nU(       a  U$ [        R                  " U R                  U R	                  5       5      nU$ r"   )r]  r   rY  rQ  rT  )r&   r   
doc_paramss      r   r'   _ActualTreeParamName.infer  s?    &&(M++D,?,?AUAUAWX
r   )rQ  )TF)rB   rQ   rR   rS   rb   rT  rY   r?  r]  r8  r@  r  r'   rZ   r   r   s   @r   rN  rN    sN    -
8 1 14 . ./8 r   rN  c                      ^  \ rS rSr\R
                  " SS9U 4S j5       r\R
                  " SS9U 4S j5       rSrU =r	$ )AnonymousParamNamei  goto_anonymous_param)r   c                     > [         TU ]  5       $ r"   )r~   r+   r   s    r   r+   AnonymousParamName.goto  s    w|~r   infer_anonymous_paramc                   > [         TU ]  5       nU(       a  U$ SSKJn  U R	                  5       nU" U R
                  UR                  5      nU(       a  U$ UR                  S:X  a$  SSKJ	n  U" U R
                  R                  / 5      nOvUR                  S:X  a$  SSKJn  U" U R
                  R                  0 5      nOBUR                  c  [        $ U R
                  R                  R                  UR                  5      $ [!        U15      $ )Nr   )dynamic_param_lookuprr   )	FakeTupler   )FakeDict)r~   r'   jedi.inference.dynamic_paramsrs  rT  rQ  position_indexr5  jedi.inference.value.iterablert  r_   ru  r
  r   r9   r   r   )r&   r   rs  r   rt  rt   ru  rA   s          r   r'   AnonymousParamName.infer	  s    MF$$&%d&9&95;O;OPMq ?d11AA2FE">T00@@"EE]]"&&55@@OO  r   r*   )
rB   rQ   rR   rS   r   decorater+   r'   rZ   r   r   s   @r   rm  rm    sA    "89 : "9:! ;!r   rm  c                   :   ^  \ rS rSrU 4S jrU 4S jrS rSrU =r$ )	ParamNamei!  c                 0   > [         TU ]  X5        X0l        g r"   )r~   rb   	arguments)r&   rQ  rW   r~  rA   s       r   rb   ParamName.__init__"  s    3"r   c                 n   > [         TU ]  5       nU(       a  U$ U R                  5       R                  5       $ r"   )r~   r'   r2  )r&   r   rA   s     r   r'   ParamName.infer&  s.    M++-3355r   c                     SSK Jn  U" U R                  U R                  5      nX R	                  5       R
                     $ )Nr   )get_executed_param_names)jedi.inference.paramr  rQ  r~  rT  rw  )r&   r  params_namess      r   r2  !ParamName.get_executed_param_name-  s3    A/0C0CT^^T002AABBr   )r~  )	rB   rQ   rR   rS   rb   r'   r2  rZ   r   r   s   @r   r|  r|  !  s    #6C Cr   r|  c                   &    \ rS rSrS rS rS rSrg)ParamNameWrapperi3  c                     Xl         g r"   _wrapped_param_name)r&   r   s     r   rb   ParamNameWrapper.__init__4  s    #- r   c                 .    [        U R                  U5      $ r"   )getattrr  rH  s     r   __getattr__ParamNameWrapper.__getattr__7  s    t//66r   c                 T    SU R                   R                  < SU R                  < S3$ )Nr?   r=  r@   )rA   rB   r  r%   s    r   rC   ParamNameWrapper.__repr__:  s    !^^44d6N6NOOr   r  NrB   rQ   rR   rS   rb   r  rC   rZ   r*   r   r   r  r  3  s    .7Pr   r  c                   h    \ rS rSrSrSrS rSS jr\S 5       r	\
S 5       rS r\S	 5       rS
 rSrg)
ImportNamei>  rr   r   r   c                     Xl         X l        g r"   _from_module_contextr    )r&   r9   r    s      r   rb   ImportName.__init__B  s    $2!&r   c                     U(       a_  U R                   (       aA  U R                   S:X  d   S5       eU R                  R                  nUc  U$ X R                  4-   $ U R                  4$ g)Nrr   z(Everything else is not supported for nowr*   )_levelr  r0   r    )r&   r1   r3   s      r   r4   ImportName.get_qualified_namesF  se    {{{{a'S)SS'#88EE'''#'7'7&999$$&&r   c                     U R                   nU R                  5       nU(       d  U$ [        [        U5      5      R	                  5       $ r"   )r  r'   nextiterr   )r&   mimport_valuess      r   r9   ImportName.parent_contextQ  s;    %%

H D'(3355r   c                     SSK Jn  U R                  nU" UR                  U R                  /X R
                  S9R                  5       $ )Nr   )Importer)ry   )r   r  r  r_   r    r  follow)r&   r  r  s      r   r'   ImportName.infer[  s;    3%%))D,<,<+=qT[[]]r   c                 `    U R                  5        Vs/ s H  oR                  PM     sn$ s  snf r"   )r'   r   )r&   r  s     r   r+   ImportName.gotoa  s"     $

-1---s   +c                     g)Nr   r*   r%   s    r   rK   ImportName.api_typed  s    r   c                 4    [        U R                  5       5      $ r"   )r   r+   r%   s    r   r   ImportName.py__doc__h  s    		,,r   r  NrP   )rB   rQ   rR   rS   r   r  rb   r4   rY   r9   r   r'   r+   rK   r   rZ   r*   r   r   r  r  >  s^    IF'	 6 6 ^ ^
.  -r   r  c                       \ rS rSrSrSrg)SubModuleNameil  rr   r*   N)rB   rQ   rR   rS   r  rZ   r*   r   r   r  r  l  s    Fr   r  c                   &    \ rS rSrS rS rS rSrg)NameWrapperip  c                     Xl         g r"   _wrapped_name)r&   wrapped_names     r   rb   NameWrapper.__init__q  s    )r   c                 .    [        U R                  U5      $ r"   )r  r  rH  s     r   r  NameWrapper.__getattr__t  s    t))400r   c                 R    U R                   R                  < SU R                  < S3$ )N())rA   rB   r  r%   s    r   rC   NameWrapper.__repr__w  s    >>22D4F4FGGr   r  Nr  r*   r   r   r  r  p  s    *1Hr   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )StubNameMixini{  c                 ,  > SSK Jn  U /nU R                  S:X  aQ  SU R                  R	                  5       R
                  ;   a)  U R                  5        Vs/ s H  o3R                  PM     nnU" USS9nX;   a  [        TU ]%  5       $ [        U5      $ s  snf )Nr   r   r   r   Fr   )r   r   rK   rW   r   r   r'   r   r~   r   r   )r&   r   r   vrA   s       r   r   StubNameMixin.py__doc__|  s    C ==K'C4>>3P3P3R3[3[,[%)ZZ\2\VV\E2eUC=7$&& $E** 3s   Br*   )rB   rQ   rR   rS   r   rZ   r   r   s   @r   r  r  {  s    + +r   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )StubNamei  c                    >^ [         TU ]  5       nU R                  S:X  a=  U R                  5       R	                  5       S:X  a  SSKJm  [        U4S jU 5       5      $ U$ )Nversion_infosysr   )VersionInfoc              3   4   >#    U  H  nT" U5      v   M     g 7fr"   r*   )ru   cr  s     r   rw   !StubName.infer.<locals>.<genexpr>  s     =HqKNNHs   )r~   r'   r    r/   
py__name__!jedi.inference.gradual.stub_valuer  r   )r&   inferredr  rA   s     @r   r'   StubName.infer  sO    7=?~-$2G2G2I2T2T2VZ_2_E=H===r   r*   )rB   rQ   rR   rS   r'   rZ   r   r   s   @r   r  r    s     r   r  c                   .    \ rS rSrSrS r\S 5       rSrg)
ModuleNamei  r  c                     Xl         X l        g r"   )r   _name)r&   rt   r   s      r   rb   ModuleName.__init__  s    
r   c                     U R                   $ r"   )r  r%   s    r   r    ModuleName.string_name  s    zzr   )r  r   N)	rB   rQ   rR   rS   r   rb   rY   r    rZ   r*   r   r   r  r    s     I  r   r  c                       \ rS rSrSrg)StubModuleNamei  r*   N)rB   rQ   rR   rS   rZ   r*   r   r   r  r    s    r   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   r\   rj   r   r   r   r  r*  r;  rN  rm  r|  r  r  r  r  r  r  r  r  r*   r   r   <module>r     s=     " & Q & 9 = % % D '= =@2 "t(- t(n$ $@, 0 ,[) [| 2 B*,< 4B, BJ!- !:C$ C$P{ P+-' +-\J H H+ +(}0 	!7 		]J 	r   