ó
    Ð]jmC  ã                   óŠ  • 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JrJr  S SKJr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5      r " S S\5      r " S S5      r " S S\\5      r " S S\\5      r " S S\\5      r " S S\\5      r  " S S\\5      r! " S S\5      r" " S S\"5      r#S  r$S! r%g")#é    )Úabstractmethod)Úcontextmanager)ÚPath)ÚOptionalÚAny)ÚName)ÚParserTreeFilterÚMergedFilterÚGlobalNameFilter)ÚAnonymousParamNameÚTreeNameDefinition)Ú	NO_VALUESÚValueSet)Úget_parent_scope)Údebug)Úparser_utilsc                   óÐ   • \ rS rSr% \\S'   \\S'   S r\SS j5       rS r	  SS jr
S	 rS
 rS rS rS rS rS rS rS r\S 5       rS r\S 5       rS rS r\S 5       rSrg)ÚAbstractContexté   Ú	tree_nodeÚparent_contextc                 ó   • Xl         0 U l        g ©N©Úinference_stateÚpredefined_names)Úselfr   s     ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/jedi/inference/context.pyÚ__init__ÚAbstractContext.__init__   s   € Ø.ÔØ "ˆÕó    Nc                 ó   • [         er   ©ÚNotImplementedError©r   Úuntil_positionÚorigin_scopes      r   Úget_filtersÚAbstractContext.get_filters   ó   € ä!Ð!r!   c                 ó¬   • SSK Jn  [        U [        U[        5      (       a  UOS U5      nUR                  XA5      n[        R                  " SXU5        U$ )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   ÚgotoÚAbstractContext.goto   sL   € Ý)Ü.Ø¤¨K¼×!>Ñ!>‘+ÀDÈ(ó
ˆð ×"Ñ" 7Ó8ˆÜ�	Š	Ð/°ÀEÔJØˆr!   c                 ó‚  • Uc  U nU R                  X5      n[        U[        5      (       a  UR                  OUnSnU R                  (       aˆ  [        U[        5      (       as  UnUbn  [
        R                  " U5      (       dS  UR                  nUR                  S;   a   U R                  U   n	X–   n
U
nO Ub  [
        R                  " U5      (       d  MS  Ub@  U(       a9  SSK
Jn  UR                  U U R                  US9nXËR                  L a  [        nO UnO[         R"                  " S U 5       5      nU(       dA  U(       d:  U(       a3  [        U[        5      (       a  SSK
Jn  SU-  nUR'                  US	X5        [(        R*                  " S
X]5        U(       a  U$ U R-                  XU5      $ ! [         a     GMY  f = f)zJ
: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   ó@   #   • U  H  oR                  5       v •  M     g 7fr   )Úinfer)Ú.0Únames     r   Ú	<genexpr>Ú5AbstractContext.py__getattribute__.<locals>.<genexpr>N   s   é € Ð'GÂ¸¯
©
¯¨Âùs   ‚)Úanalysisz$NameError: name '%s' is not defined.z
name-errorz context.names_to_types: %s -> %s)r6   r/   r   Úvaluer   r   Úis_scopeÚparentÚtypeÚKeyErrorr-   r=   Úreachability_checkr   ÚUNREACHABLEr   r   Ú	from_setsrG   Úaddr   r1   Ú_check_for_additional_knowledge)r   r2   Úname_contextr3   Úanalysis_errorsr5   Ústring_nameÚfound_predefined_typesr@   Ú	name_dictÚtypesr=   ÚcheckÚvaluesrG   Úmessages                   r   Úpy__getattribute__Ú"AbstractContext.py__getattribute__'   s�  € ð
 ÑØˆLØ—	‘	˜+Ó0ˆä+5°kÄ4×+HÑ+H�k×'Ò'Èkˆð "&ÐØ× × ¤Z°¼T×%BÑ%BØˆDØÑ"¬<×+@Ò+@À×+FÑ+FØ—{‘{�Ø—9‘9Ð TÓTðØ$(×$9Ñ$9¸$Ñ$?˜	Ø )Ñ 6˜ð 27Ð.Øð Ñ"¬<×+@Ò+@À×+FÓ+Fð "Ñ-¶%Ý4Ø!×4Ñ4ØØ ŸN™NØ ð 5ð ˆEð
 ×1Ñ1Ò1Ü"‘à/‘ä×'Ò'Ñ'GÁÓ'GÓGˆFæžV®Ü˜+¤t×,Ñ,Ý3ØAÀKÑO�Ø—‘˜\¨<¸ÔNä�	Š	Ð4°eÔDÞØˆMØ×3Ñ3°KÈxÓXÐXøô9 $ó !Û ð!ús   ÂF/ Æ/
F>Æ=F>c                 ó*  • U=(       d    U n[        U[        5      (       an  UR                  5       (       dY  UnUR                  /n[	        S U 5       5      (       a  [
        $ SSKJn   [        USS9nU" X$X5      nUb  U$ XE;   a   [
        $ M&  [
        $ )Nc              3   ó>   #   • U  H  oR                   S ;   v •  M     g7f)©r;   r<   N)rK   )rC   Úbs     r   rE   ÚBAbstractContext._check_for_additional_knowledge.<locals>.<genexpr>b   s   é € ÐOÂJ¸q—6‘6Ð:Ö:ÂJùs   ‚r   )Úcheck_flow_informationT)Úinclude_flows)	r/   r   Úis_instancer   Úanyr   Újedi.inference.finderrb   r   )r   r2   rR   r3   Ú
flow_scopeÚ
base_nodesrb   Úns           r   rQ   Ú/AbstractContext._check_for_additional_knowledge[   s™   € Ø#×+ tˆä�k¤4×(Ñ(°×1IÑ1I×1KÑ1KØ$ˆJØ&×0Ñ0Ð1ˆJäÑOÁJÓO×OÑOÜ Ð ÝDØÜ-¨jÈÑM�
Ù*¨<Ø+6óB�à‘=Ø�HØÓ+ØÜÐñ ô Ðr!   c                 óD   • U R                   nUc  U $ UR                  5       $ r   )r   Úget_root_context)r   r   s     r   rl   Ú AbstractContext.get_root_contexto   s'   € Ø×,Ñ,ˆØÑ!ØˆKØ×.Ñ.Ó0Ð0r!   c                 ó   • g©NF© ©r   s    r   Ú	is_moduleÚAbstractContext.is_moduleu   ó   € Ør!   c                 ó   • gro   rp   rq   s    r   Úis_builtins_moduleÚ"AbstractContext.is_builtins_modulex   rt   r!   c                 ó   • gro   rp   rq   s    r   Úis_classÚAbstractContext.is_class{   rt   r!   c                 ó   • gro   rp   rq   s    r   Úis_stubÚAbstractContext.is_stub~   rt   r!   c                 ó   • gro   rp   rq   s    r   rd   ÚAbstractContext.is_instance�   rt   r!   c                 ó   • gro   rp   rq   s    r   Úis_compiledÚAbstractContext.is_compiled„   rt   r!   c                 ó   • gro   rp   rq   s    r   Úis_bound_methodÚAbstractContext.is_bound_method‡   rt   r!   c                 ó   • [         er   r#   rq   s    r   Ú
py__name__ÚAbstractContext.py__name__Š   r*   r!   c                 ó   • [         er   r#   rq   s    r   Ú	get_valueÚAbstractContext.get_valueŽ   s   € Ü!Ð!r!   c                 ó   • g r   rp   rq   s    r   rD   ÚAbstractContext.name‘   s   € àr!   c                 ó   • g)Nrp   rp   rq   s    r   Úget_qualified_namesÚ#AbstractContext.get_qualified_names•   ó   € Ør!   c                 ó   • g)NÚ rp   rq   s    r   Ú	py__doc__ÚAbstractContext.py__doc__˜   r‘   r!   c              #   óH   #   • U R                   nX#U'    S v •  X1	 g ! X1	 f = f7fr   )r   )r   rg   ÚdctÚ
predefineds       r   Úpredefine_namesÚAbstractContext.predefine_names›   s,   é € à×*Ñ*ˆ
Ø!$�:Ñð	'ÛàÑ&ø�
Ñ&üs   ‚"” ˜"›Ÿ"r   ©NN)NNT)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r   r   r(   r6   r[   rQ   rl   rr   rv   ry   r|   rd   r�   r„   r‡   rŠ   ÚpropertyrD   r�   r”   r   r™   Ú__static_attributes__rp   r!   r   r   r      s´   ‡ àƒNØÓò#ð ó"ó ð"òð KOØ+/ô2Yòhò(1òòòòòòòð ñ"ó ð"ò"ð ñó ðòòð ñ'ó ó'r!   r   c                   ó¤   ^ • \ rS rSrSrU 4S jr\S 5       r\S 5       rS r	S r
S rS	 rS
 rS rS rS r\S 5       rS rS rS rS rSrU =r$ )ÚValueContexté¥   z;
Should be defined, otherwise the API returns empty types.
c                 óD   >• [         TU ]  UR                  5        Xl        g r   )Úsuperr   r   Ú_value)r   rH   Ú	__class__s     €r   r   ÚValueContext.__init__©   s   ø€ Ü‰Ñ˜×.Ñ.Ô/Ø�r!   c                 ó.   • U R                   R                  $ r   )r¨   r   rq   s    r   r   ÚValueContext.tree_node­   s   € à�{‰{×$Ñ$Ð$r!   c                 ó.   • U R                   R                  $ r   )r¨   r   rq   s    r   r   ÚValueContext.parent_context±   s   € à�{‰{×)Ñ)Ð)r!   c                 ó6   • U R                   R                  5       $ r   )r¨   rr   rq   s    r   rr   ÚValueContext.is_moduleµ   ó   € Ø�{‰{×$Ñ$Ó&Ð&r!   c                 óH   • U R                   U R                  R                  :H  $ r   )r¨   r   Úbuiltins_modulerq   s    r   rv   ÚValueContext.is_builtins_module¸   s   € Ø�{‰{˜d×2Ñ2×BÑBÑBÐBr!   c                 ó6   • U R                   R                  5       $ r   )r¨   ry   rq   s    r   ry   ÚValueContext.is_class»   s   € Ø�{‰{×#Ñ#Ó%Ð%r!   c                 ó6   • U R                   R                  5       $ r   )r¨   r|   rq   s    r   r|   ÚValueContext.is_stub¾   s   € Ø�{‰{×"Ñ"Ó$Ð$r!   c                 ó6   • U R                   R                  5       $ r   )r¨   rd   rq   s    r   rd   ÚValueContext.is_instanceÁ   ó   € Ø�{‰{×&Ñ&Ó(Ð(r!   c                 ó6   • U R                   R                  5       $ r   )r¨   r�   rq   s    r   r�   ÚValueContext.is_compiledÄ   r»   r!   c                 ó6   • U R                   R                  5       $ r   )r¨   r„   rq   s    r   r„   ÚValueContext.is_bound_methodÇ   s   € Ø�{‰{×*Ñ*Ó,Ð,r!   c                 ó6   • U R                   R                  5       $ r   )r¨   r‡   rq   s    r   r‡   ÚValueContext.py__name__Ê   ó   € Ø�{‰{×%Ñ%Ó'Ð'r!   c                 ó.   • U R                   R                  $ r   )r¨   rD   rq   s    r   rD   ÚValueContext.nameÍ   s   € à�{‰{×ÑÐr!   c                 ó6   • U R                   R                  5       $ r   )r¨   r�   rq   s    r   r�   Ú ValueContext.get_qualified_namesÑ   s   € Ø�{‰{×.Ñ.Ó0Ð0r!   c                 ó6   • U R                   R                  5       $ r   )r¨   r”   rq   s    r   r”   ÚValueContext.py__doc__Ô   r±   r!   c                 ó   • U R                   $ r   ©r¨   rq   s    r   rŠ   ÚValueContext.get_value×   ó   € Ø�{‰{Ðr!   c                 óR   • U R                   R                  < SU R                  < S3$ ©NÚ(Ú))r©   rœ   r¨   rq   s    r   Ú__repr__ÚValueContext.__repr__Ú   s   € ØŸ>™>×2Ô2°D·K´KÐ@Ð@r!   rÊ   )rœ   r�   rž   rŸ   Ú__doc__r   r¡   r   r   rr   rv   ry   r|   rd   r�   r„   r‡   rD   r�   r”   rŠ   rÑ   r¢   Ú__classcell__©r©   s   @r   r¤   r¤   ¥   s�   ø† ñõð ñ%ó ð%ð ñ*ó ð*ò'òCò&ò%ò)ò)ò-ò(ð ñ ó ð ò1ò'ò÷Að Ar!   r¤   c                   ój   • \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   S rS	 rS
 rS r	Sr
g)ÚTreeContextMixinéÞ   r   rr   rŠ   r   ry   r   c                 ó   • SSK Jn  U" X5      $ )Nr   )Ú
infer_node)Újedi.inference.syntax_treerÚ   )r   r@   rÚ   s      r   rÚ   ÚTreeContextMixin.infer_nodeæ   s   € Ý9Ù˜$Ó%Ð%r!   c                 ój  • SSK Jn  XR                  :X  a'  U R                  5       (       d   eU R	                  5       $ U R                  U5      nUR                  S;   a�  UR                  R                  X15      nUR                  5       (       ak  UR                  R                  UR                  5      nUR                  U R                  UR                  U5      nUR                  UUR                  5       US9nU$ UR                  S:X  a  UR!                  U R                  X15      $ [#        SU-  5      e)Nr   )rH   )ÚfuncdefÚlambdef)ÚinstanceÚclass_contextÚfunctionÚclassdefzProbably shouldn't happen: %s)r-   rH   r   rr   rŠ   Úcreate_contextrK   ÚFunctionValueÚfrom_contextry   r   Úcreate_valueÚAnonymousInstancer   ÚBoundMethodÚ
as_contextÚ
ClassValuer$   )r   r@   rH   r   ÚfuncÚclass_valuerà   s          r   rç   ÚTreeContextMixin.create_valueê   s  € Ý(à—>‘>Ó!Ø—>‘>×#Ñ#Ð#Ð#Ø—>‘>Ó#Ð#à×,Ñ,¨TÓ2ˆà�9‰9Ð.Ó.Ø×&Ñ&×3Ñ3°NÓ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                 óP  ^ ^^^• SUUUU 4S jjmS mT" T5      nUR                   S;   av  UR                  UR                  R                  S5         nTR                  UR                  :  a4  TR                  nUR                   S:X  a  UR
                  T:X  d  T" U5      nT" USS9$ )	NTc                 óZ  >• U TR                   :X  a  T$ U R                  S;   a  TR                  U 5      R                  5       $ U R                  S;   aL  T" T" U R                  5      5      nTR
                  U R                  S   R
                  :¼  a  U$ [        X 5      $ [        SU -  5      e)N)rÞ   rß   rã   r_   éÿÿÿÿz(There's a scope that was not managed: %s)	r   rK   rç   rê   rJ   Ú	start_posÚchildrenÚCompForContextÚ	Exception)Ú
scope_nodeÚ	is_nestedr   Úfrom_scope_noder@   Úparent_scoper   s      €€€€r   rø   Ú8TreeContextMixin.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ÓAÐAÜÐFÈÑSÓTÐTr!   c                 óH  •  U R                   n [        R                  " U 5      (       a  U $ U R                  S;   a-  U R                  S   R                  S;   a  U R                  S   $ O:U R                  S:X  a*  U R                  SS  H  nUR                  S;   d  M  Us  $    M¢  )N)ÚargumentÚtestlist_compé   r_   Údictorsetmakeré   )rJ   r   rI   rK   ró   )r@   ri   s     r   rù   Ú5TreeContextMixin.create_context.<locals>.parent_scope  s—   € ØØ—{‘{�ä×(Ò(¨×.Ñ.Ø�KØ—Y‘YÐ"?Ó?Ø—}‘} QÑ'×,Ñ,Ð0MÓMØ#Ÿ}™}¨QÑ/Ð/ð Nà—Y‘YÐ"2Ó2Ø!Ÿ]™]¨1¨QÓ/˜àŸ6™6Ð%BÕBØ#$šHñ 0ñ r!   )rÞ   rã   Ú:Úparam)r÷   )T)rK   ró   Úindexrò   rJ   rD   )r   r@   rö   ÚcolonrJ   rø   rù   s   ``   @@r   rä   ÚTreeContextMixin.create_context  s•   û€ ÷	Uò 	Uò	%ñ " $Ó'ˆ
Ø�?‰?Ð5Ó5Ø×'Ñ'¨
×(;Ñ(;×(AÑ(AÀ#Ó(FÑGˆEØ�~‰~ §¡Ó/ØŸ™�ØŸ™ wÓ.°6·;±;À$Ó3FÙ!-¨jÓ!9�JÙ˜z°TÑ:Ð:r!   c                 ó  • UR                  5       nU(       aN  UR                  S:X  a>  UR                  U:X  a.  UR                  SS5      nU R	                  U5      n[        XA5      $ U R                  U5      n[        XQ5      $ )Nr  rÞ   rß   )Úget_definitionrK   rD   Úsearch_ancestorrç   r   rä   r   )r   Ú	tree_nameÚ
definitionrÞ   rì   r>   s         r   Úcreate_nameÚTreeContextMixin.create_name*  sq   € Ø×-Ñ-Ó/ˆ
Þ˜*Ÿ/™/¨WÓ4¸¿¹ÈIÓ9UØ ×0Ñ0°¸IÓFˆGØ×$Ñ$ WÓ-ˆDÜ% dÓ6Ð6à×)Ñ)¨)Ó4ˆGÜ% gÓ9Ð9r!   rp   N)rœ   r�   rž   rŸ   r   r    rÚ   rç   rä   r  r¢   rp   r!   r   r×   r×   Þ   s8   ‡ ØƒNØƒNØƒNØÓØƒMØÓò&òNò4$;õL:r!   r×   c                   ó   • \ rS rSrSS jrSrg)ÚFunctionContexti5  Nc              #   ó&   #   • [        U UUS9v •  g 7f©N)r   r&   r'   ©r	   r%   s      r   r(   ÚFunctionContext.get_filters6  s   é € ÜØØ)Ø%ñ
ó 	
ùó   ‚rp   r›   ©rœ   r�   rž   rŸ   r(   r¢   rp   r!   r   r  r  5  s   † ÷
r!   r  c                   ó^   • \ rS rSrS\\   4S jrSS jrS r\	S 5       r
\	S 5       rS	 rS
rg)ÚModuleContexti>  Úreturnc                 ó6   • U R                   R                  5       $ r   ©r¨   Ú
py__file__rq   s    r   r  ÚModuleContext.py__file__?  rÂ   r!   Nc              #   ó¼   #   • U R                   R                  U5      n[        US 5        [        [	        U UUS9U R                  5       5      v •  U S h  v•N   g  N7fr  )r¨   r(   Únextr
   r	   Úget_global_filter)r   r&   r'   r4   s       r   r(   ÚModuleContext.get_filtersB  sZ   é € Ø—+‘+×)Ñ)¨,Ó7ˆäˆW�dÔÜÜØ#Ø-Ø)ñð
 ×"Ñ"Ó$ó
ò 	
ð ×Óùs   ‚AAÁAÁAc                 ó   • [        U 5      $ r   )r   rq   s    r   r  ÚModuleContext.get_global_filterP  s   € Ü Ó%Ð%r!   c                 ó.   • U R                   R                  $ r   ©r¨   Ústring_namesrq   s    r   r%  ÚModuleContext.string_namesS  ó   € à�{‰{×'Ñ'Ð'r!   c                 ó.   • U R                   R                  $ r   )r¨   Ú
code_linesrq   s    r   r)  ÚModuleContext.code_linesW  s   € à�{‰{×%Ñ%Ð%r!   c                 ó   • U R                   $ )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Ê   rq   s    r   rŠ   ÚModuleContext.get_value[  s   € ð �{‰{Ðr!   rp   r›   )rœ   r�   rž   rŸ   r   r   r  r(   r  r¡   r%  r)  rŠ   r¢   rp   r!   r   r  r  >  sI   † ð(˜H T™Nô (ôò&ð ñ(ó ð(ð ñ&ó ð&õr!   r  c                   óH   • \ rS rSrS	S jrS r\S 5       rS\\	   4S jr
Srg)
ÚNamespaceContextid  Nc                 ó6   • U R                   R                  5       $ r   ©r¨   r(   r%   s      r   r(   ÚNamespaceContext.get_filterse  r»   r!   c                 ó   • U R                   $ r   rÊ   rq   s    r   rŠ   ÚNamespaceContext.get_valueh  rÌ   r!   c                 ó.   • U R                   R                  $ r   r$  rq   s    r   r%  ÚNamespaceContext.string_namesk  r'  r!   r  c                 ó6   • U R                   R                  5       $ r   r  rq   s    r   r  ÚNamespaceContext.py__file__o  rÂ   r!   rp   r›   )rœ   r�   rž   rŸ   r(   rŠ   r¡   r%  r   r   r  r¢   rp   r!   r   r.  r.  d  s0   † ô)òð ñ(ó ð(ð(˜H T™N÷ (r!   r.  c                   ó(   • \ rS rSrSS jrSS jrSrg)ÚClassContextis  Nc              #   ó2   #   • U R                  X5      v •  g 7fr   )r  r%   s      r   r(   ÚClassContext.get_filterst  s   é € Ø×$Ñ$ ^ÓBÓBùs   ‚c                 ó   • [        U UUS9$ r  r  r%   s      r   r  ÚClassContext.get_global_filterw  s   € ÜØØ)Ø%ñ
ð 	
r!   rp   r›   )rœ   r�   rž   rŸ   r(   r  r¢   rp   r!   r   r9  r9  s  s   † ôC÷
r!   r9  c                   óD   ^ • \ rS rSrU 4S jrSS jrS rS rS rSr	U =r
$ )	rô   i  c                 óP   >• [         TU ]  UR                  5        X l        Xl        g r   )r§   r   r   r   r   )r   r   r;   r©   s      €r   r   ÚCompForContext.__init__€  s!   ø€ Ü‰Ñ˜×7Ñ7Ô8Ø!ŒØ,Õr!   c              #   ó&   #   • [        U 5      v •  g 7fr   r  r%   s      r   r(   ÚCompForContext.get_filters…  s   é € Ü˜tÓ$Ó$ùr  c                 ó   • g r   rp   rq   s    r   rŠ   ÚCompForContext.get_valueˆ  s   € Ør!   c                 ó   • g)Nz<comprehension context>rp   rq   s    r   r‡   ÚCompForContext.py__name__‹  s   € Ø(r!   c                 óR   • U R                   R                  < SU R                  < S3$ rÎ   )r©   rœ   r   rq   s    r   rÑ   ÚCompForContext.__repr__Ž  s   € ØŸ>™>×2Ô2°D·N´NÐCÐCr!   )r   r   r›   )rœ   r�   rž   rŸ   r   r(   rŠ   r‡   rÑ   r¢   rÔ   rÕ   s   @r   rô   rô     s#   ø† õ-ô
%òò)÷Dð Dr!   rô   c                   ó   • \ rS rSrSS jrSrg)ÚCompiledContexti’  Nc                 ó6   • U R                   R                  5       $ r   r0  r%   s      r   r(   ÚCompiledContext.get_filters“  r»   r!   rp   r›   r  rp   r!   r   rJ  rJ  ’  s   † ÷)r!   rJ  c                   óB   • \ rS rSrSrS r\S 5       rS\\	   4S jr
Srg)ÚCompiledModuleContexti—  Nc                 ó   • U R                   $ r   rÊ   rq   s    r   rŠ   ÚCompiledModuleContext.get_valueš  rÌ   r!   c                 ó.   • U R                   R                  $ r   r$  rq   s    r   r%  Ú"CompiledModuleContext.string_names�  r'  r!   r  c                 ó6   • U R                   R                  5       $ r   r  rq   s    r   r  Ú CompiledModuleContext.py__file__¡  rÂ   r!   rp   )rœ   r�   rž   rŸ   r)  rŠ   r¡   r%  r   r   r  r¢   rp   r!   r   rN  rN  —  s0   † Ø€Jòð ñ(ó ð(ð(˜H T™N÷ (r!   rN  c                 ó  • Ub~  UR                  SSS5      nS nUS:X  a  UnUR                  SS5      nUbL  UR                  S   nUb:  X%R                  :  a+  Ub  X$R                  S   R                  :  a  UR                  n[        XU5      $ )NrÞ   rã   rß   éþÿÿÿ)r	  ró   rò   Úget_global_filters)r>   Úname_or_noner3   Úancestorrß   r  s         r   r.   r.   ¥  sœ   € ð ÑØ×/Ñ/°	¸:ÀyÓQˆØˆØ�yÓ ð ˆGØ#×3Ñ3°I¸zÓJˆHØÑØ×%Ñ% bÑ)ˆEØÑ#¨·?±?Ó(BØ‘? h×1AÑ1AÀ"Ñ1E×1OÑ1OÓ&OØ'×1Ñ1�Hä˜g°Ó>Ð>r!   c              #   ó  #   • U nSSK Jn  U bA  U R                  UUS9 Sh  v•N   [        X[        45      (       a  SnU R
                  n U b  MA  [        UR                  R                  R                  5       S5      nUc   eUv •  g Ne7f)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³   )r>   r&   r'   Úbase_contextr[  r`   s         r   rW  rW  º  sš   é € ð^ €LÝJØ
Ñ
à×&Ñ&Ø)Ø%ð 'ð 
÷ 	
ð 	
ô �g¼mÐL×MÑMà!ˆNà×(Ñ(ˆð Ó
ô 	ˆ\×)Ñ)×9Ñ9×EÑEÓGÈÓN€AØ‰=Ðˆ=à
ƒGñ	
ùs   ‚B	¡B¢+B	Á9B	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.  r9  rô   rJ  rN  r.   rW  rp   r!   r   Ú<module>rh     sÇ   ðÝ Ý %Ý ß  å "÷ñ ç Gß 9Ý .Ý Ý ÷Q'ñ Q'ôh6A�?ô 6A÷rT:ñ T:ôn
Ð&¨ô 
ô#Ð$ lô #ôL(Ð'¨ô (ô	
Ð# \ô 	
ôDÐ% ô Dô&)�lô )ô
(˜Oô (ò?ó*@r!   