
    -h&J                     ~   S r 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  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Q5      rS rS rS)S jr S r!S r"S r# " S S\$5      r%S r&S r'S r(S)S jr) " S S5      r*S  r+S! r,S" r-S# r.\" S$5      S% 5       r/S& r0S*S' jr1S( r2g)+z
Helpers for the API
    N)
namedtuple)dedent)chainwraps)	Parameter)Parser)tree)	NO_VALUES)
infer_atom)infer_call_of_leaf)get_string_value_set)signature_time_cachememoize_method)get_parent_scopeCompletionParts)pathhas_dotnamec                 $    U R                  U5      $ N)
startswith)string	like_names     cC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jedi/api/helpers.py_start_matchr      s    Y''    c                     [        U5      S::  a  X;   $ U R                  US   5      nUS:  a  [        XS-   S  USS  5      $ g)N   r   F)lenfind_fuzzy_match)r   r   poss      r   r"   r"      sO    
9~""
++il
#C
axF78,im<<r   c                 <    U(       a  [        X5      $ [        X5      $ r   )r"   r   )r   r   fuzzys      r   matchr&   &   s    F..F..r   c                     [        U S S9$ )Nc                     [        U R                  =(       d    S5      U R                  =(       d    SU R                  =(       d    SU R                  4$ )N r   )strmodule_pathlinecolumnr   )xs    r   <lambda>$sorted_definitions.<locals>.<lambda>/   s4    s1==+>B'?'(vv{'(xx}1'(vv'/r   )key)sorted)defss    r   sorted_definitionsr4   -   s    $ / 0 0r   c                    U R                  U5      nUb  UR                  S;   a6  XS   S-
     n[        R                  " SUS US    5      R	                  S5      $ UR                  S;  a  gUR
                  S US   UR                  S   -
   $ )N)r   
error_leafr   r   z(?!\d)\w+$|$)r   keywordr)   )get_leaf_for_positiontyperesearchgroupvalue	start_pos)module_nodelinespositionleafr,   s        r   get_on_completion_namerC   5   s    ,,X6D|tyy$<< a[1_%yy$|*<=CCAFF	-	-::6x{T^^A%6677r   c                 v    XS   S-
  US    nUS   S US    US'   US   US   S  US'   SR                  U5      $ )Nr   r   r)   )join)
code_linesr>   end_posr@   s       r   	_get_coderI   C   sW    |a'
3Eb	+71:&E"IQx	!&E!H775>r   c                   $    \ rS rSr\S 5       rSrg)OnErrorLeafM   c                      U R                   S   $ Nr   )argsselfs    r   r6   OnErrorLeaf.error_leafN   s    yy|r    N)__name__
__module____qualname____firstlineno__propertyr6   __static_attributes__rS   r   r   rK   rK   M   s     r   rK   c                     UR                   U:  a  UR                  5       nUc  gUR                  S:H  nUR                  S:X  a&  UR                  5       nUc  gUR                  S:X  a  M&  UR                  S:X  d  UR                  S:X  a"  UR                   S   US   :  a  g[        U5      eUn UR                  R                  S;   a  OUR                  nM)  U(       a  UR                   S   US   :  a  g[        XR                  5       U5      $ )Nr)   newliner6   r   r   )
file_inputsuitesimple_stmtr   )r>   get_previous_leafr9   rK   parentrI   get_start_pos_of_prefix)rG   rB   rA   is_after_newline	user_stmts        r   _get_code_for_stackrd   S   s    ~~!%%'<yyI-
))y
 %%'< ))y
 
 yyL DII$9>>!x{* $	$$(NN!((I 
 ""1%3  %F%F%H(SSr   c                 2  ^ ^^  " S S[         5      mUU U4S jn[        [        XU5      5      nSmUS-   T-   n[        T R                  SS9n UR                  U" U5      S9  [        S	[        U" U5      5      -  5      e! T a    UR                  s $ f = f)
zM
Returns the possible node names (e.g. import_from, xor_test or yield_stmt).
c                       \ rS rSrSrg)/get_stack_at_position.<locals>.EndMarkerReached   rS   N)rT   rU   rV   rW   rY   rS   r   r   EndMarkerReachedrg      s    r   ri   c              3     >#    TR                  U 5      nU Hp  nUR                  T:X  a  T" 5       eUR                  R                  T5      (       a  T" 5       eUR                  R                  T5      (       a  Uv   T" 5       eUv   Mr     g 7fr   )	_tokenizer   prefixendswith)codetokenstokenri   grammarsafewords      r   tokenize_without_endmarker9get_stack_at_position.<locals>.tokenize_without_endmarker   s}      ""4(E||x'&((&&x00&((&&x00&(( s   B	B)ZZZ_USER_WANTS_TO_COMPLETE_HERE_WITH_JEDI T)error_recovery)ro   z7This really shouldn't happen. There's a bug in Jedi:
%s)		Exceptionr   rd   r	   _pgen_grammarparsestackSystemErrorlist)	rq   rG   rB   r#   rs   rn   pri   rr   s	   `      @@r   get_stack_at_positionr   {   s    9 " %j<=D ;H#: Dw$$T:A	1$78 B
)$/
0	1   wws   B BBc                    UR                   S:X  a  U R                  X5      $ UR                  n[        nUR                   S:X  a  UR	                  UR                  5      nU$ UR                   S:X  a  [        X5      nU$ [        U[        R                  5      (       a  [        X5      $ UR                   S;   a  [        U 5      $ U$ )Nr   atomtrailer)fstring_stringfstring_startfstring_end)r9   inferr`   r   
infer_noder   
isinstancer
   Literalr   r   )inference_statecontextrB   r`   definitionss        r   r   r      s    yyF$$W33[[FK{{f((5  
		!(7  
D$,,	'	''((	H	H#O44r   c              #     #    U  Hy  nUR                  5       (       a]  [        [        UR                  5       US95      nSnU(       a  U H  nUR                  b  M  SnM     U(       a  Uv   Mi  U S h  vN   Mu  Uv   M{     g  N7f)N)follow_builtin_importsFT)	is_importr}   filter_follow_importsgotor>   )namesr   r   	new_namesfound_builtinnew_names         r   r   r      s|     >>2		'= I "M% )H))1(, !* 
$$$J#  %s   ABB3B4Bc                   \    \ rS rSrS r\S 5       r\S 5       r\S 5       r	S r
S rS rS	rg
)CallDetails   c                 (    Xl         X l        X0l        g r   )bracket_leaf	_children	_position)rQ   r   childrenrA   s       r   __init__CallDetails.__init__   s    (!!r   c                 H    [        U R                  U R                  5      S   $ rN   _get_index_and_keyr   r   rP   s    r   indexCallDetails.index       !$..$..A!DDr   c                 H    [        U R                  U R                  5      S   $ )Nr   r   rP   s    r   keyword_name_strCallDetails.keyword_name_str   r   r   c                 T    [        [        U R                  U R                  5      5      $ r   )r}   _iter_argumentsr   r   rP   s    r   _list_argumentsCallDetails._list_arguments   s    ODNNDNNCDDr   c                 f   Sn[        5       nSnU R                  5       nU(       d	  U(       a  gg Sn[        U5       HO  u  nu  pHn	XiUS:H  -  -  nU(       a  M  US-   [        U5      :w  d  M0  U	(       a  UR	                  U5        MJ  US-  nMQ     [        U5       GH  u  pzU
R                  5       nU(       dE  U[        R                  :X  a  Us  $ U[        R                  [        R                  4;   a	  Xr:X  a  Us  $ Wb  US:X  a  US:X  d  Ms  U
R                  U;  ax  U[        R                  :X  d  U[        R                  :X  aP  X'::  aK  U(       a  Us  $ W	(       a  U
R                  U:X  a  Us  $ O$U
R                  R                  U5      (       a  Us  $ U[        R                  :X  d  GM  Us  $    g )Nr   rE   F   r   )setr   	enumerater    addget_kindr   VAR_POSITIONALPOSITIONAL_OR_KEYWORDPOSITIONAL_ONLYstring_nameKEYWORD_ONLYr   VAR_KEYWORD)rQ   param_namespositional_count
used_names
star_countrO   is_kwargi	key_start	had_equal
param_namekinds               r   calculate_indexCallDetails.calculate_index   s   U

##%5>t_1A1
yZ1_55Hq5CI% "y1(A-( 6E '{3MA&&(D9333HI;;Y=V=VWW, $Z1_
a));!Y%;%;; $	(G(G G!1!6!  %11Y>#$H ? &11<<YGG#$H9000H3 44 r   c              #   ~   #    [        U R                  5       5       H  u  pnU(       d  M  U(       d  M  Uv   M     g 7fr   )r}   r   )rQ   r   r   r   s       r   iter_used_keyword_arguments'CallDetails.iter_used_keyword_arguments  s1     04T5I5I5K0L,J9yYY 1Ms   %==	=c                 p    SnU R                  5       S S  H  u  p#nU(       d  U(       a    U$ US-  nM     U$ )Nr   rE   r   )r   )rQ   countr   r   r   s        r   count_positional_arguments&CallDetails.count_positional_arguments  sF    040D0D0Fs0K,J9Y QJE 1L r   )r   r   r   N)rT   rU   rV   rW   r   rX   r   r   r   r   r   r   r   rY   rS   r   r   r   r      sY    "
 E E E E E E1f 
r   r   c              #     ^#    U4S jnU  Vs/ s H  o3R                   T:  d  M  UPM     nnUS   R                  S:X  a"  [        US   R                  T5       S h  vN   g SnSn[	        U5       GH7  u  pxUR                  S:X  a  SnUR                  S   n	UR                  S   n
U
S	:X  a@  U
R                   T:  a"  U	R                  S
:X  a  SU	R
                  S4v   OwSU" U	5      S4v   OiU	S;   a!  [        U	R
                  5      U" U
5      S4v   OBUR                  5       nUR                  S
:X  a  UR                   T:  a  SU" U5      S4v   OSv   SnM  UR                  S:X  al  UR                  S S S2    H2  nUR                  S:X  a  SnUR                  S   nXb" U5      S4v   SnM4     [        [        UR                  5      S-  5      nGMe  [        U[        R                  5      (       a%  UR
                  S:X  a  U(       d	  USS4v   SnSnGM  [        U[        R                  5      (       a(  UR
                  S;   a  [        UR
                  5      nGM  US	:X  d  GM  US   (       d  GM  SnXGS-
     nUR                  S
:X  a  SUR
                  S4v   OSv   SnGM:     U(       d+  US   R                  S
:X  a  Xb" US   5      S4v   g USS4v   g g s  snf  GN7f)Nc                 j   > U R                   S:w  a  g U R                  S TS   U R                  S   -
   $ )Nr   r   )r9   r=   r>   )r   rA   s    r   remove_after_pos)_iter_arguments.<locals>.remove_after_pos"  s6    99zz:8A;)::;;r   rE   arglistFr   argumentTr   =r   )*z**)r   NFtestlist_star_exprr   	star_expr,r)   )r>   r9   r   r   r   r=   r    get_first_leafboolr   r
   
PythonLeaf)nodesrA   r   cnodes_beforeprevious_node_yielded
stars_seenr   nodefirstsecond
first_leafnbefores    `            r   r   r   !  s    <  %?u!h(>AuL?B	)"<#3#<#<hGGG!J\*99
"$(!MM!$E]]1%F}##h.5::3GU[[$..-e4e;;+%%++&(8(@%GG "002
??f,1E1E1Q-j95@@((JYY..]]3Q3'66[(!"J

1A "21"5u<<
 ( %)T]]);a)?$@!doo..4::3D( "e++
$)!doo..4::3LTZZJS[\"--$(!!a%(F{{f$t++$$JY +\ !  F*.|B/?@%GGb%''	 !k @Gs.   K(K K 1K(K%HK(*K(7A/K(c                    U  Vs/ s H  o"R                   U:  d  M  UPM     nnUS   R                  S:X  a  [        US   R                  U5      $ SnUS   nUR                  S:X  aJ  UR                  S   S:X  a7  UR                  S   R                  U::  a  UR                  S   R
                  nOUS:X  a  US   R
                  nUR                  S	5      U4$ s  snf )
z?
Returns the amount of commas and the keyword argument string.
rE   r   Nr   r   r   r   r   )r>   r9   r   r   rH   r=   r   )r   rA   r   r   key_strlasts         r   r   r   d  s      %?u!h(>AuL?B	)!,r"2";";XFFGDyyJ4==#3s#:a ((H4--"((	r"((c"G++ @s
   CCc                 f   [        [        [        U R                  5      5      5       H  u  p4US:X  d  M  UR                  U::  d  M  US:  d  M'  U R                  US  nUR                  5       nUc  MK  UR                  S:X  d  UR                  R                  S;   d  Mw  [        XEU-   U5      s  $    g )N(r   r   )r   r   )	reversedr}   r   r   rH   r_   r9   r`   r   )r   additional_childrenrA   r   elementr   r   s          r   &_get_signature_details_from_error_noder   y  s    "4	$--(@#ABc>goo9eai }}UV,H,,.D|yyF"dkk&6&6:M&M"77J,JHUU Cr   c                 8   U R                  USS9nUR                  U:  a  UR                  5       nUc  g UR                  nUGbV  UR                  S;   a  g / n[        UR                  5       H[  nUR                  U:  d  M  UR                  S:X  a$  [        XTU5      nUb  Us  $ UR                  USS& MI  UR                  SU5        M]     UR                  S:X  a  UR                  S   S:X  d#  UR                  S:X  a  UR                  S	   S:X  aw  X#R                  S
   L a  XR                  :  dW  UR                  5       nUc  g [        UR                  S:X  a  UR                  S   OUR                  S	   UR                  U5      $ UR                  nUb  GMV  g )NT)include_prefixes)funcdefclassdef	decorated
async_stmt
error_noder   r   r   	decoratorr   rE   )r8   r>   r_   r`   r9   r   r   r   insertrH   r   )modulerA   rB   r   r   r   results          r   get_signature_detailsr     s   ''4'HD ~~!%%'< ;;D

99JJ  $--(A{{X%66\)CF )%/0zz'!,#**1a0 ) 99	!dmmA&6#&=99+a0@C0G
 MM"--(ll2J--/<"(,		Y(>DMM!$DMMRSDTMM  {{K 
N r   call_signatures_validityc              #   l  #    US   S-
  nX5   SUS    nX2R                   S   U nSR                  Xv/-   5      n[        R                  " SU[        R                  5      n	UR                  5       R                  5       n
U
c  Sv   OXUR                   4v   [        U UUR                  5       5      v   g7f)z'This function calculates the cache key.r   r   Nr)   z.*\()	r>   rF   r:   r&   DOTALLget_root_context
py__file__r   r_   )r   r   r   rG   user_pos
line_indexbefore_cursorother_lineswholebefore_bracketr+   s              r   cache_signaturesr    s      !qJ*<HQK8M33A6zBKGGK/12EXXgubii8N**,779K
L,B,BCC
&&( s   B2B4c                 4   ^  [        T 5      SU 4S jj5       nU$ )Nc                   > Uc  [        [        U R                  5      S5      OUnSUs=:  a  [        U R                  5      ::  d  O  [        S5      eU R                  US-
     n[        U5      nUR	                  S5      (       a  US-  nOUR	                  S5      (       a  US-  nUc  UOUnSUs=::  a  U::  d  O  [        SX&X4-  5      eT" XU/UQ70 UD6$ )Nr   r   z)`line` parameter is not in a valid range.z
r   
zH`column` parameter (%d) is not in a valid range (0-%d) for line %d (%r).)maxr    _code_lines
ValueErrorrm   )rQ   r,   r-   rO   kwargsline_stringline_lenfuncs          r   wrapper%validate_line_column.<locals>.wrapper  s    04s3t''(!,$D1C 0 011HII&&tax0{#''MH!!$''MH#^V'x' 8!'4;FF G G D8888r   )NNr   )r  r  s   ` r   validate_line_columnr    s     
4[9 9$ Nr   c                   ^ ^^ UU4S jn[        [        R                  " T R                  5       R	                  5       5      5      nU(       d&  U 4S jnU Vs/ s H  ov" U5      (       d  M  UPM     nn[        XE5      $ s  snf )zN
Returns a dictionary with name parts as keys and their call paths as
values.
c                 h   > U R                  5       nT=(       a    U=(       d    T=(       a    U(       + $ r   )is_definition)r   is_defr   
referencess     r   def_ref_filter(get_module_names.<locals>.def_ref_filter  s(    ##%%vB)BF
Br   c                 n   > [        U 5      nU(       a  UR                  S:X  a  UR                  nUTS 4;   $ )Nr   )r   r9   r`   )r   parent_scoper   s     r   is_module_scope_name.get_module_names.<locals>.is_module_scope_name  s7    +D1L 1 1\ A+22FD>11r   )r}   r   from_iterableget_used_namesvaluesfilter)r   
all_scopesr   r  r  r   r  r   s   ` ``    r   get_module_namesr$    sh    
C $$V%:%:%<%C%C%EFGE	2 "=Eq%9!%<E=.(( >s   A>+A>c                 ^    U R                  S5      u  pnUS:X  a  SnXR                  S5      4$ )Nrv   deffunction.)
rpartitionsplit)r   r9   _dotted_namess       r   split_search_stringr-    s5     OOC0D\u}##C(((r   )F)TF)3__doc__r:   collectionsr   textwrapr   	itertoolsr   	functoolsr   inspectr   parso.python.parserr	   parso.pythonr
   jedi.inference.base_valuer   jedi.inference.syntax_treer   jedi.inference.helpersr   jedi.inference.compiledr   
jedi.cacher   r   jedi.parser_utilsr   r   r   r"   r&   r4   rC   rI   rx   rK   rd   r   r   r   r   r   r   r   r   r  r  r$  r-  rS   r   r   <module>r<     s    
 "     &  / 1 5 8 ; . .0KL(/08) %TP'T(*P Pf@(F,*V4n 01 2*.)6)r   