
    -hn                        S SK r S SK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 SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SK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 SK"J#r#  S SK$J%r%  S SK&J'r'J(r(  S SK)J*r*J+r+  S SK,J-r-  S SK.J/r/   " S S\'5      r0S r1S r2S r3S r4S r5S  r6\/Rn                  " 5       S! 5       r8 " S" S#5      r9S$ r:\ Rv                  " S%5      r<S& r=S' r>S( r?  S+S) jr@S* rAg),    N)dedent)	Parameter)PythonTokenTypes)tree)search_ancestorLeaf)split_lines)debug)settings)classes)helpers)keywords)complete_dict)complete_file_name)imports)ValueSet)infer_call_of_leafparse_dotted_names)get_global_filters)TreeInstance)DocstringModule)ParamNameWrapperSubModuleName)convert_valuesconvert_namescut_value_at_position)plugin_managerc                       \ rS rSrS rSrg)ParamNameWithEquals   c                      U R                   S-   $ )N=)string_name)selfs    fC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jedi/api/completion.pyget_public_name#ParamNameWithEquals.get_public_name   s    #%%     N)__name__
__module____qualname____firstlineno__r'   __static_attributes__r*   r)   r&   r    r       s    &r)   r    c              #   F  #    U  H  n[        UR                  5       H{  u  pEUR                  nXA:  a  U[        R                  :X  a  M,  U[        R                  [        R
                  4;   d  MR  UR                  U;  d  Md  [        UR                  5      v   M}     M     g 7fN)		enumerateparamskindr   POSITIONAL_OR_KEYWORDKEYWORD_ONLYnamer    _name)
signaturespositional_countused_kwargscall_sigipr4   s          r&   _get_signature_param_namesr?   "   sw     hoo.DA66D#	0O0O(O	779O9OPPk1)!''22 / s   A)B!/B! B!c                    U(       a  gSnU  H|  n[        UR                  5       HV  u  pVUR                  nU[        R                  L a      gXQ:  d  M.  U[        R
                  [        R                  4;   d  MT  Sn  O   U(       a  M{    U$    U$ )NTF)r2   r3   r4   r   VAR_POSITIONALr5   POSITIONAL_ONLY)r9   r:   r;   must_be_kwarg	signaturer=   r>   r4   s           r&   _must_be_kwargrE   .   s    M	i../DA66Dy/// $)2Q2Q2;2K2K2M *M % 0 }   r)   c           
   #   B  #    [        5       n[        R                  (       a  UR                  5       nU H  nUR                  n	X;   a  X:w  a  M  [        R                  (       a  U	R                  5       n	[
        R                  " XUS9(       d  M\  [        R                  " U UU[        U5      UUS9n
U
R                  U
R                  4nX;  d  M  UR                  U5        UR                  nUb%  UR                  5       nUb  UR                  S:X  a  M  U
v   M     g 7f)Nfuzzy)is_fuzzycached_namedel_stmt)setr   case_insensitive_completionlowerr$   r   matchr   
Completionlenr7   completeadd	tree_nameget_definitiontype)inference_statecompletion_namesstack	like_namerH   imported_namesrJ   comp_dctr7   stringnewkrT   
definitions                 r&   filter_namesra   D   s     uH++OO%	 !!#(;//\\^F==%88$$I'C 3<<(A Q NN	(!*!9!9!;J!-*//Z2O 	/ !s   B
D=DADc                     U Vs1 s H  o"R                   iM     nnU  Vs/ s H  oDR                   U;  d  M  UPM     sn$ s  snf s  snf r1   )r7   )completionsother_completionsdnamescs        r&   _remove_duplicatesrh   c   s@    ./.VV.E/":{!ffE&9A{:: 0:s   A AAc                 X    U R                   R                  USS9nU R                  U5      $ )zC
Returns the scope in which the user resides. This includes flows.
Tinclude_prefixes)	tree_nodeget_leaf_for_positioncreate_context)module_contextpositionleafs      r&   get_user_contextrr   h   s1     ##99(UY9ZD((..r)   c                     U R                  USS9n[        U[        R                  [        R                  45      (       d=  UR
                  n[        U[        R                  [        R                  45      (       d  M=  U$ )NTrj   )rm   
isinstancer   ScopeFlowparent)module_noderp   nodes      r&   get_flow_scope_noderz   p   s]    ,,X,MD

DII677{{ 

DII677 Kr)   c                     / $ r1   r*   )contextfunction_namedecorator_nodess      r&   complete_param_namesr   x   s	     Ir)   c                   p    \ rS rSr SS jrS rS rS rS rS r	S r
S	 rS
 rSS jrSS jrS rS rSrg)rP      c                     Xl         X l        UR                  U l        X0l        [
        R                  " U R                  X45      U l        X@l        XPl	        X`l
        g r1   )_inference_state_module_contextrl   _module_node_code_linesr   get_on_completion_name
_like_name_original_position_signatures_callback_fuzzy)r%   rW   ro   
code_linesrp   signatures_callbackrH   s          r&   __init__Completion.__init__   sQ     /-*44% "889J9JJa #+$7!r)   c                   ^  T R                   R                  T R                  SS9n[        UT R                  5      u  p#n[	        T R
                  T R                  U=(       d    UT R                  Uc  S OXB-   T R                  S9nUbi  U(       db  [        [        T R                  T R
                  X4UT R                  T R                  T R                  T R                  T R                  5
      5      nUb   U(       d  SU;   a  T R                  X25      nU$ T R                  U5      u  pg/ nUR                  b>  UR                  R                   S;   a$  UR#                  [%        UR                  5      5        [        ['        T R                  UT R(                  T R                  T R                  XS95      n	[+        XY5      [-        U	U 4S jS9-   $ )	NTrj   rG   
)import_as_namesdotted_as_names)rJ   c                    > U R                   R                  TR                  5      (       + U R                   R                  S5      U R                   R                  S5      U R                   R                  5       4$ )N___)r7   
startswithr   rN   )xr%   s    r&   <lambda>%Completion.complete.<locals>.<lambda>   sR    QVV5F5Ft5W1W121B1B41H121B1B31G121Ar)   )key)r   rm   r   _extract_string_while_in_stringr   r   r   r   listr   r   r   r   _complete_in_string_complete_pythonrw   rV   extendextract_imported_namesra   rY   rh   sorted)
r%   rq   r]   
start_leafquoteprefixed_completionsrJ   rX   r[   rc   s
   `         r&   rR   Completion.complete   s     66##! 7 
 %DD$JaJa$b!E,  $##ND++ 
 &:#'(:%%t';';ZPV!:!:  $"9"9	) $  'DFN'+'?'?
'S$''(,(=(=d(C%;;"t{{'7'7;a'a!!"8"EF<(=(=?O(,

DOO(,^^ _ 3A[ 'A BB	
r)   c                 	  ^ U R                   R                  nS=U l        nU R                  S   U R                  S   [	        U R
                  5      -
  4U l        Sn [        R                  " X R                  XR                  5      =U l        n[        UR                  5       5      mST;   Ga&  U R                   R#                  U R                  SS9nUR%                  5       nU R                  S   nUR&                  U R                  s=::  a  UR(                  ::  d  O  UR&                  S   nUb  Un	 [+        U	SS	S
SS5      n	U	c  OU	R,                  n
U
S:X  a3  U	R.                  S   n[1        U[2        5      (       a  UR                  S-   n
U	R&                  S   U:X  a3  U
S:X  a  TSS/-  mO%U
S:X  a  T/ SQ-  mOU
S	:X  a  TR5                  S5        M  / nSn[7        U4S j[8        R:                  [8        R<                  4 5       5      (       Ga  U Vs/ s H  oR>                  PM     nn[A        U5      nU(       a#  US   S;   a  U[        U RC                  SS95      4$ SU;   a=  [E        USU;   5      u  nnSU;   =(       a    SU;   (       + nXRG                  UUUS9-  nGOYUS   S;   av  US   S:X  am  U R                   R#                  U R                  5      nUR,                  S:X  a  UR%                  5       nU RI                  UR%                  5       5      u  nnUU-  nOU RK                  5       (       a  XRM                  U5      -  nOUS   S;   a~  US   S;   au  U RN                  " U R                  6 nU(       aU  US   RP                  n[        URS                  5       5      nURU                  5       nU[W        UUU5      -  n[Y        UUU5      nU(       d#  XR                  5       -  nXRC                  SS9-  nU(       di  U R                  U R                  S   S-
     SU R                  S    nXR[                  TU(       + =(       d    US   S;   =(       a    USS S :g  (       + S!9-  nXL4$ ! [        R                   a@  nUR                  R                  nUS:X  a	  U/ 4s SnA$ X@R                  5       4s SnA$ SnAff = fs  snf )"a  
Analyzes the current context of a completion and decides what to
return.

Technically this works by generating a parser stack and analysing the
current stack for possible grammar nodes.

Possible enhancements:
- global/nonlocal search global
- yield from / raise from <- could be only exceptions/generators
- In args: */**: no completion
- In params (also lambda): no completion before =
Nr      .ifTrj   if_stmtfor_stmt
while_stmttry_stmt
error_node_stmtelifelse)exceptfinallyr   Fc              3   ,   >#    U  H	  oT;   v   M     g 7fr1   r*   ).0tallowed_transitionss     r&   	<genexpr>.Completion._complete_python.<locals>.<genexpr>  s       L 2KA'' 2Ks   )asdefclass)is_functionimport_stmtimport_fromimportonly_modules)trailerdotted_name	endmarker)(,)r   arglist	decoratorz 	.;z...)only_values).r   grammarrY   r   rQ   r   	_positionr   get_stack_at_positionr   OnErrorLeaf
error_leafvalue_complete_global_scoper   )_allowed_transition_names_and_token_typesr   rm   get_previous_leaf	start_posend_posr   rV   childrenrt   r   appendanyr   NAMEINDENTnonterminal_gather_nodes_complete_inheritedr   _get_importer_names_complete_trailer_is_parameter_completion_complete_paramsr   _call_detailsiter_used_keyword_argumentscount_positional_argumentsr?   rE   _complete_keywords)r%   rq   r   rY   rJ   er   previous_leafindentstmttype_firstrX   kwargs_only
stack_nodenonterminalsnodeslevelrf   r   dotnr9   call_detailsr;   r:   current_liner   s                              @r&   r   Completion._complete_python   s    ''//!!
U##A&##A&T__)==
 	>!(!>!>))4" DJ @@BC 	 &&$$::4>>\`:aD 224M^^A&FNNdnnDD*($*i\:$D | IIE, $a 0%eT22$)KK'$9E~~a(F2 I-/FF3CC/"j0/3PP/"j0/66v>) ,  L2B2G2G2B2I2I2K L L L FKKUz22ULK!%(Er&<< #D)A)Ad)A)S$TTT,.1%,9VWu$1\$A$WhRWFWX $<$<!- %= %  
 b!%??E"IQTDT''==dnnM88{* 002C!%!7!78M8M8O!PQ A% ..00 $9$9$$??  9
*(,0SS!%!:!:DNN!KJ!'1!}'B'B&*<+S+S+U&V+7+R+R+T((,F&,'- ( '5ZAQS^&_"$(C(C(EE$$(@(@U(@(SS$++DNN1,=,ABCUDNNSTDUVL 7 7#%1!1 "@\"5E5P 6@%1"#%6%%?A !8 !  ,,g "" 	>LL&&E| #B&  ; ; ===	>h Ls0   2Q1 S1SS $S*S :S Sc                     U R                   S   nUR                  S:X  a  [        UR                  5      S:X  a  gUR                  S;   a  gUR                  S;   =(       a    UR                  S   S:H  $ )Nr   lambdefr   T
parameters)typedargslistvarargslistr   )rY   r   rQ   r   )r%   toss     r&   r   #Completion._is_parameter_completionT  sd    jjn??i'C		Na,? ??l* "BB[syyQS}X[G[[r)   c                    U R                   S   nUR                  S:X  a  U R                   S   nUR                  S:X  a  [        U R                  U R                  5      n[        USS5      nUb  UR                  S:X  aC  UR                  S   nUR                  S:X  a  UR                  nO'UR                  S:X  a  U/nO/ nOUR                  5       nUR                  S	   n[        X7R                  U5      $ / $ )
Nr   r   funcdefr   r   
decoratorsr   r   )rY   r   rr   r   r   r   rV   r   get_decoratorsr   r   r   )r%   rq   r   r|   ry   r   r  r}   s           r&   r   Completion._complete_paramsa  s    ZZ^
!!\1BJ!!Y.&t';';T^^LG"4yAD99,a(Avv-%&ZZ
;.&'S
%'
!%!4!4!6J * 0 0 3+G5H5H*UU	r)   c              #      #    U Hc  n[        U[        5      (       d  M  UR                  5       (       d  M1  U(       a  US;   d  M@  [        R                  " U R
                  U5      v   Me     g 7f)N)TrueFalseNone)rt   strisalphar   KeywordNamer   )r%   r   r   r_   s       r&   r   Completion._complete_keywordsx  sJ     $A!S!!aiikk"a+D&D"..t/D/DaHH %s   A-A-A-(A-c                    [        U R                  U R                  5      n[        R                  " SU5        [        U R                  U R                  5      n[        UU R                  U5      n/ nU H  nXER                  5       -  nM     U$ )Nzglobal completion scope: %s)	rr   r   r   r
   dbgrz   r   r   values)r%   r|   flow_scope_nodefiltersrX   filters         r&   r   !Completion._complete_global_scope~  s{    "4#7#7H		/9-d.?.?P$NN

 F/ r)   c                 R   U R                   R                  U5      n[        X!5      n[        R                  " SUSS9  S n[        U5      S:X  aI  Uu  nUR                  5       (       a0  [        UR                  5      S:X  a  UR                  S   nUS;   a  UnX@R                  U5      4$ )Nztrailer completion values: %sMAGENTA)colorr   r   )numpy
tensorflow
matplotlibpandas)	r   rn   r   r
   r  rQ   	is_modulestring_names_complete_trailer_for_values)r%   r   inferred_contextr  rJ   vmodule_names          r&   r   Completion._complete_trailer  s    //>>}M#$4D		16K v;!BA{{}}q~~&!+"#.."3K"&UU&1==fEEEr)   c                 X    [        U R                  U R                  5      n[        X!5      $ r1   )rr   r   r   complete_trailer)r%   r  user_contexts      r&   r  'Completion._complete_trailer_for_values  s#    '(<(<dnnM55r)   c                     U Vs/ s H  oDR                   PM     nn[        R                  " U R                  XR                  U5      nUR                  U R                  US9$ s  snf )Nr   )r   r   Importerr   r   rX   )r%   rf   r   r   r   r=   s         r&   r   Completion._get_importer_names  sZ    "'(%Q%(T22E;O;OQVW!!$"7"7l!SS )s   A"c              #     #    U R                   R                  U R                  SS9n[        R                  " US5      nUc  gU R
                  R                  U5      nUR                  S   UR                  S   :  a  gUR                  SS9n[        U5        U H3  nUR                  5        H  nUR                  S:H  U:X  d  M  Uv   M     M5     g7f)z@
Autocomplete inherited methods when overriding in child class.
Trj   classdefNr   )is_instancefunction)r   rm   r   r   r   r   create_valuer   get_filtersnextr  api_type)r%   r   rq   clsclass_valuer  r  r7   s           r&   r   Completion._complete_inherited  s        66t~~X\6]""44; **77<==t~~a00))d);WFMMZ/K?J ( s   B?CCc                 H  ^ U4S jn[        U5      n[        USS9m[        U" T5      5      nUS   b'  U Vs/ s H	  oUc  SOUPM     nnU R                  U5      $ [        R
                  " STS   5      nU(       a!  U R                  UR                  S5      /5      $ / $ s  snf )a  
To make it possible for people to have completions in doctests or
generally in "Python" code in docstrings, we use the following
heuristic:

- Having an indented block of code
- Having some doctest code that starts with `>>>`
- Having backticks that doesn't have whitespace inside it
c              3     >#    SnT Hu  nU(       d,  UR                  S5      (       d  UR                  S5      (       a  [        R                  " SSU5      v   OS v   [        [        R                  " SU5      5      nMw     g 7f)NFz>>> z^( *>>> ?| +) z *>>>)r   resubboolrO   )linesinclude_next_linelr   s      r&   iter_relevant_lines;Completion._complete_in_string.<locals>.iter_relevant_lines  sd      %$U(;(;q||C?P?P&&!12q99J$('1)=$>!  s   A?BT)keependsr   r   z
`([^`\s]+)r   )r   r	   r   _complete_code_linesr9  searchgroup)r%   r   r]   r?  relevant_code_linesrg   rO   r   s          @r&   r   Completion._complete_in_string  s    	?  $7
"#6z#BCr".EX"YEX94!#;EX"Y,,-@AA		-B8,,ekk!n-=>>	 #Zs   Bc           	      <   U R                   R                  R                  SR                  U5      5      n[	        U R
                  U R                   UUS9n[        U R                   UR                  5       UUR                  S U R                  S9R                  5       $ )Nr8  )in_module_contextrW   rx   r   c                      / $ r1   r*   )argskwargss     r&   r   1Completion._complete_code_lines.<locals>.<lambda>  s    r)   )r   rp   r   rH   )r   r   parsejoinr   r   rP   
as_contextr   r   rR   )r%   r   rx   module_values       r&   rB  Completion._complete_code_lines  s    ++3399"''*:MN&"22 11#!	
 !!##%! (( :++
 (*	r)   )
r   r   r   r   r   r   r   r   r   rY   N)F)r   T)T)r+   r,   r-   r.   r   rR   r   r   r   r   r   r   r  r   r   r   rB  r/   r*   r)   r&   rP   rP      sN    ,1*.
`M-^\.I F$6
T
0Br)   rP   c                 t    / nU  H/  nUR                   R                  S:X  a  / nM!  XR                  -  nM1     U$ )N
small_stmt)dfa	from_ruler   )rY   r   r   s      r&   r   r     s=    E
>>##|3E%%%E	 
 Lr)   z^\w*(\'{3}|"{3}|\'|")c                   ^ U4S jnTU R                   :  a  gU R                  S:X  a  U" U 5      $ / nU Gb8  U R                  S:X  a  SU R                  ;   d  SU R                  ;   a  [        U R                  5      S:  a  U" U 5      $ S nU R                  (       dT  U R                  5       nUb?  UR                  S:w  d/  [        S	 UR                  R                  5        5       5      (       d  S nS
R                  U4S jU 5       5      U=(       d    U Uc  S
OUR                  [        U T5      -   4$ U R                  TS   :w  a   gUR                  SU 5        U R                  5       n U b  GM8  g)Nc                 z  > 0 nU R                   TS   :X  a  TS   U R                  -
  US'   [        R                  " U R                  40 UD6nU(       d  gUR                  S5      nU R                   TS   :X  a%  TS   U R                  UR                  5       -   :  a  g[        U T5      UR                  5       S  X4$ )Nr   r   endposNNN)linecolumn_string_startrO   r   rD  endr   )rq   rK  rO   startrp   s       r&   return_part_of_leaf<_extract_string_while_in_string.<locals>.return_part_of_leaf  s    99#'{T[[8F8##DJJ9&9#A99#dkkEIIK6O(O#$T84UYY[\BDOOr)   rY  r]   r   "'r   r7   c              3   *   #    U  H	  oS ;   v   M     g7f)rubfNr*   )r   rg   s     r&   r   2_extract_string_while_in_string.<locals>.<genexpr>  s     "R8Q1;8Qs   r8  c              3   <   >#    U  H  n[        UT5      v   M     g 7fr1   r   )r   r>  rp   s     r&   r   re     s     KFq-a::Fs   r   )r   rV   r   rQ   prefixr   allrN   rN  r   rZ  insert)rq   rp   r_  leavesprefix_leafs    `   r&   r   r      sW   
P $.. yyH"4((F

99$#*;sdjj?P4::"*400K;;"446&+*:*:f*D""R8I8I8O8O8Q"RRR"&K KFKK#t"*0A0A'h78  99#
   	a%%'1 
2 r)   c                    / nU Hq  nUR                  U R                  S9 H  nX$R                  5       -  nM     UR                  5       (       a  ML  [	        U[
        5      (       d  Mc  U[        X5      -  nMs     [        U5      nU H<  nXa;  d  M
  UR                  U R                  S9 H  nX$R                  5       -  nM     M>     U$ )N)origin_scope)r/  rl   r  is_stubrt   r   _complete_getattrr   )r%  r  rX   r   r  python_valuesrg   s          r&   r$  r$  0  s    ''\5K5K'LF/ M }}:e\#B#B 1, FF  #6*M?--\5K5K-L MMO3  M  r)   c                    UR                  S5      =(       d    UR                  S5      n[        R                  " S U 5       5      nU GH  nUR                  nUb  UR                  S:w  a  M%  UR                  5        GHJ  nUR                  S:w  a  M  UR                  S   nUR                  S:w  a  M7  UR                  S   nUR                  S   n	[        UR                  5      S	:w  d   UR                  S
:w  d  UR                  S:w  a  M  U	R                  S   n
U
R                  S:w  d  [        U
R                  5      S:  a  M  UR                  5       nU
R                  S   nU
R                  S	   nUR                  XR                  5      n[        S U 5       5      (       d  GM-  UR                  U5      n[        X5      s  s  $    GM     / $ )a  
A heuristic to make completion for proxy objects work. This is not
intended to work in all cases. It works exactly in this case:

    def __getattr__(self, name):
        ...
        return getattr(any_object, name)

It is important that the return contains getattr directly, otherwise it
won't work anymore. It's really just a stupid heuristic. It will not
work if you write e.g. `return (getatr(o, name))`, because of the
additional parentheses. It will also not work if you move the getattr
to some other place that is not the return statement itself.

It is intentional that it doesn't work in all cases. Generally it's
really hard to do even this case (as you can see below). Most people
will write it like this anyway and the other ones, well they are just
out of luck I guess :) ~dave.
__getattr____getattribute__c              3   B   #    U  H  nUR                  5       v   M     g 7fr1   )infer)r   r7   s     r&   r   $_complete_getattr.<locals>.<genexpr>W  s      #D 	

s   r  return_stmtr   	atom_exprr      r7   getattrr      c              3   >   #    U  H  oR                   S :H  v   M     g7f)paramN)r1  )r   r   s     r&   r   rv  v  s     @izzW,is   )get_function_slot_namesr   	from_setsrl   rV   iter_return_stmtsr   rQ   r   rO  gotor   r   
infer_noder$  )r%  instancerf   	functionsfuncrl   rw  rx  atomr   r   r|   object_node	name_node	name_listobjectss                   r&   ro  ro  A  s   ( --m< E001CD 
"" ## I NN		) ;$668K =0#,,Q/I~~,%%a(D((+G9%%&!+tyyF/BzzY.&&q)G||y(C0@0@,AA,Eoo'G!**1-K  ((+IY0C0CDI@i@@@
 ((5G#L::; 9 F Ir)   c	           
   #   f  #    US S  H~  n	/ n
U HW  nXR                   :X  d  M  UR                  b  UR                  S;   a	  U(       a  M:  U
[        UUR	                  5       5      -  n
MY     [
        R                  " SXS S 5        U
nM     US   R                  5       nU GH  nUR                   R                  5       nU(       a  [        R                  " XUS9(       d  U(       a  MH  X:X  d  MO  [        U[        5      (       a*  UR	                  5        Vs/ s H  oR                  PM     nnOU/nU(       a  [        U5      nU H^  nU(       a!  [        R                  " XS [!        U5      US9nO[        R"                  " X5      nU(       a  UUR$                  :X  d  MZ  Uv   M`     GM
     g s  snf 7f)Nr   )module	namespacezdot lookup on search %s from %s
   rG   )rY   like_name_lengthrI   )r$   rT   r1  r$  ru  r
   r  rN   r   rO   rt   r   r7   r   r   rP   rQ   NamerV   )rW   ro   rf   wanted_nameswanted_typerR   rH   ignore_importsconverts	new_namesr   	last_namer]   r   n2def_s                    r&   search_in_moduler    sf     #2	AMM!;;*qzz=T/T*-"GGI 	  			3Ycr
K  R &&(I$$&fuExF$7!]++)*3A3%e,"--'"),Y!&	D #<<<D"kTYY&>J  
 4s*   F1C F1'F1.'F1F,*A0F1F1c                    / nU R                   S;   a  [        U R                  5       H  u  p#UR                   S:X  ae  US:  aB  U R                  US-
     R                   S:X  a"  U R                  US-
     R                  S:X  a  M]  UR	                  UR                  5        Mz  UR                   S:X  d  M  UR                  [        U5      5        M     U$ )N)r   r   import_as_namer7   r   r   keywordr   r  )rV   r2   r   r   r   r   r   )ry   r[   indexchilds       r&   r   r     s    NyyLL%dmm4LEzzV#AI$--	":"?"?9"L MM%!)4::dB%%ekk2//%%&<U&CD 5 r)   )FFFF)Br9  textwrapr   inspectr   parso.python.tokenr   parso.pythonr   
parso.treer   r   parsor	   jedir
   r   jedi.apir   r   r   jedi.api.stringsr   jedi.api.file_namer   jedi.inferencer   jedi.inference.base_valuer   jedi.inference.helpersr   r   jedi.inference.contextr   jedi.inference.valuer   jedi.inference.docstring_utilsr   jedi.inference.namesr   r   !jedi.inference.gradual.conversionr   r   jedi.parser_utilsr   jedi.pluginsr   r    r?   rE   ra   rh   rr   rz   decorater   rP   r   compiler\  r   r$  ro  r  r   r*   r)   r&   <module>r     s    	   /  ,       * 1 " . I 5 - : @ K 3 '&* &
	3,>;
/  q qh 

34-`"=B 9>38'Tr)   