Ë
    ¬;jmC  ã                   óŠ  — 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mZmZ d dlmZmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ  G d„ d«      Z G d„ de«      Z G d„ d«      Z G d„ dee«      Z G d„ dee«      Z G d„ dee«      Z G d„ dee«      Z  G d„ dee«      Z! G d„ de«      Z" G d„ de"«      Z#d „ Z$d!„ Z%y")#é    )Úabstractmethod)Úcontextmanager)ÚPath)ÚOptionalÚAny)ÚName)ÚParserTreeFilterÚMergedFilterÚGlobalNameFilter)ÚAnonymousParamNameÚTreeNameDefinition)Ú	NO_VALUESÚValueSet)Úget_parent_scope)Údebug)Úparser_utilsc                   óÄ   — e Zd ZU eed<   eed<   d„ Zedd„«       Zd„ Z	 	 dd„Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd„ Zed„ «       Zd„ Zd„ Zed„ «       Zy)ÚAbstractContextÚ	tree_nodeÚparent_contextc                 ó    — || _         i | _        y ©N)Úinference_stateÚpredefined_names)Úselfr   s     úg/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/jedi/inference/context.pyÚ__init__zAbstractContext.__init__   s   € Ø.ˆÔØ "ˆÕó    Nc                 ó   — t         ‚r   ©ÚNotImplementedError©r   Úuntil_positionÚorigin_scopes      r   Úget_filterszAbstractContext.get_filters   ó   € ä!Ð!r   c                 ó¤   — ddl m} t        | t        |t        «      r|nd |«      }|j                  ||«      }t        j                  d|| |«       |S )Nr   )Úfinderzcontext.goto %s in (%s): %s)Újedi.inferencer(   Ú_get_global_filters_for_nameÚ
isinstancer   Úfilter_namer   Údbg)r   Úname_or_strÚpositionr(   ÚfiltersÚnamess         r   ÚgotozAbstractContext.goto   sM   € Ý)Ü.Ø¤¨K¼Ô!>‘+ÀDÈ(ó
ˆð ×"Ñ" 7¨KÓ8ˆÜ�	‰	Ð/°¸dÀEÔJØˆr   c                 ó
  — |€| }| j                  ||«      }t        |t        «      r|j                  n|}d}| j                  rst        |t        «      rc|}|�_t        j                  |«      sJ|j                  }|j                  dv r	 | j                  |   }	|	|   }
|
}n|�t        j                  |«      sŒJ|�>|r<ddl
m} |j                  | | j                  |¬«      }||j                  u rt        }n|}nt!        j"                  d„ |D «       «      }|s3|s1|r/t        |t        «      rddl
m} d|z  }|j'                  |d	||«       t)        j*                  d
||«       |r|S | j-                  |||«      S # t        $ r Y �Œ,w xY w)zZ
        :param position: Position of the last statement -> tuple of line, column
        N)Úif_stmtÚfor_stmtÚcomp_forÚsync_comp_forr   )Úflow_analysis)ÚcontextÚvalue_scopeÚnodec              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr   )Úinfer)Ú.0Únames     r   Ú	<genexpr>z5AbstractContext.py__getattribute__.<locals>.<genexpr>N   s   è ø€ Ð'GÁ¸¨¯
©
¯Áùs   ‚)Úanalysisz$NameError: name '%s' is not defined.z
name-errorz context.names_to_types: %s -> %s)r2   r+   r   Úvaluer   r   Úis_scopeÚparentÚtypeÚKeyErrorr)   r8   Úreachability_checkr   ÚUNREACHABLEr   r   Ú	from_setsrA   Úaddr   r-   Ú_check_for_additional_knowledge)r   r.   Úname_contextr/   Úanalysis_errorsr1   Ústring_nameÚfound_predefined_typesr;   Ú	name_dictÚtypesr8   ÚcheckÚvaluesrA   Úmessages                   r   Úpy__getattribute__z"AbstractContext.py__getattribute__'   s�  € ð
 ÐØˆLØ—	‘	˜+ xÓ0ˆä+5°kÄ4Ô+H�k×'Ò'Èkˆð "&ÐØ× Ò ¤Z°¼TÔ%BØˆDØÐ"¬<×+@Ñ+@ÀÔ+FØ—{‘{�Ø—9‘9Ð TÑTðØ$(×$9Ñ$9¸$Ñ$?˜	Ø )¨+Ñ 6˜ð 27Ð.Øð Ð"¬<×+@Ñ+@ÀÕ+Fð "Ð-±%Ý4Ø!×4Ñ4ØØ ŸN™NØ ð 5ó ˆEð
 ˜×1Ñ1Ñ1Ü"‘à/‘ä×'Ñ'Ñ'GÁÓ'GÓGˆFá™V©Ü˜+¤tÔ,Ý3ØAÀKÑO�Ø—‘˜\¨<¸ÀgÔNä�	‰	Ð4°e¸VÔDÙØˆMØ×3Ñ3°KÀÈxÓXÐXøô9 $ò !Ú ð!ús   ÂE5 Å5	FÆFc                 ó  — |xs | }t        |t        «      rf|j                  «       sV|}|j                  g}t	        d„ |D «       «      rt
        S ddlm} 	 t        |d¬«      } |||||«      }|�|S ||v r	 t
        S Œ(t
        S )Nc              3   ó8   K  — | ]  }|j                   d v –— Œ y­w)©r6   r7   N)rE   )r>   Úbs     r   r@   zBAbstractContext._check_for_additional_knowledge.<locals>.<genexpr>b   s   è ø€ ÐOÁJ¸q�1—6‘6Ð:Ô:ÁJùs   ‚r   )Úcheck_flow_informationT)Úinclude_flows)	r+   r   Úis_instancer   Úanyr   Újedi.inference.finderrZ   r   )r   r.   rL   r/   Ú
flow_scopeÚ
base_nodesrZ   Úns           r   rK   z/AbstractContext._check_for_additional_knowledge[   s–   € Ø#Ò+ tˆä�k¤4Ô(°×1IÑ1IÔ1KØ$ˆJØ&×0Ñ0Ð1ˆJäÑOÁJÓOÔOÜ Ð ÝDØÜ-¨jÈÔM�
Ù*¨<¸Ø+6¸óB�à�=Ø�HØ Ñ+ØÜÐð ô Ðr   c                 óB   — | j                   }|€| S |j                  «       S r   )r   Úget_root_context)r   r   s     r   rc   z AbstractContext.get_root_contexto   s'   € Ø×,Ñ,ˆØÐ!ØˆKØ×.Ñ.Ó0Ð0r   c                  ó   — y©NF© ©r   s    r   Ú	is_modulezAbstractContext.is_moduleu   ó   € Ør   c                  ó   — yre   rf   rg   s    r   Úis_builtins_modulez"AbstractContext.is_builtins_modulex   ri   r   c                  ó   — yre   rf   rg   s    r   Úis_classzAbstractContext.is_class{   ri   r   c                  ó   — yre   rf   rg   s    r   Úis_stubzAbstractContext.is_stub~   ri   r   c                  ó   — yre   rf   rg   s    r   r\   zAbstractContext.is_instance�   ri   r   c                  ó   — yre   rf   rg   s    r   Úis_compiledzAbstractContext.is_compiled„   ri   r   c                  ó   — yre   rf   rg   s    r   Úis_bound_methodzAbstractContext.is_bound_method‡   ri   r   c                 ó   — t         ‚r   r    rg   s    r   Ú
py__name__zAbstractContext.py__name__Š   r&   r   c                 ó   — t         ‚r   r    rg   s    r   Ú	get_valuezAbstractContext.get_valueŽ   s   € Ü!Ð!r   c                  ó   — y r   rf   rg   s    r   r?   zAbstractContext.name‘   s   € àr   c                  ó   — y)Nrf   rf   rg   s    r   Úget_qualified_namesz#AbstractContext.get_qualified_names•   ó   € Ør   c                  ó   — y)NÚ rf   rg   s    r   Ú	py__doc__zAbstractContext.py__doc__˜   r|   r   c              #   óN   K  — | j                   }|||<   	 d –— ||= y # ||= w xY w­wr   )r   )r   r_   ÚdctÚ
predefineds       r   Úpredefine_nameszAbstractContext.predefine_names›   s3   è ø€ à×*Ñ*ˆ
Ø!$ˆ
�:Ñð	'Ûà˜:Ñ&ø�
˜:Ñ&üs   ‚%• ™%�"¢%©NN)NNT)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r%   r2   rU   rK   rc   rh   rk   rm   ro   r\   rr   rt   rv   rx   Úpropertyr?   r{   r   r   rƒ   rf   r   r   r   r      s´   … àƒNØÓò#ð ò"ó ð"òð KOØ+/ó2Yòhò(1òòòòòòòð ñ"ó ð"ò"ð ñó ðòòð ñ'ó ñ'r   r   c                   óš   ‡ — e Zd ZdZˆ fd„Zed„ «       Zed„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚValueContextzC
    Should be defined, otherwise the API returns empty types.
    c                 óF   •— t         ‰| �  |j                  «       || _        y r   )Úsuperr   r   Ú_value)r   rB   Ú	__class__s     €r   r   zValueContext.__init__©   s   ø€ Ü‰Ñ˜×.Ñ.Ô/Øˆ�r   c                 ó.   — | j                   j                  S r   )rŽ   r   rg   s    r   r   zValueContext.tree_node­   s   € à�{‰{×$Ñ$Ð$r   c                 ó.   — | j                   j                  S r   )rŽ   r   rg   s    r   r   zValueContext.parent_context±   s   € à�{‰{×)Ñ)Ð)r   c                 ó6   — | j                   j                  «       S r   )rŽ   rh   rg   s    r   rh   zValueContext.is_moduleµ   ó   € Ø�{‰{×$Ñ$Ó&Ð&r   c                 óH   — | j                   | j                  j                  k(  S r   )rŽ   r   Úbuiltins_modulerg   s    r   rk   zValueContext.is_builtins_module¸   s   € Ø�{‰{˜d×2Ñ2×BÑBÑBÐBr   c                 ó6   — | j                   j                  «       S r   )rŽ   rm   rg   s    r   rm   zValueContext.is_class»   s   € Ø�{‰{×#Ñ#Ó%Ð%r   c                 ó6   — | j                   j                  «       S r   )rŽ   ro   rg   s    r   ro   zValueContext.is_stub¾   s   € Ø�{‰{×"Ñ"Ó$Ð$r   c                 ó6   — | j                   j                  «       S r   )rŽ   r\   rg   s    r   r\   zValueContext.is_instanceÁ   ó   € Ø�{‰{×&Ñ&Ó(Ð(r   c                 ó6   — | j                   j                  «       S r   )rŽ   rr   rg   s    r   rr   zValueContext.is_compiledÄ   r™   r   c                 ó6   — | j                   j                  «       S r   )rŽ   rt   rg   s    r   rt   zValueContext.is_bound_methodÇ   s   € Ø�{‰{×*Ñ*Ó,Ð,r   c                 ó6   — | j                   j                  «       S r   )rŽ   rv   rg   s    r   rv   zValueContext.py__name__Ê   ó   € Ø�{‰{×%Ñ%Ó'Ð'r   c                 ó.   — | j                   j                  S r   )rŽ   r?   rg   s    r   r?   zValueContext.nameÍ   s   € à�{‰{×ÑÐr   c                 ó6   — | j                   j                  «       S r   )rŽ   r{   rg   s    r   r{   z ValueContext.get_qualified_namesÑ   s   € Ø�{‰{×.Ñ.Ó0Ð0r   c                 ó6   — | j                   j                  «       S r   )rŽ   r   rg   s    r   r   zValueContext.py__doc__Ô   r“   r   c                 ó   — | j                   S r   ©rŽ   rg   s    r   rx   zValueContext.get_value×   ó   € Ø�{‰{Ðr   c                 óN   — | j                   j                  ›d| j                  ›d�S ©NÚ(Ú))r�   r…   rŽ   rg   s    r   Ú__repr__zValueContext.__repr__Ú   s   € ØŸ>™>×2Ó2°D·K³KÐ@Ð@r   )r…   r†   r‡   Ú__doc__r   r‰   r   r   rh   rk   rm   ro   r\   rr   rt   rv   r?   r{   r   rx   r¨   Ú__classcell__©r�   s   @r   r‹   r‹   ¥   s‡   ø„ ñôð ñ%ó ð%ð ñ*ó ð*ò'òCò&ò%ò)ò)ò-ò(ð ñ ó ð ò1ò'òöAr   r‹   c                   ób   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   d„ Zd„ Zd	„ Zd
„ Zy)ÚTreeContextMixinr   rh   rx   r   rm   r   c                 ó    — ddl m}  || |«      S )Nr   )Ú
infer_node)Újedi.inference.syntax_treer¯   )r   r;   r¯   s      r   r¯   zTreeContextMixin.infer_nodeæ   s   € Ý9Ù˜$ Ó%Ð%r   c                 óZ  — ddl m} || j                  k(  r"| j                  «       sJ ‚| j	                  «       S | j                  |«      }|j                  dv rœ|j                  j                  ||«      }|j                  «       rn|j                  j                  |j                  «      }|j                  | j                  |j                  |«      }|j                  ||j                  «       |¬«      }|S |j                  dk(  r|j!                  | j                  ||«      S t#        d|z  «      ‚)Nr   )rB   )ÚfuncdefÚlambdef)ÚinstanceÚclass_contextÚfunctionÚclassdefzProbably shouldn't happen: %s)r)   rB   r   rh   rx   Úcreate_contextrE   ÚFunctionValueÚfrom_contextrm   r   Úcreate_valueÚAnonymousInstancer   ÚBoundMethodÚ
as_contextÚ
ClassValuer!   )r   r;   rB   r   ÚfuncÚclass_valuer´   s          r   r»   zTreeContextMixin.create_valueê   s  € Ý(à�4—>‘>Ò!Ø—>‘>Ô#Ð#Ð#Ø—>‘>Ó#Ð#à×,Ñ,¨TÓ2ˆà�9‰9Ð.Ñ.Ø×&Ñ&×3Ñ3°NÀDÓIˆDØ×&Ñ&Ô(Ø,×;Ñ;×HÑHÈ×IaÑIaÓb�Ø ×2Ñ2Ø×(Ñ(¨.×*GÑ*GÈóV�à×(Ñ(Ø%Ø"-×"8Ñ"8Ó":Ø!ð )ó �ð
 ˆKØ�Y‰Y˜*Ò$Ø×#Ñ# D×$8Ñ$8¸.È$ÓOÐOä%Ð&EÈÑ&LÓMÐMr   c                 óH  ‡ ‡‡‡— dˆˆˆˆ fd„	Šd„ Š ‰‰«      }|j                   dv rs|j                  |j                  j                  d«         }‰j                  |j                  k  r2‰j                  }|j                   dk(  r|j
                  ‰k(  s ‰|«      } ‰|d¬«      S )	NTc                 óP  •— | ‰j                   k(  r‰S | j                  dv r‰j                  | «      j                  «       S | j                  dv rL ‰ ‰| j                  «      «      }‰j
                  | j                  d   j
                  k\  r|S t        || «      S t        d| z  «      ‚)N)r²   r³   r·   rX   éÿÿÿÿz(There's a scope that was not managed: %s)	r   rE   r»   r¾   rD   Ú	start_posÚchildrenÚCompForContextÚ	Exception)Ú
scope_nodeÚ	is_nestedr   Úfrom_scope_noder;   Úparent_scoper   s      €€€€r   rË   z8TreeContextMixin.create_context.<locals>.from_scope_node  sž   ø€ Ø˜TŸ^™^Ò+Ø�à�‰Ð"DÑDØ×(Ñ(¨Ó4×?Ñ?ÓAÐAØ—‘Ð$AÑAÙ!0±¸j×>OÑ>OÓ1PÓ!Q�Ø—>‘> Z×%8Ñ%8¸Ñ%<×%FÑ%FÒFØ)Ð)Ü% n°jÓAÐAÜÐFÈÑSÓTÐTr   c                 ó&  — 	 | j                   } t        j                  | «      r| S | j                  dv r*| j                  d   j                  dv rD| j                  d   S | j                  dk(  r&| j                  dd D ]  }|j                  dv sŒ|c S  Œ‘)N)ÚargumentÚtestlist_compé   rX   Údictorsetmakeré   )rD   r   rC   rE   rÆ   )r;   ra   s     r   rÌ   z5TreeContextMixin.create_context.<locals>.parent_scope  sŽ   € ØØ—{‘{�ä×(Ñ(¨Ô.Ø�KØ—Y‘YÐ"?Ñ?Ø—}‘} QÑ'×,Ñ,Ð0MÑMØ#Ÿ}™}¨QÑ/Ð/Ø—Y‘YÐ"2Ò2Ø!Ÿ]™]¨1¨QÓ/˜àŸ6™6Ð%BÒBØ#$šHð 0ð r   )r²   r·   Ú:Úparam)rÊ   )T)rE   rÆ   ÚindexrÅ   rD   r?   )r   r;   rÉ   ÚcolonrD   rË   rÌ   s   ``   @@r   r¸   zTreeContextMixin.create_context  s•   û€ ÷	Uð 	Uò	%ñ " $Ó'ˆ
Ø�?‰?Ð5Ñ5Ø×'Ñ'¨
×(;Ñ(;×(AÑ(AÀ#Ó(FÑGˆEØ�~‰~ §¡Ò/ØŸ™�ØŸ™ wÒ.°6·;±;À$Ò3FÙ!-¨jÓ!9�JÙ˜z°TÔ:Ð:r   c                 óú   — |j                  «       }|rM|j                  dk(  r>|j                  |k(  r/|j                  dd«      }| j	                  |«      }t        ||«      S | j                  |«      }t        ||«      S )NrÔ   r²   r³   )Úget_definitionrE   r?   Úsearch_ancestorr»   r   r¸   r   )r   Ú	tree_nameÚ
definitionr²   rÀ   r9   s         r   Úcreate_namezTreeContextMixin.create_name*  su   € Ø×-Ñ-Ó/ˆ
Ù˜*Ÿ/™/¨WÒ4¸¿¹ÈIÒ9UØ ×0Ñ0°¸IÓFˆGØ×$Ñ$ WÓ-ˆDÜ% d¨IÓ6Ð6à×)Ñ)¨)Ó4ˆGÜ% g¨yÓ9Ð9r   N)	r…   r†   r‡   r   rˆ   r¯   r»   r¸   rÜ   rf   r   r   r­   r­   Þ   s8   … ØƒNØƒNØƒNØÓØƒMØÓò&òNò4$;óL:r   r­   c                   ó   — e Zd Zdd„Zy)ÚFunctionContextNc              #   ó,   K  — t        | ||¬«      –— y ­w©N)r   r#   r$   ©r	   r"   s      r   r%   zFunctionContext.get_filters6  s   è ø€ ÜØØ)Ø%ô
ó 	
ùs   ‚r„   ©r…   r†   r‡   r%   rf   r   r   rÞ   rÞ   5  s   „ ô
r   rÞ   c                   óR   — e Zd Zdee   fd„Zd	d„Zd„ Zed„ «       Z	ed„ «       Z
d„ Zy)
ÚModuleContextÚreturnc                 ó6   — | j                   j                  «       S r   ©rŽ   Ú
py__file__rg   s    r   rè   zModuleContext.py__file__?  r�   r   Nc              #   óÂ   K  — | j                   j                  |«      }t        |d «       t        t	        | ||¬«      | j                  «       «      –— |E d {  –—†  y 7 Œ­wrà   )rŽ   r%   Únextr
   r	   Úget_global_filter)r   r#   r$   r0   s       r   r%   zModuleContext.get_filtersB  s[   è ø€ Ø—+‘+×)Ñ)¨,Ó7ˆäˆW�dÔÜÜØ#Ø-Ø)ôð
 ×"Ñ"Ó$ó
ò 	
ð ×Òús   ‚AAÁAÁAc                 ó   — t        | «      S r   )r   rg   s    r   rë   zModuleContext.get_global_filterP  s   € Ü Ó%Ð%r   c                 ó.   — | j                   j                  S r   ©rŽ   Ústring_namesrg   s    r   rï   zModuleContext.string_namesS  ó   € à�{‰{×'Ñ'Ð'r   c                 ó.   — | j                   j                  S r   )rŽ   Ú
code_linesrg   s    r   rò   zModuleContext.code_linesW  s   € à�{‰{×%Ñ%Ð%r   c                 ó   — | j                   S )zß
        This is the only function that converts a context back to a value.
        This is necessary for stub -> python conversion and vice versa. However
        this method shouldn't be moved to AbstractContext.
        r¢   rg   s    r   rx   zModuleContext.get_value[  s   € ð �{‰{Ðr   r„   )r…   r†   r‡   r   r   rè   r%   rë   r‰   rï   rò   rx   rf   r   r   rä   rä   >  sI   „ ð(˜H T™Nó (óò&ð ñ(ó ð(ð ñ&ó ð&ór   rä   c                   ó<   — e Zd Zdd„Zd„ Zed„ «       Zdee   fd„Z	y)ÚNamespaceContextNc                 ó6   — | j                   j                  «       S r   ©rŽ   r%   r"   s      r   r%   zNamespaceContext.get_filterse  r™   r   c                 ó   — | j                   S r   r¢   rg   s    r   rx   zNamespaceContext.get_valueh  r£   r   c                 ó.   — | j                   j                  S r   rî   rg   s    r   rï   zNamespaceContext.string_namesk  rð   r   rå   c                 ó6   — | j                   j                  «       S r   rç   rg   s    r   rè   zNamespaceContext.py__file__o  r�   r   r„   )
r…   r†   r‡   r%   rx   r‰   rï   r   r   rè   rf   r   r   rõ   rõ   d  s0   „ ó)òð ñ(ó ð(ð(˜H T™Nô (r   rõ   c                   ó   — e Zd Zdd„Zdd„Zy)ÚClassContextNc              #   ó4   K  — | j                  ||«      –— y ­wr   )rë   r"   s      r   r%   zClassContext.get_filterst  s   è ø€ Ø×$Ñ$ ^°\ÓBÓBùs   ‚c                 ó   — t        | ||¬«      S rà   rá   r"   s      r   rë   zClassContext.get_global_filterw  s   € ÜØØ)Ø%ô
ð 	
r   r„   )r…   r†   r‡   r%   rë   rf   r   r   rü   rü   s  s   „ óCô
r   rü   c                   ó8   ‡ — e Zd Zˆ fd„Zdd„Zd„ Zd„ Zd„ Zˆ xZS )rÇ   c                 óT   •— t         ‰| �  |j                  «       || _        || _        y r   )r�   r   r   r   r   )r   r   r6   r�   s      €r   r   zCompForContext.__init__€  s%   ø€ Ü‰Ñ˜×7Ñ7Ô8Ø!ˆŒØ,ˆÕr   c              #   ó&   K  — t        | «      –— y ­wr   rá   r"   s      r   r%   zCompForContext.get_filters…  s   è ø€ Ü˜tÓ$Ó$ùs   ‚c                  ó   — y r   rf   rg   s    r   rx   zCompForContext.get_valueˆ  s   € Ør   c                  ó   — y)Nz<comprehension context>rf   rg   s    r   rv   zCompForContext.py__name__‹  s   € Ø(r   c                 óN   — | j                   j                  ›d| j                  ›d�S r¥   )r�   r…   r   rg   s    r   r¨   zCompForContext.__repr__Ž  s   € ØŸ>™>×2Ó2°D·N³NÐCÐCr   r„   )	r…   r†   r‡   r   r%   rx   rv   r¨   rª   r«   s   @r   rÇ   rÇ     s   ø„ ô-ó
%òò)öDr   rÇ   c                   ó   — e Zd Zdd„Zy)ÚCompiledContextNc                 ó6   — | j                   j                  «       S r   r÷   r"   s      r   r%   zCompiledContext.get_filters“  r™   r   r„   râ   rf   r   r   r  r  ’  s   „ ô)r   r  c                   ó8   — e Zd ZdZd„ Zed„ «       Zdee   fd„Z	y)ÚCompiledModuleContextNc                 ó   — | j                   S r   r¢   rg   s    r   rx   zCompiledModuleContext.get_valueš  r£   r   c                 ó.   — | j                   j                  S r   rî   rg   s    r   rï   z"CompiledModuleContext.string_names�  rð   r   rå   c                 ó6   — | j                   j                  «       S r   rç   rg   s    r   rè   z CompiledModuleContext.py__file__¡  r�   r   )
r…   r†   r‡   rò   rx   r‰   rï   r   r   rè   rf   r   r   r	  r	  —  s0   „ Ø€Jòð ñ(ó ð(ð(˜H T™Nô (r   r	  c                 ó  — |�z|j                  ddd«      }d }|dk(  r|}|j                  dd«      }|�J|j                  d   }|�9||j                  k  r*|�||j                  d   j                  k  r|j                  }t        | ||«      S )Nr²   r·   r³   éþÿÿÿ)rÙ   rÆ   rÅ   Úget_global_filters)r9   Úname_or_noner/   Úancestorr³   rÖ   s         r   r*   r*   ¥  s¢   € ð ÐØ×/Ñ/°	¸:ÀyÓQˆØˆØ�yÒ ð ˆGØ#×3Ñ3°I¸zÓJˆHØÐØ×%Ñ% bÑ)ˆEØÐ#¨°5·?±?Ò(BØ�? h°×1AÑ1AÀ"Ñ1E×1OÑ1OÒ&OØ'×1Ñ1�Hä˜g x°Ó>Ð>r   c              #   ó  K  — | }ddl m} | �>| j                  ||¬«      E d{  –—†  t        | |t        f«      rd}| j
                  } | �Œ>t        |j                  j                  j                  «       d«      }|€J ‚|–— y7 Œ^­w)a»  
    Returns all filters in order of priority for name resolution.

    For global name lookups. The filters will handle name resolution
    themselves, but here we gather possible filters downwards.

    >>> from jedi import Script
    >>> script = Script('''
    ... x = ['a', 'b', 'c']
    ... def func():
    ...     y = None
    ... ''')
    >>> module_node = script._module_node
    >>> scope = next(module_node.iter_funcdefs())
    >>> scope
    <Function: func@3-5>
    >>> context = script._get_module_context().create_context(scope)
    >>> filters = list(get_global_filters(context, (4, 0), None))

    First we get the names from the function scope.

    >>> print(filters[0])  # doctest: +ELLIPSIS
    MergedFilter(<ParserTreeFilter: ...>, <GlobalNameFilter: ...>)
    >>> sorted(str(n) for n in filters[0].values())  # doctest: +NORMALIZE_WHITESPACE
    ['<TreeNameDefinition: string_name=func start_pos=(3, 4)>',
     '<TreeNameDefinition: string_name=x start_pos=(2, 0)>']
    >>> filters[0]._filters[0]._until_position
    (4, 0)
    >>> filters[0]._filters[1]._until_position

    Then it yields the names from one level "lower". In this example, this is
    the module scope (including globals).
    As a side note, you can see, that the position in the filter is None on the
    globals filter, because there the whole module is searched.

    >>> list(filters[1].values())  # package modules -> Also empty.
    []
    >>> sorted(name.string_name for name in filters[2].values())  # Module attributes
    ['__doc__', '__name__', '__package__']

    Finally, it yields the builtin filter, if `include_builtin` is
    true (default).

    >>> list(filters[3].values())  # doctest: +ELLIPSIS
    [...]
    r   )ÚBaseFunctionExecutionContextN)r#   r$   )	Újedi.inference.value.functionr  r%   r+   rä   r   rê   r   r•   )r9   r#   r$   Úbase_contextr  rY   s         r   r  r  º  s›   è ø€ ð^ €LÝJØ
Ð
à×&Ñ&Ø)Ø%ð 'ó 
÷ 	
ð 	
ô �gÐ <¼mÐLÔMà!ˆNà×(Ñ(ˆð Ñ
ô 	ˆ\×)Ñ)×9Ñ9×EÑEÓGÈÓN€AØˆ=Ðˆ=à
ƒGð	
ús   ‚!B£B¤&BÁ8BN)&Úabcr   Ú
contextlibr   Úpathlibr   Útypingr   r   Úparso.python.treer   Újedi.inference.filtersr	   r
   r   Újedi.inference.namesr   r   Újedi.inference.base_valuer   r   Újedi.parser_utilsr   Újedir   r   r   r‹   r­   rÞ   rä   rõ   rü   rÇ   r  r	  r*   r  rf   r   r   Ú<module>r      sÇ   ðÝ Ý %Ý ß  å "÷ñ ç Gß 9Ý .Ý Ý ÷Q'ñ Q'ôh6A�?ô 6A÷rT:ñ T:ôn
Ð&¨ô 
ô#Ð$ lô #ôL(Ð'¨ô (ô	
Ð# \ô 	
ôDÐ% ô Dô&)�lô )ô
(˜Oô (ò?ó*@r   