§
    ŒŸ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%d"S )#é    )Ú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dS )ÚAbstractContextÚ	tree_nodeÚparent_contextc                 ó"   — || _         i | _        d S ©N)Úinference_stateÚpredefined_names)Úselfr   s     úc/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/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 |¦  «        }|                     ||¦  «        }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   sp   € Ø)Ð)Ð)Ð)Ð)Ð)Ý.Ø¥¨K½Ñ!>Ô!>ÐH�+�+ÀDÈ(ñ
ô 
ˆð ×"Ò" 7¨KÑ8Ô8ˆÝŒ	Ð/°¸dÀEÑJÔJÐJØˆr   Tc                 ó  — |€| }|                       ||¦  «        }t          |t          ¦  «        r|j        n|}d}| j        r|t          |t          ¦  «        rg|}|�ct          j        |¦  «        sO|j        }|j        dv r)	 | j        |         }	|	|         }
|
}n&# t          $ r Y ŒKw xY w|�t          j        |¦  «        ¯O|�9|r7ddl
m} |                     | | j        |¬¦  «        }||j        u rt          }n!|}nt!          j        d„ |D ¦   «         ¦  «        }|s<|s:|r8t          |t          ¦  «        r#ddl
m} d|z  }|                     |d	||¦  «         t)          j        d
||¦  «         |r|S |                      |||¦  «        S )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  — | ]}|                      ¦   «         V — Œd S r   )Úinfer)Ú.0Únames     r   ú	<genexpr>z5AbstractContext.py__getattribute__.<locals>.<genexpr>N   s*   è è € Ð'GÐ'G¸¨¯
ª
©¬Ð'GÐ'GÐ'GÐ'GÐ'GÐ'Gr   )Ú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Ô0ˆå+5°kÅ4Ñ+HÔ+HÐY�kÔ'Ð'Èkˆð "&ÐØÔ ð 	¥Z°½TÑ%BÔ%Bð 	ØˆDØÐ"­<Ô+@ÀÑ+FÔ+FÐ"Ø”{�Ø”9Ð TÐTÐTðØ$(Ô$9¸$Ô$?˜	Ø )¨+Ô 6˜ð 27Ð.Øøõ	 $ð !ð !ð !Ø ˜ð!øøøð Ð"­<Ô+@ÀÑ+FÔ+FÐ"ð "Ð-°%Ð-Ø4Ð4Ð4Ð4Ð4Ð4Ø!×4Ò4ØØ œNØ ð 5ñ ô ˆEð
 ˜Ô1Ð1Ð1Ý"��à/��åÔ'Ð'GÐ'GÀÐ'GÑ'GÔ'GÑGÔGˆFàð 	O˜Vð 	O¨ð 	OÝ˜+¥tÑ,Ô,ð OØ3Ð3Ð3Ð3Ð3Ð3ØAÀKÑO�Ø—’˜\¨<¸ÀgÑNÔNÐNåŒ	Ð4°e¸VÑDÔDÐDØð 	ØˆMØ×3Ò3°KÀÈxÑXÔXÐXs   Â B Â
B%Â$B%c                 ó  — |p| }t          |t          ¦  «        rn|                     ¦   «         sZ|}|j        g}t	          d„ |D ¦   «         ¦  «        rt
          S ddlm} 	 t          |d¬¦  «        } |||||¦  «        }|�|S ||v rnŒ)t
          S )Nc              3   ó(   K  — | ]}|j         d v V — ŒdS )©r6   r7   N)rE   )r>   Úbs     r   r@   zBAbstractContext._check_for_additional_knowledge.<locals>.<genexpr>b   s*   è è € ÐOÐO¸q�1”6Ð:Ð:ÐOÐOÐOÐOÐOÐOr   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Ô1Kð 	Ø$ˆJØ&Ô0Ð1ˆJåÐOÐOÀJÐOÑOÔOÑOÔOð !Ý Ð ØDÐDÐDÐDÐDÐDðÝ-¨jÈÐMÑMÔM�
Ø*Ð*¨<¸Ø+6¸ñBô B�à�=Ø�HØ Ð+Ð+Øðõ Ðr   c                 ó@   — | j         }|€| S |                     ¦   «         S r   )r   Úget_root_context)r   r   s     r   rc   z AbstractContext.get_root_contexto   s'   € ØÔ,ˆØÐ!ØˆKØ×.Ò.Ñ0Ô0Ð0r   c                 ó   — dS ©NF© ©r   s    r   Ú	is_modulezAbstractContext.is_moduleu   ó   € Øˆur   c                 ó   — dS re   rf   rg   s    r   Úis_builtins_modulez"AbstractContext.is_builtins_modulex   ri   r   c                 ó   — dS re   rf   rg   s    r   Úis_classzAbstractContext.is_class{   ri   r   c                 ó   — dS re   rf   rg   s    r   Úis_stubzAbstractContext.is_stub~   ri   r   c                 ó   — dS re   rf   rg   s    r   r\   zAbstractContext.is_instance�   ri   r   c                 ó   — dS re   rf   rg   s    r   Úis_compiledzAbstractContext.is_compiled„   ri   r   c                 ó   — dS 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                 ó   — d S r   rf   rg   s    r   r?   zAbstractContext.name‘   s   € àˆtr   c                 ó   — dS )Nrf   rf   rg   s    r   Úget_qualified_namesz#AbstractContext.get_qualified_names•   ó   € Øˆrr   c                 ó   — dS )NÚ rf   rg   s    r   Ú	py__doc__zAbstractContext.py__doc__˜   r|   r   c              #   óB   K  — | j         }|||<   	 d V — ||= d S # ||= w xY wr   )r   )r   r_   ÚdctÚ
predefineds       r   Úpredefine_nameszAbstractContext.predefine_names›   sH   è è € àÔ*ˆ
Ø!$ˆ
�:Ñð	'ØˆEˆEˆEà˜:Ð&Ð&Ð&ø�
˜:Ð&Ð&Ð&Ð&Ð&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€N�NØÐÐÑð#ð #ð #ð ð"ð "ð "ñ „^ð"ðð ð ð KOØ+/ð2Yð 2Yð 2Yð 2Yðhð ð ð(1ð 1ð 1ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð ð"ð "ñ „^ð"ð"ð "ð "ð ðð ñ „Xððð ð ðð ð ð ð'ð 'ñ „^ð'ð 'ð '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                 ób   •— t          ¦   «                              |j        ¦  «         || _        d S 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                 ó4   — | j                              ¦   «         S r   )rŽ   rh   rg   s    r   rh   zValueContext.is_moduleµ   ó   € ØŒ{×$Ò$Ñ&Ô&Ð&r   c                 ó,   — | j         | j        j        k    S r   )rŽ   r   Úbuiltins_modulerg   s    r   rk   zValueContext.is_builtins_module¸   s   € ØŒ{˜dÔ2ÔBÒBÐBr   c                 ó4   — | j                              ¦   «         S r   )rŽ   rm   rg   s    r   rm   zValueContext.is_class»   s   € ØŒ{×#Ò#Ñ%Ô%Ð%r   c                 ó4   — | j                              ¦   «         S r   )rŽ   ro   rg   s    r   ro   zValueContext.is_stub¾   s   € ØŒ{×"Ò"Ñ$Ô$Ð$r   c                 ó4   — | j                              ¦   «         S r   )rŽ   r\   rg   s    r   r\   zValueContext.is_instanceÁ   ó   € ØŒ{×&Ò&Ñ(Ô(Ð(r   c                 ó4   — | j                              ¦   «         S r   )rŽ   rr   rg   s    r   rr   zValueContext.is_compiledÄ   r™   r   c                 ó4   — | j                              ¦   «         S r   )rŽ   rt   rg   s    r   rt   zValueContext.is_bound_methodÇ   s   € ØŒ{×*Ò*Ñ,Ô,Ð,r   c                 ó4   — | 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                 ó4   — | j                              ¦   «         S r   )rŽ   r{   rg   s    r   r{   z ValueContext.get_qualified_namesÑ   s   € ØŒ{×.Ò.Ñ0Ô0Ð0r   c                 ó4   — | 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                 ó0   — | j         j        ›d| j        ›d�S ©Nú(ú))r�   r…   rŽ   rg   s    r   Ú__repr__zValueContext.__repr__Ú   s   € Øœ>Ô2Ð2Ð2°D´K°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‹   ¥   sQ  ø€ € € € € ðð ðð ð ð ð ð ð%ð %ñ „Xð%ð ð*ð *ñ „Xð*ð'ð 'ð 'ðCð Cð Cð&ð &ð &ð%ð %ð %ð)ð )ð )ð)ð )ð )ð-ð -ð -ð(ð (ð (ð ð ð  ñ „Xð ð1ð 1ð 1ð'ð 'ð 'ðð ð ðAð Að Að Að Að Að Ar   r‹   c                   ód   — 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dS )Ú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Ð9Ð9Ð9Ð9Ð9Øˆz˜$ Ñ%Ô%Ð%r   c                 ó\  — ddl m} || j        k    r*|                      ¦   «         sJ ‚|                      ¦   «         S |                      |¦  «        }|j        dv r›|j                             ||¦  «        }| 	                    ¦   «         rj|j
                             |j        ¦  «        }|                     | j        |j
        |¦  «        }|                     ||                     ¦   «         |¬¦  «        }|S |j        dk    r|                     | 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ê   sC  € Ø(Ð(Ð(Ð(Ð(Ð(à�4”>Ò!Ð!Ø—>’>Ñ#Ô#Ð#Ð#Ð#Ø—>’>Ñ#Ô#Ð#à×,Ò,¨TÑ2Ô2ˆàŒ9Ð.Ð.Ð.ØÔ&×3Ò3°NÀDÑIÔIˆDØ×&Ò&Ñ(Ô(ð Ø,Ô;×HÒHÈÔIaÑbÔb�Ø ×2Ò2ØÔ(¨.Ô*GÈñVô V�à×(Ò(Ø%Ø"-×"8Ò"8Ñ":Ô":Ø!ð )ñ ô �ð
 ˆKØŒY˜*Ò$Ð$Ø×#Ò# DÔ$8¸.È$ÑOÔOÐOå%Ð&EÈÑ&LÑMÔMÐMr   c                 ó  ‡ ‡‡‡— dˆˆˆˆ fd„	Šd„ Š ‰‰¦  «        }|j         dv r]|j        |j                             d¦  «                 }‰j        |j        k     r(‰j        }|j         dk    r|j        ‰k    s ‰|¦  «        } ‰|d¬¦  «        S )	NTc                 ó@  •— | ‰j         k    r‰S | j        dv r'‰                     | ¦  «                             ¦   «         S | j        dv rF ‰ ‰| 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ÐDØ×(Ò(¨Ñ4Ô4×?Ò?ÑAÔAÐAØ”Ð$AÐAÐAØ!0 °°¸jÔ>OÑ1PÔ1PÑ!QÔ!Q�Ø”> ZÔ%8¸Ô%<Ô%FÒFÐFØ)Ð)Ý% n°jÑAÔAÐAÝÐFÈÑSÑTÔTÐTr   c                 óê   — 	 | j         } t          j        | ¦  «        r| S | j        dv r"| j        d         j        dv r| j        d         S n*| j        dk    r| j        dd…         D ]}|j        dv r|c S ŒŒs)NT)ÚargumentÚtestlist_compé   rX   Údictorsetmakeré   )rD   r   rC   rE   rÆ   )r;   ra   s     r   rÌ   z5TreeContextMixin.create_context.<locals>.parent_scope  s§   € ð%Ø”{�åÔ(¨Ñ.Ô.ð 	%Ø�KØ”YÐ"?Ð?Ð?Ø”} QÔ'Ô,Ð0MÐMÐMØ#œ}¨QÔ/Ð/ð Nà”YÐ"2Ò2Ð2Ø!œ]¨1¨Q¨3Ô/ð %ð %˜àœ6Ð%BÐBÐBØ#$˜H˜H˜Hð Cð%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ð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð	%ð 	%ð 	%ð "�\ $Ñ'Ô'ˆ
ØŒ?Ð5Ð5Ð5ØÔ'¨
Ô(;×(AÒ(AÀ#Ñ(FÔ(FÔGˆEØŒ~ ¤Ò/Ð/Øœ�Øœ wÒ.Ð.°6´;À$Ò3FÐ3FØ!- ¨jÑ!9Ô!9�JØˆ˜z°TÐ:Ñ:Ô:Ð:r   c                 ó  — |                      ¦   «         }|rQ|j        dk    rF|j        |k    r;|                     dd¦  «        }|                      |¦  «        }t          ||¦  «        S |                      |¦  «        }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*  sŽ   € Ø×-Ò-Ñ/Ô/ˆ
Øð 	:˜*œ/¨WÒ4Ð4¸¼ÈIÒ9UÐ9UØ ×0Ò0°¸IÑFÔFˆGØ×$Ò$ WÑ-Ô-ˆDÝ% d¨IÑ6Ô6Ð6à×)Ò)¨)Ñ4Ô4ˆGÝ% g¨yÑ9Ô9Ð9r   N)	r…   r†   r‡   r   rˆ   r¯   r»   r¸   rÜ   rf   r   r   r­   r­   Þ   s’   € € € € € € Ø€N€N�NØ€N€N�NØ€N€N�NØÐÐÑØ€M€M�MØÐÐÑð&ð &ð &ðNð Nð Nð4$;ð $;ð $;ðL:ð :ð :ð :ð :r   r­   c                   ó   — e Zd Zdd„ZdS )ÚFunctionContextNc              #   ó2   K  — t          | ||¬¦  «        V — d S ©N)r   r#   r$   ©r	   r"   s      r   r%   zFunctionContext.get_filters6  s:   è è € ÝØØ)Ø%ð
ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
r   r„   ©r…   r†   r‡   r%   rf   r   r   rÞ   rÞ   5  s(   € € € € € ð
ð 
ð 
ð 
ð 
ð 
r   rÞ   c                   óf   — e Zd Zdee         fd„Zd	d„Zd„ Zed„ ¦   «         Z	ed„ ¦   «         Z
d„ ZdS )
ÚModuleContextÚreturnc                 ó4   — | j                              ¦   «         S r   ©rŽ   Ú
py__file__rg   s    r   rè   zModuleContext.py__file__?  r�   r   Nc              #   óÖ   K  — | j                              |¦  «        }t          |d ¦  «         t          t	          | ||¬¦  «        |                      ¦   «         ¦  «        V — |E d {V —† d S rà   )rŽ   r%   Únextr
   r	   Úget_global_filter)r   r#   r$   r0   s       r   r%   zModuleContext.get_filtersB  s“   è è € Ø”+×)Ò)¨,Ñ7Ô7ˆåˆW�dÑÔÐÝÝØ#Ø-Ø)ðñ ô ð
 ×"Ò"Ñ$Ô$ñ
ô 
ð 	
ð 	
ð 	
ð ÐÐÐÐÐÐÐÐÐr   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ä   >  s›   € € € € € ð(˜H TœNð (ð (ð (ð (ðð ð ð ð&ð &ð &ð ð(ð (ñ „Xð(ð ð&ð &ñ „Xð&ðð ð ð ð r   rä   c                   óJ   — e Zd Zdd„Zd„ Zed„ ¦   «         Zdee         fd„Z	dS )ÚNamespaceContextNc                 ó4   — | 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                 ó4   — | 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  sq   € € € € € ð)ð )ð )ð )ðð ð ð ð(ð (ñ „Xð(ð(˜H TœNð (ð (ð (ð (ð (ð (r   rõ   c                   ó   — e Zd Zdd„Zdd„ZdS )ÚClassContextNc              #   ó:   K  — |                       ||¦  «        V — d S r   )rë   r"   s      r   r%   zClassContext.get_filterst  s(   è è € Ø×$Ò$ ^°\ÑBÔBÐBÐBÐBÐBÐBr   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ð Cð Cð 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                 óp   •— t          ¦   «                              |j        ¦  «         || _        || _        d S r   )r�   r   r   r   r   )r   r   r6   r�   s      €r   r   zCompForContext.__init__€  s3   ø€ Ý‰Œ×Ò˜Ô7Ñ8Ô8Ð8Ø!ˆŒØ,ˆÔÐÐr   Nc              #   ó,   K  — t          | ¦  «        V — d S r   rá   r"   s      r   r%   zCompForContext.get_filters…  s    è è € Ý˜tÑ$Ô$Ð$Ð$Ð$Ð$Ð$r   c                 ó   — d S r   rf   rg   s    r   rx   zCompForContext.get_valueˆ  s   € Øˆtr   c                 ó   — dS )Nz<comprehension context>rf   rg   s    r   rv   zCompForContext.py__name__‹  s   € Ø(Ð(r   c                 ó0   — | j         j        ›d| j        ›d�S r¥   )r�   r…   r   rg   s    r   r¨   zCompForContext.__repr__Ž  s   € Øœ>Ô2Ð2Ð2°D´N°N°NÐCÐCr   r„   )	r…   r†   r‡   r   r%   rx   rv   r¨   rª   r«   s   @r   rÇ   rÇ     s€   ø€ € € € € ð-ð -ð -ð -ð -ð
%ð %ð %ð %ðð ð ð)ð )ð )ðDð Dð Dð Dð Dð Dð Dr   rÇ   c                   ó   — e Zd Zdd„ZdS )ÚCompiledContextNc                 ó4   — | 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                   óF   — e Zd ZdZd„ Zed„ ¦   «         Zdee         fd„Z	dS )Ú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                 ó4   — | 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	  —  sb   € € € € € Ø€Jðð ð ð ð(ð (ñ „Xð(ð(˜H TœNð (ð (ð (ð (ð (ð (r   r	  c                 ó  — |�r|                      ddd¦  «        }d }|dk    r|}|                      dd¦  «        }|�9|j        d         }|�*||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ÔQˆØˆØ�yÒ Ð ð ˆGØ#×3Ò3°I¸zÑJÔJˆHØÐØÔ% bÔ)ˆEØÐ#¨°5´?Ò(BÐ(BØ�? h°Ô1AÀ"Ô1EÔ1OÒ&OÐ&OØ'Ô1�Hå˜g x°Ñ>Ô>Ð>r   c              #   ó  K  — | }ddl m} | �?|                      ||¬¦  «        E d{V —† t          | |t          f¦  «        rd}| j        } | ­?t          |j        j                             ¦   «         d¦  «        }|€J ‚|V — dS )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ÐJÐJÐJÐJÐJØ
Ð
à×&Ò&Ø)Ø%ð 'ñ 
ô 
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ �gÐ <½mÐLÑMÔMð 	"à!ˆNàÔ(ˆð Ð
õ 	ˆ\Ô)Ô9×EÒEÑGÔGÈÑNÔN€AØˆ=ˆ=ˆ=à
€G€G€G€G€Gr   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Ð GÐ GÐ GÐ GÐ GÐ GÐ GØ 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðQ'ð Q'ð Q'ð Q'ð Q'ñ Q'ô Q'ð Q'ðh6Að 6Að 6Að 6Að 6A�?ñ 6Aô 6Að 6AðrT:ð T:ð T:ð T:ð T:ñ T:ô T:ð T:ðn
ð 
ð 
ð 
ð 
Ð&¨ñ 
ô 
ð 
ð#ð #ð #ð #ð #Ð$ lñ #ô #ð #ðL(ð (ð (ð (ð (Ð'¨ñ (ô (ð (ð	
ð 	
ð 	
ð 	
ð 	
Ð# \ñ 	
ô 	
ð 	
ðDð Dð Dð Dð DÐ% ñ Dô Dð Dð&)ð )ð )ð )ð )�lñ )ô )ð )ð
(ð (ð (ð (ð (˜Oñ (ô (ð (ð?ð ?ð ?ð*@ð @ð @ð @ð @r   