Ë
    ¬;jfo  ã                   ó  — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0  G d„ de(«      Z1d„ Z2d„ Z3d„ Z4d„ Z5d „ Z6d!„ Z7 e0jp                  «       d"„ «       Z9 G d#„ d$«      Z:d%„ Z; e jx                  d&«      Z=d'„ Z>d(„ Z?d)„ Z@	 	 d,d*„ZAd+„ ZBy)-é    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                   ó   — e Zd Zd„ Zy)ÚParamNameWithEqualsc                 ó    — | j                   dz   S )NÚ=)Ústring_name)Úselfs    úd/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jedi/api/completion.pyÚget_public_namez#ParamNameWithEquals.get_public_name   s   € Ø×Ñ #Ñ%Ð%ó    N)Ú__name__Ú
__module__Ú__qualname__r&   © r'   r%   r    r       s   „ ó&r'   r    c              #   ó0  K  — | D ]�  }t        |j                  «      D ]s  \  }}|j                  }||k  r|t        j                  k(  rŒ+|t        j                  t        j
                  fv sŒN|j                  |vsŒ]t        |j                  «      –— Œu Œ� y ­w©N)	Ú	enumerateÚparamsÚkindr   ÚPOSITIONAL_OR_KEYWORDÚKEYWORD_ONLYÚnamer    Ú_name)Ú
signaturesÚpositional_countÚused_kwargsÚcall_sigÚiÚpr0   s          r%   Ú_get_signature_param_namesr;   #   s}   è ø€ ãˆÜ˜hŸo™oÖ.‰DˆAˆqØ—6‘6ˆDØÐ#Ò#¨´	×0OÑ0OÒ(OØØœ	×7Ñ7¼×9OÑ9OÐPÒPØŸ™ kÒ1Ü)¨!¯'©'Ó2Ó2ñ /ñ ùs   ‚A(BÁ+BÁ:Bc                 óü   — |ryd}| D ]q  }t        |j                  «      D ]R  \  }}|j                  }|t        j                  u r  y||k\  sŒ-|t        j
                  t        j                  fv sŒPd} n |rŒp |S  |S )NTF)r.   r/   r0   r   ÚVAR_POSITIONALr1   ÚPOSITIONAL_ONLY)r5   r6   r7   Úmust_be_kwargÚ	signaturer9   r:   r0   s           r%   Ú_must_be_kwargrA   /   s’   € ÙØà€MÛˆ	Ü˜i×.Ñ.Ö/‰DˆAˆqØ—6‘6ˆDØ”y×/Ñ/Ñ/ò àÐ$Ó$¨´)×2QÑ2QÜ2;×2KÑ2Kð2Mò *Mà %�Ùð 0ò ØØÐð  ð Ðr'   c           	   #   ó  K  — t        «       }t        j                  r|j                  «       }|D ]×  }|j                  }	|	|v r|	|k7  rŒt        j                  r|	j                  «       }	t        j                  |	||¬«      sŒRt        j                  | ||t        |«      ||¬«      }
|
j                  |
j                  f}||vsŒ“|j                  |«       |j                  }|�"|j                  «       }|�|j                  dk(  rŒÔ|
–— ŒÙ y ­w)N©Úfuzzy)Úis_fuzzyÚcached_nameÚdel_stmt)Úsetr   Úcase_insensitive_completionÚlowerr#   r   Úmatchr   Ú
CompletionÚlenr3   ÚcompleteÚaddÚ	tree_nameÚget_definitionÚtype)Úinference_stateÚcompletion_namesÚstackÚ	like_namerD   Úimported_namesrF   Úcomp_dctr3   ÚstringÚnewÚkrP   Ú
definitions                 r%   Úfilter_namesr]   E   sð   è ø€ ä‹u€HÜ×+Ò+Ø—O‘OÓ%ˆ	Û ˆØ×!Ñ!ˆØ�^Ñ#¨°)Ò(;ØÜ×/Ò/Ø—\‘\“^ˆFÜ�=‰=˜ °%Ö8Ü×$Ñ$ØØØÜ�I“ØØ'ôˆCð —‘˜3Ÿ<™<Ð(ˆAØ˜Ò Ø—‘˜Q”Ø ŸN™N�	ØÐ(Ø!*×!9Ñ!9Ó!;�JØ!Ð-°*·/±/ÀZÒ2OØ Ø“	ñ/ !ùs   ‚A>D
ÂA D
ÃAD
c                 ó†   — |D �ch c]  }|j                   ’Œ }}| D �cg c]  }|j                   |vsŒ|‘Œ c}S c c}w c c}w r-   )r3   )ÚcompletionsÚother_completionsÚdÚnamesÚcs        r%   Ú_remove_duplicatesrd   d   sD   € Ù.Ó/Ñ.˜ˆQ�V‹VÐ.€EÐ/Ù"Ó:‘{�! a§f¡f°EÒ&9ŠA�{Ñ:Ð:ùò 0ùÚ:s   …9ž>²>c                 ó^   — | j                   j                  |d¬«      }| j                  |«      S )zK
    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_contextrn   i   s1   € ð ×#Ñ#×9Ñ9¸(ÐUYÐ9ÓZ€DØ×(Ñ(¨Ó.Ð.r'   c                 óî   — | j                  |d¬«      }t        |t        j                  t        j                  f«      s7|j
                  }t        |t        j                  t        j                  f«      sŒ7|S )NTrf   )ri   Ú
isinstancer   ÚScopeÚFlowÚparent)Úmodule_noderl   Únodes      r%   Úget_flow_scope_noderv   q   sW   € Ø×,Ñ,¨XÈÐ,ÓM€DÜ˜¤§
¡
¬D¯I©IÐ6Ô7Ø�{‰{ˆô ˜¤§
¡
¬D¯I©IÐ6Õ7ð €Kr'   c                 ó   — g S r-   r+   )ÚcontextÚfunction_nameÚdecorator_nodess      r%   Úcomplete_param_namesr{   y   s	   € ð €Ir'   c                   ób   — e Zd Z	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zdd
„Zdd„Zd„ Zd„ Zy)rL   c                 óÆ   — || _         || _        |j                  | _        || _        t        j                  | j                  ||«      | _        || _        || _	        || _
        y r-   )Ú_inference_stateÚ_module_contextrh   Ú_module_nodeÚ_code_linesr   Úget_on_completion_nameÚ
_like_nameÚ_original_positionÚ_signatures_callbackÚ_fuzzy)r$   rS   rk   Ú
code_linesrl   Úsignatures_callbackrD   s          r%   Ú__init__zCompletion.__init__�   s`   € à /ˆÔØ-ˆÔØ*×4Ñ4ˆÔØ%ˆÔô "×8Ñ8¸×9JÑ9JÈJÐX`ÓaˆŒð #+ˆÔØ$7ˆÔ!àˆ�r'   c                 ó�  ‡ — ‰ j                   j                  ‰ j                  d¬«      }t        |‰ j                  «      \  }}}t	        ‰ j
                  ‰ j                  |xs |‰ j                  |€d n||z   ‰ j                  ¬«      }|�e|sct        t        ‰ j                  ‰ j
                  |||‰ j                  ‰ j                  ‰ j                  ‰ j                  ‰ j                  «
      «      }|�|sd|v r‰ j                  ||«      }|S ‰ j                  |«      \  }}g }|j                  �<|j                  j                   dv r$|j#                  t%        |j                  «      «       t        t'        ‰ j                  |‰ j(                  ‰ j                  ‰ j                  ||¬«      «      }	t+        ||	«      t-        |	ˆ fd„¬«      z   S )	NTrf   rC   Ú
)Úimport_as_namesÚdotted_as_names)rF   c                 óì   •— | j                   j                  ‰j                  «       | j                   j                  d«      | j                   j                  d«      | j                   j                  «       fS )NÚ__Ú_)r3   Ú
startswithrƒ   rJ   )Úxr$   s    €r%   Ú<lambda>z%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€   ri   r„   Ú_extract_string_while_in_stringr   r   r�   r†   Úlistr   r~   rƒ   r…   Ú_complete_in_stringÚ_complete_pythonrs   rR   ÚextendÚextract_imported_namesr]   rU   rd   Úsorted)
r$   rm   rY   Ú
start_leafÚquoteÚprefixed_completionsrF   rT   rW   r_   s
   `         r%   rN   zCompletion.complete–   s¾  ø€ Ø× Ñ ×6Ñ6Ø×#Ñ#Ø!ð 7ó 
ˆô %DÀDÈ$×JaÑJaÓ$bÑ!ˆ�
˜Eä,Ø× Ñ Ø×ÑØÒ˜$Ø×#Ñ#Ø�N‰D¨°©Ø—+‘+ô 
Ðð ÐÑ&:Ü#'Ô(:Ø×%Ñ% t×';Ñ';¸ZÈÐPVØ—‘ ×!:Ñ!:Ø× Ñ  $×"9Ñ"9Ø—‘ó	)ó $Ð ð ÐÙ'¨D°F©Nà'+×'?Ñ'?À
ÈFÓ'SÐ$Ø'Ð'à(,×(=Ñ(=¸dÓ(CÑ%ˆÐ%àˆØ�;‰;Ð" t§{¡{×'7Ñ'7Ð;aÑ'aØ×!Ñ!Ô"8¸¿¹Ó"EÔFäœ<¨×(=Ñ(=Ð?OØ(,¯
©
°D·O±OØ(,¯©°^ÐQ\ô^ó _ˆô Ð3°[ÓAÜ�[ó 'Aô BñBð	
r'   c                 óR	  ‡— | j                   j                  }dx| _        }| j                  d   | j                  d   t	        | j
                  «      z
  f| _        d}	 t        j                  || j                  || j                  «      x| _        }t        |j                  «       «      Šd‰v �r| j                   j#                  | j                  d¬«      }|j%                  «       }| j                  d   }|j&                  | j                  cxk  r|j(                  k  sn |j&                  d   }|��|}		 |	j+                  dd	d
dd«      }	|	€n‚|	j,                  }
|
dk(  r.|	j.                  d   }t1        |t2        «      r|j                  dz   }
|	j&                  d   |k(  r0|
dk(  r‰ddgz  Šn#|
dk(  r‰g d¢z  Šn|
d	k(  r‰j5                  d«       Œšg }d}t7        ˆfd„t8        j:                  t8        j<                  fD «       «      �rê|D �cg c]  }|j>                  ‘Œ }}tA        |«      }|r$|d   dv r|t        | jC                  d¬«      «      fS d|v r5tE        |d|v «      \  }}d|v xr d|v  }|| jG                  |||¬«      z  }�ng|d   dv r“|d   dk(  r‹| j                   j#                  | j                  «      }|j,                  dk(  r|j%                  «       }|j,                  dk(  r|j%                  «       }| jI                  |j%                  «       «      \  }}||z  }nÍ| jK                  «       r|| jM                  |«      z  }n¨|d   dv rw|d   dv rp | jN                  | j                  Ž }|rU|d   jP                  }t        |jS                  «       «      }|jU                  «       }|tW        |||«      z  }tY        |||«      }|s(|| j                  «       z  }|| jC                  d¬«      z  }|sZ| j                  | j                  d   dz
     d| j                  d    }|| j[                  ‰| xs |d   dv xr |d d d!k7   ¬"«      z  }||fS # t        j                  $ r@}|j                  j                  }|dk(  r	|g fcY d}~S || j                  «       fcY d}~S d}~ww xY wc c}w )#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   é   Ú.ÚifTrf   Úif_stmtÚfor_stmtÚ
while_stmtÚtry_stmtÚ
error_nodeÚ_stmtÚelifÚelse)ÚexceptÚfinallyrª   Fc              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr-   r+   )Ú.0ÚtÚallowed_transitionss     €r%   Ú	<genexpr>z.Completion._complete_python.<locals>.<genexpr>  s#   øè ø€ ð Lñ 2K¨AˆqÐ'Ô'ñ 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~   ÚgrammarrU   r„   rM   rƒ   Ú	_positionr   Úget_stack_at_positionr�   ÚOnErrorLeafÚ
error_leafÚvalueÚ_complete_global_scoper–   Ú)_allowed_transition_names_and_token_typesr€   ri   Úget_previous_leafÚ	start_posÚend_posÚsearch_ancestorrR   Úchildrenrp   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;   rA   Ú_complete_keywords)r$   rm   rÆ   rU   rF   ÚerË   Úprevious_leafÚindentÚstmtÚtype_ÚfirstrT   Úkwargs_onlyÚ
stack_nodeÚnonterminalsÚnodesÚlevelrb   r»   ÚdotÚnr5   Úcall_detailsr7   r6   Úcurrent_liner°   s                              @r%   r˜   z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Ø$)§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ñ FKÓKÁU°z˜J×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�Ø  D×$<Ñ$<ØØØ!-ð %=ó %ñ Ò ð
 ˜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Ø  D×$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   Á3Q ÈR$ÑR!Ñ!RÑ?R!ÒRÒR!ÒR!c                 óÒ   — | j                   d   }|j                  dk(  rt        |j                  «      dk(  ry|j                  dv ry|j                  dv xr |j                  d   dk(  S )Nr²   Úlambdefr    TÚ
parameters)ÚtypedargslistÚvarargslistrÁ   )rU   r×   rM   rë   )r$   Útoss     r%   rÜ   z#Completion._is_parameter_completionW  sd   € Ø�j‰j˜‰nˆØ�?‰?˜iÒ'¬C°·	±	«N¸aÒ,?ð Ø�?‰?˜lÑ*ð à�‰Ð"BÐBÒ[ÀsÇyÁyÐQSÁ}ÐX[ÑG[Ð[r'   c                 óò  — | j                   d   }|j                  dk(  r| j                   d   }|j                  dk(  rºt        | j                  | j                  «      }|j                  dd«      }|�†|j                  dk(  rA|j                  d   }|j                  dk(  r|j                  }n&|j                  dk(  r|g}ng }n|j                  «       }|j                  d	   }t        ||j                  |«      S g S )
Néþÿÿÿró   rÄ   Úfuncdefr§   r   Ú
decoratorsrÃ   r    )rU   r×   rn   r   rÇ   rÑ   rR   rÒ   Úget_decoratorsrë   r{   rË   )r$   rm   ré   rx   ru   rî   rú   ry   s           r%   rÝ   z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              #   ó°   K  — |D ]M  }t        |t        «      sŒ|j                  «       sŒ%|r|dv sŒ,t        j                  | j
                  |«      –— ŒO y ­w)N)ÚTrueÚFalseÚNone)rp   ÚstrÚisalphar   ÚKeywordNamer~   )r$   r°   rÅ   r[   s       r%   rá   zCompletion._complete_keywords{  sF   è ø€ Û$ˆAÜ˜!œSÕ! a§i¡i¥kÙ" aÐ+DÒ&DÜ"×.Ñ.¨t×/DÑ/DÀaÓHÓHñ %ùs   ‚A™AªA±%Ac                 ó  — t        | j                  | j                  «      }t        j                  d|«       t        | j                  | j                  «      }t        || j                  |«      }g }|D ]  }||j                  «       z  }Œ |S )Nzglobal completion scope: %s)	rn   r   rÇ   r
   Údbgrv   r€   r   Úvalues)r$   rx   Úflow_scope_nodeÚfiltersrT   Úfilters         r%   rÌ   z!Completion._complete_global_scope�  s}   € Ü" 4×#7Ñ#7¸¿¹ÓHˆÜ�	‰	Ð/°Ô9Ü-¨d×.?Ñ.?ÀÇÁÓPˆÜ$ØØ�N‰NØó
ˆð
 ÐÛˆFØ §¡£Ñ/Ñð àÐr'   c                 óH  — | j                   j                  |«      }t        ||«      }t        j                  d|d¬«       d }t        |«      dk(  rA|\  }|j                  «       r-t        |j                  «      dk(  r|j                  d   }|dv r|}|| j                  |«      fS )Nztrailer completion values: %sÚMAGENTA)Úcolorr    r   )ÚnumpyÚ
tensorflowÚ
matplotlibÚpandas)	r   rj   r   r
   r  rM   Ú	is_moduleÚstring_namesÚ_complete_trailer_for_values)r$   rã   Úinferred_contextr  rF   ÚvÚmodule_names          r%   rÛ   zCompletion._complete_trailer�  s�   € Ø×/Ñ/×>Ñ>¸}ÓMÐÜ#Ð$4°mÓDˆÜ�	‰	Ð1°6ÀÕKð ˆÜˆv‹;˜!ÒØ‰BˆAØ�{‰{Œ}Ü�q—~‘~Ó&¨!Ò+Ø"#§.¡.°Ñ"3�KØ"Ð&UÑUØ&1˜à˜D×=Ñ=¸fÓEÐEÐEr'   c                 óZ   — t        | j                  | j                  «      }t        ||«      S r-   )rn   r   rÇ   Úcomplete_trailer)r$   r  Úuser_contexts      r%   r  z'Completion._complete_trailer_for_values¡  s%   € Ü'¨×(<Ñ(<¸d¿n¹nÓMˆä ¨fÓ5Ð5r'   c                 óÐ   — |D �cg c]  }|j                   ‘Œ }}t        j                  | j                  || j                  |«      }|j                  | j                  |¬«      S c c}w )Nrº   )rË   r   ÚImporterr~   r   rT   )r$   rb   rì   r»   rî   r9   s         r%   rÚ   zCompletion._get_importer_names¦  s^   € Ù"'Ó(¡%˜Q�—“ %ˆÐ(Ü×Ñ˜T×2Ñ2°E¸4×;OÑ;OÐQVÓWˆØ×!Ñ! $×"7Ñ"7ÀlÐ!ÓSÐSùò )s   …A#c              #   ó˜  K  — | j                   j                  | j                  d¬«      }|j                  d«      }|€y| j                  j                  |«      }|j                  d   |j                  d   k\  ry|j                  d¬«      }t        |«       |D ].  }|j                  «       D ]  }|j                  dk(  |k(  sŒ|–— Œ Œ0 y­w)zP
        Autocomplete inherited methods when overriding in child class.
        Trf   ÚclassdefNr    )Úis_instanceÚfunction)r€   ri   rÇ   rÑ   r   Úcreate_valuerÏ   Úget_filtersÚnextr  Úapi_type)r$   r¶   rm   ÚclsÚclass_valuer  r  r3   s           r%   rÙ   zCompletion._complete_inherited«  s¿   è ø€ ð × Ñ ×6Ñ6°t·~±~ÐX\Ð6Ó]ˆØ×"Ñ" :Ó.ˆØˆ;Øð ×*Ñ*×7Ñ7¸Ó<ˆà�=‰=˜Ñ˜tŸ~™~¨aÑ0Ò0Øà×)Ñ)°dÐ)Ó;ˆäˆWŒÛˆFØŸ™ž�à—M‘M ZÑ/°KÓ?Ø“Jñ (ñ ùs   ‚B>C
Ã	C
c                 ó8  ‡— ˆfd„}t        |«      }t        |d¬«      Št         |‰«      «      }|d   �$|D �cg c]  }|€dn|‘Œ
 }}| j                  |«      S t	        j
                  d‰d   «      }|r!| j                  |j                  d«      g«      S g S c c}w )aU  
        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   óâ   •K  — d}‰D ]c  }|s"|j                  d«      s|j                  d«      rt        j                  dd|«      –— nd –— t        t        j                  d|«      «      }Œe y ­w)NFz>>>Ú z^( *>>> ?| +)Ú z *>>>)r‘   ÚreÚsubÚboolrK   )ÚlinesÚinclude_next_lineÚlr‡   s      €r%   Úiter_relevant_linesz;Completion._complete_in_string.<locals>.iter_relevant_linesÎ  s_   øè ø€ Ø %ÐÛ�Ù$¨¯©°UÔ(;¸q¿|¹|ÈCÔ?PÜŸ&™&Ð!1°2°qÓ9Ó9à’Jä$(¬¯©°'¸1Ó)=Ó$>Ñ!ñ  ùs   ƒA,A/T)Úkeependsr²   r‹   z
`([^`\s]+)r    )r   r	   r–   Ú_complete_code_linesr)  ÚsearchÚgroup)r$   rœ   rY   r/  Úrelevant_code_linesrc   rK   r‡   s          @r%   r—   zCompletion._complete_in_stringÃ  s«   ø€ ô	?ô ˜“ˆÜ  °$Ô7ˆ
Ü"Ñ#6°zÓ#BÓCÐØ˜rÑ"Ð.áEXÓ"YÑEXÀ¨1¨9¡4¸!Ñ#;ÐEXÐÐ"YØ×,Ñ,Ð-@ÓAÐAÜ—	‘	˜-¨°B©Ó8ˆÙØ×,Ñ,¨e¯k©k¸!«nÐ-=Ó>Ð>Øˆ	ùò #Zs   ¹Bc                 óH  — | j                   j                  j                  dj                  |«      «      }t	        | j
                  | j                   ||¬«      }t        | j                   |j                  «       ||j                  d„ | j                  ¬«      j                  «       S )Nr(  )Úin_module_contextrS   rt   r‡   c                  ó   — g S r-   r+   )ÚargsÚkwargss     r%   r“   z1Completion._complete_code_lines.<locals>.<lambda>ñ  s   € ¹r'   )r‡   rl   rˆ   rD   )r~   rÆ   ÚparseÚjoinr   r   rL   Ú
as_contextrÐ   r†   rN   )r$   r‡   rt   Úmodule_values       r%   r1  zCompletion._complete_code_linesä  sŒ   € Ø×+Ñ+×3Ñ3×9Ñ9¸"¿'¹'À*Ó:MÓNˆÜ&Ø"×2Ñ2Ø ×1Ñ1Ø#Ø!ô	
ˆô Ø×!Ñ!Ø×#Ñ#Ó%Ø!Ø ×(Ñ(Ù :Ø—+‘+ô
÷ ‰(‹*ð	r'   N)F)r   T)T)r(   r)   r*   r‰   rN   r˜   rÜ   rÝ   rá   rÌ   rÛ   r  rÚ   rÙ   r—   r1  r+   r'   r%   rL   rL   €   sN   „ à,1óò*.
ò`O-òb\òò.Iò òFò$6ó
Tó
ò0óBr'   rL   c                 ón   — g }| D ]-  }|j                   j                  dk(  rg }Œ||j                  z  }Œ/ |S )NÚ
small_stmt)ÚdfaÚ	from_rulerë   )rU   rë   ré   s      r%   rØ   rØ   ö  s?   € Ø€EÛˆ
Ø�>‰>×#Ñ# |Ò3Ø‰Eà�Z×%Ñ%Ñ%‰Eð	 ð
 €Lr'   z^\w*(\'{3}|"{3}|\'|")c                 ó   ‡— ˆfd„}‰| j                   k  ry| j                  dk(  r || «      S g }| ��| j                  dk(  rÓd| j                  v sd| j                  v r·t        | j                  «      dkD  r || «      S d }| j                  sM| j                  «       }|�9|j                  dk7  s*t        d	„ |j                  j                  «       D «       «      sd }d
j                  ˆfd„|D «       «      |xs | |€d
n|j                  t        | ‰«      z   fS | j                  ‰d   k7  r	 y|j                  d| «       | j                  «       } | ��Œy)Nc                 ój  •— i }| j                   ‰d   k(  r‰d   | j                  z
  |d<   t        j                  | j                  fi |¤Ž}|sy|j                  d«      }| j                   ‰d   k(  r$‰d   | j                  |j                  «       z   k  ryt        | ‰«      |j                  «       d  | |fS )Nr   r    Úendpos©NNN)ÚlineÚcolumnÚ_string_startrK   rË   r3  Úendr   )rm   r9  rK   Ústartrl   s       €r%   Úreturn_part_of_leafz<_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'   rE  rY   rÊ   Ú"Ú'r    r3   c              3   ó$   K  — | ]  }|d v –— Œ
 y­w)ÚrubfNr+   )r®   rc   s     r%   r±   z2_extract_string_while_in_string.<locals>.<genexpr>  s   è ø€ Ð"RÑ8Q°1 1¨¤;Ñ8Qùs   ‚r(  c              3   ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr-   r   )r®   r.  rl   s     €r%   r±   z2_extract_string_while_in_string.<locals>.<genexpr>#  s   øè ø€ ÐKÁF¸qÔ-¨a°×:ÁFùs   ƒr   )rÏ   rR   rË   rM   ÚprefixrÎ   ÚallrJ   r;  r   rF  Úinsert)rm   rl   rK  ÚleavesÚprefix_leafs    `   r%   r•   r•     sT  ø€ ô
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Ø"&�Kð —‘ÓKÁFÓKÓKØÒ#˜tØ"Ð*‘°×0AÑ0AÜ'¨¨hÓ7ñ8ðð ð �9‰9˜ ™Ò#ð
 ð ð 	�‰�a˜ÔØ×%Ñ%Ó'ˆð1 Ò
ð2 r'   c                 óx  — g }|D ]g  }|j                  | j                  ¬«      D ]  }||j                  «       z  }Œ |j                  «       rŒHt	        |t
        «      sŒY|t        | |«      z  }Œi t        |«      }|D ];  }||vsŒ|j                  | j                  ¬«      D ]  }||j                  «       z  }Œ Œ= |S )N)Úorigin_scope)r   rh   r  Úis_stubrp   r   Ú_complete_getattrr   )r  r  rT   rË   r  Úpython_valuesrc   s          r%   r  r  3  s»   € ØÐÛˆØ×'Ñ'°\×5KÑ5KÐ'ÖLˆFØ §¡£Ñ/Ñð Mð �}‰}�¤:¨e´\Õ#BØÔ 1°,ÀÓ FÑFÑð ô # 6Ó*€MÛˆØ�FŠ?ØŸ-™-°\×5KÑ5K˜-ÖL�Ø  F§M¡M£OÑ3Ñ ñ Mð ð Ðr'   c                 ór  — |j                  d«      xs |j                  d«      }t        j                  d„ |D «       «      }|D �]p  }|j                  }|�|j                  dk7  rŒ"|j                  «       D �];  }|j                  dk7  rŒ|j                  d   }|j                  dk7  rŒ3|j                  d   }|j                  d   }	t        |j                  «      d	k7  s|j                  d
k7  s|j                  dk7  rŒˆ|	j                  d   }
|
j                  dk7  st        |
j                  «      dk  rŒ¿|j                  «       }|
j                  d   }|
j                  d	   }|j                  ||j                  «      }t        d„ |D «       «      s�Œ|j                  |«      }t        | |«      c c S  �Œs g S )aV  
    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   ó<   K  — | ]  }|j                  «       –— Œ y ­wr-   )Úinfer)r®   r3   s     r%   r±   z$_complete_getattr.<locals>.<genexpr>Z  s   è ø€ ð #áˆDð 	�
‰
�Ùùs   ‚rù   Úreturn_stmtr    Ú	atom_exprr   é   r3   ÚgetattrrÂ   é   c              3   ó:   K  — | ]  }|j                   d k(  –— Œ y­w)ÚparamN)r"  )r®   rî   s     r%   r±   z$_complete_getattr.<locals>.<genexpr>y  s   è ø€ Ð@±i°�q—z‘z WÕ,±iùs   ‚)Úget_function_slot_namesr   Ú	from_setsrh   rR   Úiter_return_stmtsrÒ   rM   rË   r<  ÚgotorÏ   rÔ   Ú
infer_noder  )r  Úinstancerb   Ú	functionsÚfuncrh   r`  ra  Úatomr¼   rÂ   rx   Úobject_nodeÚ	name_nodeÚ	name_listÚobjectss                   r%   rY  rY  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	           
   #   óø  K  — |d d D ]q  }	g }
|D ]L  }|	|j                   k(  sŒ|j                  �|j                  dv r|rŒ0|
t        ||j	                  «       «      z  }
ŒN t        j                  d|
|d d «       |
}Œs |d   j                  «       }|D ]à  }|j                   j                  «       }|rt        j                  |||¬«      s	|rŒ:||k(  sŒ@t        |t        «      r(|j	                  «       D �cg c]  }|j                  ‘Œ }}n|g}|rt        |«      }|D ]T  }|r$t        j                  | |d t!        |«      |¬«      }nt        j"                  | |«      }|r||j$                  k(  sŒQ|–— ŒV Œâ y c c}w ­w)Nr²   )ÚmoduleÚ	namespacezdot lookup on search %s from %sé
   rC   )rU   Úlike_name_lengthrE   )r#   rP   r"  r  r_  r
   r  rJ   r   rK   rp   r   r3   r   r   rL   rM   ÚNamerR   )rS   rk   rb   Úwanted_namesÚwanted_typerN   rD   Úignore_importsÚconvertÚsÚ	new_namesrî   Ú	last_namerY   r  Ún2Údef_s                    r%   Úsearch_in_modulerƒ  „  sn  è ø€ ð ˜#˜2ÓˆØˆ	ÛˆAØ�A—M‘MÓ!Ø—;‘;Ð*¨q¯z©zÐ=TÑ/TÙ*ØØÔ-Ø"Ø—G‘G“Ióñ ‘	ð ô 	�	‰	Ð3°YÀÀcÀrÀ
ÔKØ‰ð ð ˜RÑ ×&Ñ&Ó(€IÛˆØ—‘×$Ñ$Ó&ˆÙœŸ™ f¨i¸uÕEÚ F¨iÓ$7Ü˜!œ]Ô+Ø)*¯©¬Ó3© A˜Ÿ›¨�Ñ3à˜�ÙÜ% eÓ,�Û�ÙÜ"×-Ñ-Ø'¨Ø"Ü),¨Y«Ø!&ô	‘Dô #Ÿ<™<¨¸Ó<�DÙ" k°T·Y±YÓ&>Ø“Jñ ñ ùò
 4ùs*   ‚E:¢B(E:ÃE:Ã"E:Ã3E5ÄA%E:Å,E:c                 ó�  — g }| j                   dv rµt        | j                  «      D ]�  \  }}|j                   dk(  r`|dkD  r?| j                  |dz
     j                   dk(  r | j                  |dz
     j                  dk(  rŒY|j	                  |j                  «       Œu|j                   dv sŒ„|j                  t        |«      «       ŒŸ |S )N)rŒ   r�   Údotted_as_nameÚimport_as_namer3   r    Úkeywordr³   )r†  r…  )rR   r.   rÒ   rË   rÓ   r™   rš   )ru   rW   ÚindexÚchilds       r%   rš   rš   ®  s±   € Ø€Nà‡y�yÐ^Ñ^Ü% d§m¡mÖ4‰LˆE�5Ø�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;   rA   r]   rd   rn   rv   Údecorater{   rL   rØ   ÚcompilerH  r•   r  rY  rƒ  rš   r+   r'   r%   Ú<module>r¡     sã   ðÛ 	Ý Ý Ý å /Ý Ý Ý å Ý Ý Ý Ý Ý *Ý 1Ý "Ý .ß IÝ 5Ý -Ý :ß @ß KÝ 3Ý 'ô&Ð*ô &ò
	3òò,ò>;ò
/òð €×ÑÓñó ð÷sñ sòlð �—
‘
Ð3Ó4€ò-ò`ò"=ðB 9>Ø38ó'óTr'   