ó
    Ð]jfo  ã                   ó  • 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  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/J0r0   " S S\(5      r1S r2S r3S r4S r5S  r6S! r7\0Rp                  " 5       S" 5       r9 " S# S$5      r:S% r;\ Rx                  " S&5      r=S' r>S( r?S) r@  S,S* jrAS+ rBg)-é    N)Údedent)ÚAny)Ú	Parameter)ÚPythonTokenTypes)Útree)Ú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    ÚP/home/mande/repo/quber/.venv/lib/python3.13/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   é € ãˆÜ˜hŸo™oÖ.‰DˆAØ—6‘6ˆDØÓ#¨´	×0OÑ0OÓ(OÙØœ	×7Ñ7¼×9OÑ9OÐ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×.Ñ.Ö/‰DˆAØ—6‘6ˆDØ”y×/Ñ/Ò/ò àÕ$¨´)×2QÑ2QÜ2;×2KÑ2Kð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                  " X“U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   E   sê   é € ä‹u€HÜ×+×+Ø—O‘OÓ%ˆ	Û ˆØ×!Ñ!ˆØÓ#¨Ó(;ÙÜ×/×/Ø—\‘\“^ˆFÜ�=Š=˜°%×8Ñ8Ü×$Ò$ØØØÜ�I“ØØ'ñˆCð —‘˜3Ÿ<™<Ð(ˆAØÕ Ø—‘˜Q”Ø ŸN™N�	ØÑ(Ø!*×!9Ñ!9Ó!;�JØ!Ñ-°*·/±/ÀZÓ2OÙ Ø”	ò/ !ù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   d   s@   € Ù.Ó/Ò.˜�VŒVÑ.€EÐ/Ù"Ó:’{�!§f¡f°EÑ&9�A‘{Ñ:Ð:ùò 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   i   s1   € ð ×#Ñ#×9Ñ9¸(ÐUYÐ9ÐZ€DØ×(Ñ(¨Ó.Ð.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   q   s]   € Ø×,Ñ,¨XÈÐ,ÐM€DÜ˜¤§
¡
¬D¯I©IÐ6×7Ñ7Ø�{‰{ˆô ˜¤§
¡
¬D¯I©IÐ6×7Ó7ð €Kr)   c                 ó   • / $ r1   r*   )ÚcontextÚfunction_nameÚdecorator_nodess      r&   Úcomplete_param_namesr   y   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¸×9JÑ9JÈJÓ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                  X†S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   ø€ °Q·V±V×5FÑ5FÀtÇÁÓ5WÔ1WØ12·±×1BÑ1BÀ4Ó1HØ12·±×1BÑ1BÀ3Ó1GØ12·±·±³ñ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È$×JaÑJaÓ$bÑ!ˆ˜Eä,Ø× Ñ Ø×ÑØ×˜$Ø×#Ñ#Ø‘N‰D¨©Ø—+‘+ñ 
Ðð ÑÖ&:Ü#'Ô(:Ø×%Ñ% t×';Ñ';¸ZÐPVØ—‘ ×!:Ñ!:Ø× Ñ  $×"9Ñ"9Ø—‘ó	)ó $Ð ð ÑÞ'¨D°F«Nà'+×'?Ñ'?À
Ó'SÐ$Ø'Ð'à(,×(=Ñ(=¸dÓ(CÑ%ˆàˆØ�;‰;Ñ" t§{¡{×'7Ñ'7Ð;aÓ'aØ×!Ñ!Ô"8¸¿¹Ó"EÔFäœ<¨×(=Ñ(=Ð?OØ(,¯
©
°D·O±OØ(,¯©°^ñ^ó _ˆô Ð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	R+                  SS	S
SS5      n	U	c  O�U	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  oîR>                  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XÀRG                  UUUS9-  nGOyUS   S;   a–  US   S:X  a�  U R                   R#                  U R                  5      nUR,                  S:X  a  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OÚU RK                  5       (       a  XÀRM                  U5      -  nO±U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#  XÀR                  5       -  nXÀRC                  SS9-  nU(       di  U R                  U R                  S   S-
     SU R                  S    nXÀR[                  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ÚnewlineÚ	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_posÚsearch_ancestorrV   Ú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·±ó"ð ˆDŒJ˜ô �×@Ñ@ÓBÓCð 	ð Ð&Ô&Ø×$Ñ$×:Ñ:¸4¿>¹>Ð\`Ð:ÐaˆDØ ×2Ñ2Ó4ˆMà—^‘^ AÑ&ˆFØ—N‘N d§n¡nÕD¸¿¹ÕDØŸ™¨Ñ*�àÑ(Ø$�ØØ×/Ñ/Ø! :¨|¸ZØ$ó�Dð ‘|Øà ŸI™I�EØ Ó,Ø $§¡¨aÑ 0˜Ü% e¬T×2Ñ2Ø$)§K¡K°'Ñ$9˜Eà—~‘~ aÑ(¨FÓ2Ø  IÓ-Ø/°F¸FÐ3CÑCÑ/Ø" jÓ0Ø/Ò3PÑPÑ/Ø" jÓ0Ø/×6Ñ6°vÔ>ñ) ð, ')ÐàˆÜô LÔ2B×2GÑ2GÜ2B×2IÑ2Iñ2Kó L÷ Lò Lñ FKÓKÂU°z×2Ô2ÁUˆLÐKä! %Ó(ˆEÞ˜˜r™Ð&<Ó<ð #¤D¨×)AÑ)AÈdÐ)AÐ)SÓ$TÐTÐTØ ,Ó.Ü1°%¸È,Ñ9VÓW‘��uà$1°\Ñ$A×$WÀhÐRWÑFWÔX�Ø ×$<Ñ$<ØØØ!-ð %=ð %ñ Ò ð
 ˜bÑ!Ð%?Ó?ÀEÈ"ÁIÐQTÓDTØ×'Ñ'×=Ñ=¸d¿n¹nÓM�Ø—8‘8˜yÓ(Ø×/Ñ/Ó1�CØ—8‘8˜{Ó*ð ×0Ñ0Ó2�CØ!%×!7Ñ!7¸×8MÑ8MÓ8OÓ!P‘�˜QØ  AÑ%Ñ Ø×.Ñ.×0Ñ0Ø ×$9Ñ$9¸$Ó$?Ñ?Ñ ð ˜‘9 
Ó*Ø(¨Ñ,Ð0SÓSØ!%×!:Ò!:¸D¿N¹NÐ!K�JÞ!Ø'1°!¡}×'BÑ'B˜Ü&*¨<×+SÑ+SÓ+UÓ&V˜Ø+7×+RÑ+RÓ+TÐ(à(Ô,FØ&Ø,Ø'ó-ñ Ð(ô '5°ZÐAQÐS^Ó&_˜æ"Ø$×(CÑ(CÓ(EÑEÐ$Ø$×(@Ñ(@ÈUÐ(@Ð(SÑSÐ$æØ×+Ñ+¨D¯N©N¸1Ñ,=ÀÑ,AÑBÐCUÀDÇNÁNÐSTÑDUÐVˆLØ× 7Ñ 7Ø#Ø%1Ô!1÷ "@°\À"Ñ5EÈÑ5P÷ 6@Ø%1°"°#Ð%6¸%Ñ%?ôAð !8ð !ñ Ðð Ð,Ð,øôk ×"Ñ"ó 	>Ø—L‘L×&Ñ&ˆEØ˜‹|ð # B�Õ&ð × ;Ñ ;Ó =Ð=Õ=ûð	>üòh Ls0   Á2R ÈS-Ò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_completionW  sd   € Ø�j‰j˜‰nˆØ�?‰?˜iÓ'¬C°·	±	«N¸aÓ,?ð Ø�?‰?˜lÓ*ð à�‰Ð"BÑB×[ÀsÇyÁyÐQSÁ}Ð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R                  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      $ / $ )
Néþÿÿÿrý   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_paramsd  sã   € Ø—Z‘Z ‘^ˆ
Ø×!Ñ! \Ó1ØŸ™ B™ˆJØ×!Ñ! YÓ.Ü& t×';Ñ';¸T¿^¹^ÓLˆGØ×'Ñ'¨°iÓ@ˆDØÑØ—9‘9 Ó,ØŸ™ aÑ(�AØ—v‘v Ó-Ø%&§Z¡Z™
ØŸ™ ;Ó.Ø&' S™
à%'™
à!%×!4Ñ!4Ó!6�JØ *× 0Ñ 0°Ñ 3�ä+¨G×5HÑ5HÈ*Ó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_keywords{  sJ   é € Û$ˆAÜ˜!œS×!Ó! a§i¡i§k£kÞ" aÐ+DÕ&DÜ"×.Ò.¨t×/DÑ/DÀaÓ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ˆÜ$ØØ�N‰NØó
ˆð
 ÐÛˆ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ˆÜ�	Š	Ð1°6ÀÒKð ˆÜˆv‹;˜!ÓØ‰BˆAØ�{‰{�}‰}Ü�q—~‘~Ó&¨!Ó+Ø"#§.¡.°Ñ"3�KØ"Ð&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#   € Ü'¨×(<Ñ(<¸d¿n¹nÓ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Ñ2°E×;OÑ;OÐQVÓWˆØ×!Ñ! $×"7Ñ"7ÀlÐ!ÐSÐSùò )s   …A"c              #   óœ  #   • U R                   R                  U R                  SS9nUR                  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„   Úcreate_valuerØ   Úget_filtersÚnextr  Úapi_type)r%   r¿   rq   ÚclsÚclass_valuer  r  r7   s           r&   râ   ÚCompletion._complete_inherited«  s¾   é € ð × Ñ ×6Ñ6°t·~±~ÐX\Ð6Ð]ˆØ×"Ñ" :Ó.ˆØ‰;Øð ×*Ñ*×7Ñ7¸Ó<ˆà�=‰=˜Ñ˜tŸ~™~¨aÑ0Ó0Øà×)Ñ)°dÐ)Ð;ˆäˆWŒÛˆFØŸ™ž�à—M‘M ZÑ/°KÕ?Ø”Jó (ò ùs   ‚B9CÂ?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ÜŸ&š&Ð!1°2°qÓ9Ó9à’Jä$(¬¯ª°'¸1Ó)=Ó$>Ò!ò  ùs   ƒA?BT)Úkeependsr»   r‘   z
`([^`\s]+)r¨   )r   r	   r�   Ú_complete_code_linesr;  ÚsearchÚgroup)r%   r£   r]   rA  Úrelevant_code_linesrg   rO   rŒ   s          @r&   rž   ÚCompletion._complete_in_stringÃ  s©   ø€ õ	?ô ˜“ˆÜ  °$Ñ7ˆ
Ü"Ñ#6°zÓ#BÓCÐØ˜rÑ"Ñ.áEXÓ"YÒEXÀ©9¡4¸!Ò#;ÑEXÐÐ"YØ×,Ñ,Ð-@ÓAÐAÜ—	’	˜-¨°B©Ó8ˆÞØ×,Ñ,¨e¯k©k¸!«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       $ )Nr:  )Ú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&   rD  Ú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ž   rD  r/   r*   r)   r&   rP   rP   €   sN   † à,1ôò*.
ò`O-òb\òò.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Ô   rF  Úendr   )rq   rM  rO   Ústartrp   s       €r&   Úreturn_part_of_leafÚ<_extract_string_while_in_string.<locals>.return_part_of_leaf  s§   ø€ ØˆØ�9‰9˜ ™Ó#Ø'¨™{¨T¯[©[Ñ8ˆF�8ÑÜ×#Ò# D§J¡JÑ9°&Ñ9ˆÞØ#Ø—‘˜A“ˆØ�9‰9˜ ™Ó#¨°©°d·k±kÀEÇIÁIÃKÑ6OÓ(OØ#Ü$ T¨8Ó4°U·Y±Y³[°\ÐBÀDÐOÐOr)   r[  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   é € Ð"RÒ8Q°1¨¦;Ò8Qùs   ‚r:  c              3   ó<   >#   • U  H  n[        UT5      v •  M     g 7fr1   r   )r¶   r@  rp   s     €r&   r¹   rg  #  s   øé € ÐKÂF¸qÔ-¨a°×:Ð:ÂFùs   ƒr   )rØ   rV   rÔ   rQ   Úprefixr×   ÚallrN   rP  r   r\  Úinsert)rq   rp   ra  ÚleavesÚprefix_leafs    `   r&   rœ   rœ     sW  ø€ õ
Pð �$—.‘.Ó Øà‡y�y�HÓÙ" 4Ó(Ð(à€FØ
Ò
Ø�9‰9˜Ó$¨#°·±Ó*;¸sÀdÇjÁjÓ?PÜ�4—:‘:‹ Ó"Ù*¨4Ó0Ð0ØˆKØ—;—;Ø"×4Ñ4Ó6�ØÑ&¨+×*:Ñ*:¸fÓ*DÜ"Ñ"R¸×8IÑ8I×8OÑ8OÔ8QÓ"R×RÑRØ"&�Kð —‘ÔKÁFÓKÓKØ×#˜tØ"Ñ*‘°×0AÑ0AÜ'¨¨hÓ7ñ8ðð ð �9‰9˜ ™Ó#ð
 ð ð 	�‰�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)r1  rl   r  Úis_stubrt   r   Ú_complete_getattrr   )r'  r  rX   rÔ   r  Úpython_valuesrg   s          r&   r&  r&  3  s¸   € ØÐÛˆØ×'Ñ'°\×5KÑ5KÐ'ÓLˆFØ§¡£Ñ/Òñ Mð �}‰}�‹¤:¨e´\×#BÓ#BØÔ 1°,Ó FÑFÒñ ô # 6Ó*€MÛˆØ�?ØŸ-™-°\×5KÑ5K˜-ÓL�Ø §M¡M£OÑ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                  XÝR                  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>Z  s   é € ð #âˆDð 	�
‰
�ˆÚùs   ‚r  Úreturn_stmtr¨   Ú	atom_exprr   é   r7   ÚgetattrrË   é   c              3   ó>   #   • U  H  oR                   S :H  v •  M     g7f)ÚparamN)r3  )r¶   r÷   s     r&   r¹   rx  y  s   é € Ð@²i°—z‘z WÖ,²iùs   ‚)Úget_function_slot_namesr   Ú	from_setsrl   rV   Úiter_return_stmtsrÛ   rQ   rÔ   rQ  ÚgotorØ   rÝ   Ú
infer_noder&  )r'  Úinstancerf   Ú	functionsÚfuncrl   ry  rz  ÚatomrÅ   rË   r|   Úobject_nodeÚ	name_nodeÚ	name_listÚobjectss                   r&   rq  rq  D  s°  € ð( ×-Ñ-¨mÓ<÷ EØ×0Ñ0Ð1CÓDð 
ä×"Ò"ñ #áó#ó €Iô ˆØ—N‘Nˆ	ØÑ 	§¡°)Ó ;Ùà$×6Ñ6×8ˆKð ×Ñ =Ó0ÙØ#×,Ñ,¨QÑ/ˆIØ�~‰~ Ó,ÙØ×%Ñ% aÑ(ˆDØ×(Ñ(¨Ñ+ˆGÜ�9×%Ñ%Ó&¨!Ó+¨t¯y©y¸FÓ/BØ—z‘z YÓ.ÙØ×&Ñ& qÑ)ˆGØ�|‰|˜yÓ(¬C°×0@Ñ0@Ó,AÀAÓ,EÙØ—o‘oÓ'ˆGØ!×*Ñ*¨1Ñ-ˆKð  ×(Ñ(¨Ñ+ˆIØŸ™ Y×0CÑ0CÓDˆIÜÑ@±iÓ@×@Ñ@Úð
 ×(Ñ(¨Ó5ˆGÜ# LÓ:Ô:ô; 9ñ ðF €Ir)   c	           
   #   óf  #   • US S  H~  n	/ n
U HW  nX›R                   :X  d  M  UR                  b  UR                  S;   a	  U(       a  M:  U
[        UUR	                  5       5      -  n
MY     [
        R                  " SX¢S S 5        U
nM€     US   R                  5       nU GH  nUR                   R                  5       nU(       a  [        R                  " XÜUS9(       d  U(       a  MH  XÜ:X  d  MO  [        U[        5      (       a*  UR	                  5        Vs/ s H  oîR                  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   r3  r&  rw  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Ø—M‘MÕ!Ø—;‘;Ñ*¨q¯z©zÐ=TÓ/TÞ*ÙØÔ-Ø"Ø—G‘G“Ióñ ’	ñ ô 	�	Š	Ð3°YÀcÀrÀ
ÔKØŠñ ð ˜RÑ ×&Ñ&Ó(€IÜˆØ—‘×$Ñ$Ó&ˆÞœŸš f¸u×Eß�x FÕ$7Ü˜!œ]×+Ñ+Ø)*¯©¬Ó3ª AŸœ©�Ð3�à˜�ÞÜ% eÓ,�Û�ÞÜ"×-Ò-Ø'Ø"Ü),¨Y«Ø!&ñ	‘Dô #Ÿ<š<¨Ó<�DÞ" k°T·Y±YÕ&>Ø”Jô ò ùò
 4ùs*   ‚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;   d  MŒ  UR                  [        U5      5        M¨     U$ )N)r’   r“   Údotted_as_nameÚimport_as_namer7   r¨   Úkeywordr¼   )rŸ  rž  )rV   r2   rÛ   rÔ   rÜ   r    r¡   )ry   r[   ÚindexÚchilds       r&   r¡   r¡   ®  s¯   € Ø€Nà‡y�yÐ^Ó^Ü% d§m¡mÖ4‰LˆEØ�z‰z˜VÓ#Ø˜A“I $§-¡-°¸±	Ñ":×"?Ñ"?À9Ó"LØ ŸM™M¨%°!©)Ñ4×:Ñ:¸dÓBÙØ×%Ñ% e§k¡kÖ2Ø—‘ÐCÕCØ×%Ñ%Ô&<¸UÓ&CÖDñ 5ð Ðr)   )FFFF)Cr;  Útextwrapr   Útypingr   Úinspectr   Úparso.python.tokenr   Úparso.pythonr   Ú
parso.treer   Ú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&  rq  rœ  r¡   r*   r)   r&   Ú<module>rº     sß   ðÛ 	Ý Ý Ý å /Ý Ý Ý å Ý Ý Ý Ý Ý *Ý 1Ý "Ý .ß IÝ 5Ý -Ý :ß @ß KÝ 3Ý 'ô&Ð*ô &ò
	3òò,ò>;ò
/òð ×ÒÓñó ð÷sñ sòlð —
’
Ð3Ó4€ò-ò`ò"=ðB 9>Ø38ô'óTr)   