§
    ŒŸj’  ã                   óJ  — d Z ddlZddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZ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mZ ddlmZ ddlmZm Z m!Z!m"Z"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l0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddddd d!d"d#d$d%d&d'd(d)œZ9d*„ e9 :                    ¦   «         D ¦   «         Z;d+„ Z<d,„ Z=d-„ Z> e'e
¬.¦  «        d/„ ¦   «         Z?ej@        e<d0„ ¦   «         ¦   «         ZAd1„ ZBd2„ ZCe<dEd3„¦   «         ZDej@        dEd4„¦   «         ZEd5„ ZFed6„ ¦   «         ZGd7„ ZHd8„ ZId9„ ZJd:„ ZKd;„ ZLd<„ ZMd=„ ZNd>„ ZO e3jP        ¦   «         d?„ ¦   «         ZQ e'¦   «         d@„ ¦   «         ZRdA„ ZS G dB„ dCe¦  «        ZTdD„ ZUdS )Fz&
Functions inferring the syntax tree.
é    N)Útree)Údebug)Úparser_utils)ÚValueSetÚ	NO_VALUESÚContextualizedNodeÚiterator_to_value_setÚiterate_values)ÚLazyTreeValue)Úcompiled)Ú	recursion)Úanalysis)Úimports)Ú	arguments)Ú
ClassValueÚFunctionValue)Úiterable)ÚListModificationÚDictModification)ÚTreeInstance)Ú	is_stringÚ
is_literalÚ	is_numberÚget_names_of_nodeÚis_big_annoying_library)ÚCOMPARISON_OPERATORS)Úinference_state_method_cache)ÚVersionInfo)Ú
annotation)ÚTreeNameDefinition)ÚCompForContext©Ú	Decoratee)Úplugin_manager)ÚProxyTypingValueÚIGNORE_ANNOTATION_PARTS)ÚTypeVarÚ__add__Ú__sub__Ú__mul__Ú
__matmul__Ú__truediv__Ú__floordiv__Ú__mod__Ú__pow__Ú
__lshift__Ú
__rshift__Ú__and__Ú__or__Ú__xor__)ú+ú-Ú*ú@ú/z//ú%ú**z<<z>>ú&ú|ú^c                 ó0   — i | ]\  }}|d |dd…         z   “ŒS )Ú__ré   N© )Ú.0ÚkÚvs      úg/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jedi/inference/syntax_tree.pyú
<dictcomp>rG   4   s7   € ð $ð $ð $Ù˜˜A€A€uˆq���Œu�}ð$ð $ð $ó    c                 ó   ‡ — ˆ fd„}|S )a{  
    This is for now the way how we limit type inference going wild. There are
    other ways to ensure recursion limits as well. This is mostly necessary
    because of instance (self) access that can be quite tricky to limit.

    I'm still not sure this is the way to go, but it looks okay for now and we
    can still go anther way in the future. Tests are there. ~ dave
    c                 óF  •— | j         }| j        }	 |j        |xx         dz  cc<   d}| j        € |                      ¦   «         |j        u r|dz  }|j        |         |k    rt          j        d|¦  «         t          S n# t          $ r d|j        |<   Y nw xY w ‰| g|¢R i |¤ŽS )Né   i,  éd   z+In value %s there were too many inferences.)
Ú	tree_nodeÚinference_stateÚinferred_element_countsÚparent_contextÚ	get_valueÚbuiltins_moduler   Úwarningr   ÚKeyError)ÚcontextÚargsÚkwargsÚnrN   ÚmaximumÚfuncs         €rF   Úwrapperz$_limit_value_infers.<locals>.wrapperB   sì   ø€ ØÔˆØ!Ô1ˆð	;ØÔ3°AÐ6Ð6Ô6¸!Ñ;Ð6Ð6Ñ6ØˆGØÔ%Ð-Ø×)Ò)Ñ+Ô+¨Ô/NÐNÐNð
 ˜3‘�àÔ6°qÔ9¸GÒCÐCÝ”ÐKÈQÑOÔOÐOÝ Ð ð Døõ ð 	;ð 	;ð 	;Ø9:ˆOÔ3°AÑ6Ð6Ð6ð	;øøøàˆt�GÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-s   ‘A*A= Á=BÂBrB   )rZ   r[   s   ` rF   Ú_limit_value_infersr\   9   s#   ø€ ð.ð .ð .ð .ð .ð* €NrH   c                 óø  ‡— t          | t          ¦  «        rt          | |¦  «        S i g}|}|�*|j        }|j        dv rnt          j        |¦  «        rd }n|­*| j                             |¦  «        }|�€å|�râ|j        dk    �rÖ| j	        j
        �rÉ|j        d         }|j        |j        k    �r9t          |¦  «        }t          |¦  «        }d„ |D ¦   «         Št          ˆfd„|D ¦   «         ¦  «        rô|D ]ñ}| j	                             | |¦  «        }	t#          |	¦  «        dk    r²t#          |¦  «        t#          |	¦  «        z  dk    rt%          j        d|¦  «         i g} n…t)          |¦  «        }
g }|	D ]`}t)          |
¦  «        }t+          |¦  «        D ]:\  }}|                     ¦   «         ||<   t/          |g¦  «        ||         |j        <   Œ;||z  }ŒaŒâ|D ]}|	||j        <   ŒŒòt#          |¦  «        dk    rOt2          }|D ]C}|                      ||¦  «        5  |t          | |¦  «        z  }d d d ¦  «         n# 1 swxY w Y   ŒD|S t7          | |¦  «        S |rt          | |¦  «        S t7          | |¦  «        S )N)Úif_stmtÚfor_stmtr^   rK   c                 ó   — g | ]	}|j         ‘Œ
S rB   ©Úvalue)rC   Úes     rF   ú
<listcomp>zinfer_node.<locals>.<listcomp>w   s   € Ð @Ð @Ð @¨Q ¤Ð @Ð @Ð @rH   c              3   ó*   •K  — | ]}|j         ‰v V — Œd S ©Nra   )rC   ÚiÚstr_element_namess     €rF   ú	<genexpr>zinfer_node.<locals>.<genexpr>x   s+   øè è € ÐBÐB°A�1”7Ð/Ð/ÐBÐBÐBÐBÐBÐBrH   é   z,Too many options for if branch inference %s.)Ú
isinstancer!   Ú_infer_nodeÚparentÚtyper   Úis_scopeÚpredefined_namesÚgetrN   Úis_analysisÚchildrenÚ	start_posÚend_posr   ÚanyÚinferÚlenr   ÚdbgÚlistÚ	enumerateÚcopyr   rb   r   Úpredefine_namesÚ_infer_node_if_inferred)rU   ÚelementÚ
name_dictsr^   Úpredefined_if_name_dictÚif_stmt_testÚif_namesÚelement_namesÚif_nameÚdefinitionsÚoriginal_name_dictsÚ
definitionÚnew_name_dictsrg   Ú	name_dictÚresultrh   s                   @rF   Ú
infer_noderŒ   Z   s>  ø€ Ý�'�>Ñ*Ô*ð -Ý˜7 GÑ,Ô,Ð,à�€JØ€GØ
Ð
Ø”.ˆØŒ<Ð2Ð2Ð2ØÝÔ  Ñ)Ô)ð 	ØˆGØð Ð
ð &Ô6×:Ò:¸7ÑCÔCÐð Ñ&¨7Ñ&Ø” 	Ò)Ñ)¨gÔ.EÔ.QÑ)ØÔ'¨Ô*ˆð
 Ô˜|Ô3Ò3Ñ3õ )¨Ñ6Ô6ˆHÝ-¨gÑ6Ô6ˆMØ @Ð @°-Ð @Ñ @Ô @ÐÝÐBÐBÐBÐB¸ÐBÑBÔBÑBÔBð CØ'ð Cð C�GØ")Ô"9×"?Ò"?ÀÈÑ"QÔ"Q�Kõ ˜;Ñ'Ô'¨!Ò+Ð+Ý˜z™?œ?­S°Ñ-=Ô-=Ñ=ÀÒBÐBÝ!œIÐ&TÐV]Ñ^Ô^Ð^ð +-¨˜JØ!˜Eå.2°:Ñ.>Ô.>Ð+Ø%'˜
Ø*5ð 9ð 9˜JÝ-1Ð2EÑ-FÔ-F˜NÝ09¸.Ñ0IÔ0Ið Zð Z¡  9Ø4=·N²NÑ4DÔ4D ¨qÑ 1ÝCKÈZÈLÑCYÔCY ¨qÔ 1°'´-Ñ @Ð @à&¨.Ñ8˜J˜Jð9ð *4ð Cð C˜IØ7B˜I g¤mÑ4Ð4ðCåˆz‰?Œ?˜QÒÐÝˆFØ'ð <ð <�	Ø×,Ò,¨W°iÑ@Ô@ð <ð <Ø�k¨'°7Ñ;Ô;Ñ;�Fð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <øàˆMå*¨7°GÑ<Ô<Ð<à"ð 	=Ý˜w¨Ñ0Ô0Ð0å*¨7°GÑ<Ô<Ð<s   ÈH<È<I 	ÉI 	c                 ó”   — |}|�5|j         }| j                             |¦  «        }|�t          | |¦  «        S |­5t	          | |¦  «        S )zA
    TODO This function is temporary: Merge with infer_node.
    )rm   rp   rq   rl   Ú_infer_node_cached)rU   r   rm   r�   s       rF   r~   r~   ¢   s]   € ð €FØ
Ð
Ø”ˆØ")Ô":×">Ò">¸vÑ"FÔ"FÐØ"Ð.Ý˜w¨Ñ0Ô0Ð0ð	 Ð
õ
 ˜g wÑ/Ô/Ð/rH   )Údefaultc                 ó"   — t          | |¦  «        S rf   )rl   )rU   r   s     rF   rŽ   rŽ   ¯   s   € å�w Ñ(Ô(Ð(rH   c                 ó   — t          j        d||j        | ¦  «         | j        }|j        }|dv rt          | |¦  «        S |dk    r#t          t          j        | |¦  «        g¦  «        S |dk    rt          | |¦  «        S |dv rè|j
        d         }|j
        dd …         }d}|j        d	k    r"|j        d
k    rd}|                     d¦  «        }|                      |¦  «        }t          |¦  «        D ]N\  }}	|	dk    r2|                      ||dz            ¦  «        }
t          | ||	|
¦  «        } nt!          | ||	¦  «        }ŒO|r&|                     ¦   «                              ¦   «         S |S |dv r$t          t'          j        || |¦  «        g¦  «        S |dv rD|                      |j
        d         ¦  «        }|j
        d d…         D ]}t+          ||¦  «        }Œ|S |dk    rA|                      |j
        d         ¦  «        |                      |j
        d         ¦  «        z  S |dk    r]|j        dk    r/|j        }t/          dt1          |j        ¦  «        ›d|›d�¦  «        ‚t          t3          j        |d¦  «        g¦  «        S |dk    rGt          | |j
        d         ¦  «        }|j
        dd d…         D ]}|                     || ¬¦  «        }Œ|S |dk    r |                      |j
        d         ¦  «        S |dk    r3t9          j        | |j
        d         ¦  «                             | ¦  «        S |dk    r—t?          |j
        ¦  «        r||j
        d         j        dk    rf|j
        d         j
        d         }|                      |¦  «                             d¦  «                              ¦   «         }|                     ¦   «         S tB          S |dk    r |                      |j
        d         ¦  «        S |d k    rtB          S tE          | |¦  «        S )!Nzinfer_node %s@%s in %s)ÚnameÚnumberÚstringÚatomÚstringsÚkeywordÚfstringÚlambdefÚ	expr_stmt)ÚpowerÚ	atom_exprr   rK   Fr—   ÚawaitTr;   )Útestlist_star_exprÚtestlist)Únot_testÚfactoréÿÿÿÿÚtestÚoperatorz...zunhandled operator z in ú ÚEllipsisÚdotted_namerA   )Úname_contextÚ
eval_inputÚ	annassignÚ
yield_exprÚ	yield_argÚ__iter__Únamedexpr_testÚ	star_expr)#r   ry   rt   rN   rn   Ú
infer_atomr   r   Úfrom_contextÚinfer_expr_stmtrs   rb   ÚpoprŒ   r{   Ú_infer_comparisonÚinfer_trailerÚpy__await__Úpy__stop_iteration_returnsr   ÚSequenceLiteralValueÚinfer_factorrm   ÚAssertionErrorÚreprr   Úbuiltin_from_nameÚpy__getattribute__r   Úinfer_annotationÚexecute_annotationrx   Úexecute_with_valuesr   Úinfer_or_test)rU   r   rN   ÚtypÚfirst_childrs   Ú	had_awaitÚ	value_setrg   ÚtrailerÚrightr¤   ÚoriginÚ	next_nameÚ
generatorss                  rF   rl   rl   ´   sn  € õ 
„IÐ&¨°Ô1BÀGÑLÔLÐLØÔ-€OØ
Œ,€CØ
ÐSÐSÐSÝ˜' 7Ñ+Ô+Ð+Ø	�	Ò	Ð	Ý�Ô3°G¸WÑEÔEÐFÑGÔGÐGØ	�Ò	Ð	Ý˜w¨Ñ0Ô0Ð0Ø	Ð&Ð	&Ð	&ØÔ& qÔ)ˆØÔ# A B BÔ'ˆØˆ	ØÔ˜yÒ(Ð(¨[Ô->À'Ò-IÐ-IØˆIØ"Ÿ,š, q™/œ/ˆKà×&Ò& {Ñ3Ô3ˆ	Ý% hÑ/Ô/ð 
	Cð 
	C‰LˆQ�Ø˜$ŠˆØ×*Ò*¨8°A¸±E¬?Ñ;Ô;�Ý-ØØØØñ	ô �	ð �Ý% g¨y¸'ÑBÔBˆIˆIàð 	HØ×(Ò(Ñ*Ô*×EÒEÑGÔGÐGØÐØ	Ð3Ð	3Ð	3å�Ô6°ÈÐQXÑYÔYÐZÑ[Ô[Ð[Ø	Ð&Ð	&Ð	&Ø×&Ò& wÔ'7¸Ô';Ñ<Ô<ˆ	ØÔ(¨¨"¨Ô-ð 	:ð 	:ˆHÝ$ Y°Ñ9Ô9ˆIˆIØÐØ	�Šˆà×"Ò" 7Ô#3°AÔ#6Ñ7Ô7Ø×$Ò$ WÔ%5°bÔ%9Ñ:Ô:ñ;ð 	<à	�
Ò	Ð	àŒ=˜EÒ!Ð!Ø”^ˆFÝ �.Å4ÈÌÑCVÔCVÐCVÐCVÐX^ÐX^ÐX^Ð!_Ñ`Ô`Ð`Ý�Ô3°OÀZÑPÔPÐQÑRÔRÐRØ	�Ò	Ð	Ý˜w¨Ô(8¸Ô(;Ñ<Ô<ˆ	Ø Ô)¨!¨$¨Q¨$Ô/ð 	Vð 	VˆIØ!×4Ò4°YÈWÐ4ÑUÔUˆIˆIØÐØ	�Ò	Ð	Ø×!Ò! 'Ô"2°1Ô"5Ñ6Ô6Ð6Ø	�Ò	Ð	ÝÔ*¨7°GÔ4DÀQÔ4GÑHÔHßÒ Ñ(Ô(ð	)à	�Ò	Ð	ÝˆwÔÑ Ô ð 	; WÔ%5°aÔ%8Ô%=ÀÒ%LÐ%LàÔ& qÔ)Ô2°1Ô5ˆGØ ×+Ò+¨GÑ4Ô4ß#Ò# JÑ/Ô/×0CÒ0CÑ0EÔ0Eð à×8Ò8Ñ:Ô:Ð:õ ÐØ	Ð Ò	 Ð	 Ø×!Ò! 'Ô"2°1Ô"5Ñ6Ô6Ð6Ø	�Ò	Ð	ÝÐå˜W gÑ.Ô.Ð.rH   c                 óª  — |j         d d…         \  }}|dk    rd }|dk    r=|j         \  }}}|                     t          | |¦  «        t          | |¦  «        ¦  «        S t	          j        d||¦  «         |dk    r|                     | |¬¦  «        S |dk    sJ d|z  ¦   «         ‚t          j        | j	        | ||¦  «        }| 
                    |¦  «        S )	NrA   ú)ú[zinfer_trailer: %s in %sú.)r¨   Úname_or_strú(ztrailer_op is actually %s)rs   Úget_itemÚ_infer_subscript_listr   r   ry   r½   r   ÚTreeArgumentsrN   Úexecute)rU   Úatom_valuesrÆ   Ú
trailer_opÚnodeÚ_rV   s          rF   rµ   rµ     s  € ØÔ'¨¨¨Ô+Ñ€J�Øˆs‚{€{Øˆà�SÒÐØ%Ô.Ñˆ
�D˜!Ø×#Ò#Ý! '¨4Ñ0Ô0Ý˜w¨Ñ0Ô0ñ
ô 
ð 	
õ
 	Œ	Ð+¨W°kÑBÔBÐBØ˜ÒÐØ×1Ò1Ø$Ø ð 2ñ ô ð ð
  Ò$Ð$Ð$Ð&AÀJÑ&NÑ$Ô$Ð$ÝÔ*¨7Ô+BÀGÈTÐSZÑ[Ô[ˆDØ×&Ò& tÑ,Ô,Ð,rH   c                 óˆ  ‡— | j         }‰j        dk    r�‰                     ddd¦  «        p‰}|j        dk    r0t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        s‰}n|j        dk    r‰}|j        }t          ‰¦  «        rd}|                      ‰|¬¦  «        S ‰j        dk    rP‰j        d	v r(t          t          j        |‰j        ¦  «        g¦  «        S ‰j        d
k    rt          S J d‰z  ¦   «         ‚t          ‰t          j        ¦  «        rB|j                             ‰j        ¦  «        }t          t          j        ||¦  «        g¦  «        S ‰j        dk    rQt'          | ‰j        d         ¦  «        }‰j        dd…         D ]$}t'          | |¦  «        }t+          | |d|¦  «        }Œ%|S ‰j        dk    rt          j        |¦  «        S ‰j        }|d         dk    r]t/          |¦  «        dk    sJ|d         j        dk    rt/          |d         j        ¦  «        dk    s|                      |d         ¦  «        S 	 |d         j        d         }	|	dk    r%	 |d         j        d         }	n# t2          $ r Y nw xY w|	j        dv r$t          t5          j        || ‰¦  «        g¦  «        S n# t2          t8          f$ r Y nw xY w|d         }
	 |
j        }n# t8          $ r g }Y nw xY w|d         dk    r%|
dk    sd|v sd|v rt5          j        || ‰¦  «        }nt5          j        || ‰¦  «        }t          |g¦  «        S )zÁ
    Basically to process ``atom`` nodes. The parser sometimes doesn't
    generate the node (because it has just one child). In that case an atom
    might be a name or a literal as well.
    r’   rš   r™   r^   c              3   óV   •K  — | ]#}|j         ‰j         cxk    o
|j        k     nc V — Œ$d S rf   )rt   ru   )rC   rX   r•   s     €rF   ri   zinfer_atom.<locals>.<genexpr>)  sE   øè è € Ð`Ð`ÀQ�q”{ d¤nÐ@Ð@Ò@Ð@°q´yÒ@Ð@Ð@Ð@Ð`Ð`Ð`Ð`Ð`Ð`rH   N©Úpositionr—   )ÚFalseÚTrueÚNoneÚyieldFzCannot infer the keyword %sr–   r   rK   r5   r˜   rÐ   rA   Útestlist_compú:é   )Úcomp_forÚsync_comp_forÚ{Ú}r;   )rN   rn   Úsearch_ancestorrv   Úget_test_nodesrt   Ú_is_annotation_namer½   rb   r   r   r¼   r   rk   r   ÚLiteralÚcompiled_subprocessÚsafe_literal_evalÚcreate_simple_objectr°   rs   r´   Úget_string_value_setrx   rŒ   Ú
IndexErrorr   Úcomprehension_from_atomÚAttributeErrorÚDictLiteralValuer¸   )rU   r•   ÚstateÚstmtrÜ   r”   rÅ   rÇ   Úcrä   Ú
array_nodeÚarray_node_cÚ	new_values    `           rF   r°   r°     sÀ  ø€ ð Ô#€EØ„y�FÒÐà×#Ò# K°¸IÑFÔFÐNÈ$ˆØŒ9˜	Ò!Ð!ÝÐ`Ð`Ð`Ð`È$×J]ÒJ]ÑJ_ÔJ_Ð`Ñ`Ô`Ñ`Ô`ð Ø�øØŒY˜)Ò#Ð#ØˆDØ”>ˆÝ˜tÑ$Ô$ð 	ð ˆHØ×)Ò)¨$¸Ð)ÑBÔBÐBØ	Œ�iÒ	Ð	àŒ:Ð2Ð2Ð2Ý�XÔ7¸¸t¼zÑJÔJÐKÑLÔLÐLØŒZ˜7Ò"Ð"õ ÐØ:Ð3°dÑ:Ñ:Ô:Ð:å	�D�$œ,Ñ	'Ô	'ð 0%ØÔ*×<Ò<¸T¼ZÑHÔHˆÝ�Ô6°u¸fÑEÔEÐFÑGÔGÐGØ	Œ�iÒ	Ð	å˜w¨¬°aÔ(8Ñ9Ô9ˆ	Ø”m A B BÔ'ð 	Jð 	JˆFÝ˜w¨Ñ/Ô/ˆEÝ)¨'°9¸cÀ5ÑIÔIˆIˆIØÐØ	Œ�iÒ	Ð	ÝÔ,¨UÑ3Ô3Ð3àŒMˆàˆQŒ4�3Š;ˆ;�s 1™vœv¨š{˜{Ø˜1œœ oÒ5Ð5Ý   1¤¤Ñ/Ô/°!Ò3Ð3Ø×%Ò% a¨¤dÑ+Ô+Ð+ð	Ø˜”t”} QÔ'ˆHð ˜3ŠˆðØ  œtœ}¨QÔ/�H�HøÝ!ð ð ð Ø�Dðøøøð Œ}Ð =Ð=Ð=Ý¥Ô!AØ˜7 Dñ"ô "ð !ñ ô ð ð >øõ �NÐ+ð 	ð 	ð 	ØˆDð	øøøð  �q”Tˆ
ð	Ø%Ô.ˆLˆLøÝð 	ð 	ð 	ØˆLˆLˆLð	øøøàˆQŒ4�3Š;ˆ;˜J¨#Ò-Ð-°¸Ð1DÐ1DØ# |Ð3Ð3Ý Ô1°%¸À$ÑGÔGˆIˆIå Ô5°e¸WÀdÑKÔKˆIÝ˜˜Ñ$Ô$Ð$s6   ÉJ3 É!I5 É5
JÊJÊ3KËKËK ËK*Ë)K*c                 ó  — t          j        | j        |¦  «        5 }|rE|�&t          j        | ||¦  «        }|r|cd d d ¦  «         S t          | ||¦  «        cd d d ¦  «         S 	 d d d ¦  «         n# 1 swxY w Y   t          S rf   )r   Úexecution_allowedrN   r   Ú"find_type_from_comment_hint_assignÚ_infer_expr_stmtr   )rU   rõ   Ú	seek_nameÚallowedÚpep0484_valuess        rF   r²   r²   s  s	  € å	Ô	$ WÔ%<¸dÑ	CÔ	Cð >ÀwØð 	>ØÐ$åÔAÀ'È4ÐQZÑ[Ô[ð à!ð *Ø)ð>ð >ð >ð >ñ >ô >ð >ð >õ $ G¨T°9Ñ=Ô=ð>ð >ð >ð >ñ >ô >ð >ð >ð	>ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >õ Ðs   ›A0ÁA0Á0A4Á7A4c                 óè  ‡ ‡‡‡— d„ }t          j        d||¦  «         |                     ¦   «         }‰                      |¦  «        Š|r t	          ‰ |¦  «        }t          |‰¦  «        Št          |                     ¦   «         d¦  «        } ||¦  «        \  }Š|dvo
|j        dk    }|s|�r°| 	                    d¬¦  «        d         j
        }	‰                      |	|j        ¬	¦  «        }
|r$ˆ ˆˆfd
„Št          ˆfd„|
D ¦   «         ¦  «        Š�nMt          j        |¦  «        }|j
        dd…         |_
        |                     d¦  «        }|�ü|j        dk    rñ‰rït!          j        |¦  «        rÛ|                     ¦   «         }t'          ‰ |¦  «        }t)          |                     ¦   «                              |¦  «        ¦  «        }|D ]}}|j        d         j
        |                     ¦   «         i}‰                      ||¦  «        5  ‰                      |¦  «        }t3          ‰ |
||¦  «        }
ddd¦  «         n# 1 swxY w Y   Œ~|
Šnt3          ‰ |
|‰¦  «        Št          j        d‰¦  «         ‰S )aD  
    The starting point of the completion. A statement always owns a call
    list, which are the calls, that a statement does. In case multiple
    names are defined in the statement, `seek_name` returns the result for
    this name.

    expr_stmt: testlist_star_expr (annassign | augassign (yield_expr|testlist) |
                     ('=' (yield_expr|testlist_star_expr))*)
    annassign: ':' test ['=' test]
    augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' |
                '<<=' | '>>=' | '**=' | '//=')

    :param stmt: A `tree.ExprStmt`.
    c                 óì   — | j         d         }|j        dvrdS |j         d         }|j        dk    st          |j         ¦  «        dk    rdS |j         d         }|j         d         dk    |j         d         fS )	Nr   )rœ   r›   )FNr’   rA   r¢   rÍ   rK   )rs   rn   rx   )rõ   rœ   r’   rÆ   s       rF   Úcheck_setitemz'_infer_expr_stmt.<locals>.check_setitem‘  s‚   € Ø”M !Ô$ˆ	ØŒ>Ð!7Ð7Ð7Ø�;ØÔ! !Ô$ˆØŒ9˜ÒÐ¥# iÔ&8Ñ"9Ô"9¸QÒ">Ð">Ø�;ØÔ$ RÔ(ˆØÔ Ô" cÒ)¨7Ô+;¸AÔ+>Ð>Ð>rH   zinfer_expr_stmt %s (%s)N)ú=Nr¤   T)Úinclude_setitemr   rÛ   c                 ó˜   •— t          ‰‰¦  «        }| j        dk    rt          | ‰|¦  «        S | j        dk    rt          | ‰|¦  «        S | S )NÚdictrz   )ÚContextualizedSubscriptListNodeÚ
array_typer   r   )rE   rö   rU   ÚsubscriptlistrÅ   s     €€€rF   Úto_modz _infer_expr_stmt.<locals>.to_mod­  sU   ø€ Ý3°G¸]ÑKÔK�Ø”< 6Ò)Ð)Ý+¨A¨y¸!Ñ<Ô<Ð<Ø”\ VÒ+Ð+Ý+¨A¨y¸!Ñ<Ô<Ð<Ø�rH   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S rf   rB   )rC   rE   r  s     €rF   ri   z#_infer_expr_stmt.<locals>.<genexpr>µ  s+   øè è € Ð @Ð @¨q  ¨¡¤Ð @Ð @Ð @Ð @Ð @Ð @rH   r¢   r_   rK   zinfer_expr_stmt result %s)r   ry   Úget_rhsrŒ   r    Úcheck_tuple_assignmentsÚnextÚyield_operatorsrn   Úget_defined_namesrb   r½   rt   r   r|   rè   r   Úfor_stmt_defines_one_nameÚget_testlistr   rz   rw   Úiteraters   r}   r´   )rU   rõ   rþ   r  ÚrhsrX   Úfirst_operatorÚ
is_setitemÚis_annassignr’   Úleft_valuesr¤   r_   r×   ÚcnÚorderedÚ
lazy_valueÚdctÚtr
  r  rÅ   s   `                  @@@rF   rý   rý   �  s  øøøø€ ð ?ð ?ð ?õ 
„IÐ'¨¨yÑ9Ô9Ð9Ø
�,Š,‰.Œ.€Cà×"Ò" 3Ñ'Ô'€Iàð :Ý˜w¨	Ñ2Ô2ˆÝ+¨A¨yÑ9Ô9ˆ	å˜$×.Ò.Ñ0Ô0°$Ñ7Ô7€NØ - ¨dÑ 3Ô 3Ñ€J�Ø!¨Ð4ÐZ¸Ô9LÐPZÒ9Z€LØð #Y�zñ #Yà×%Ò%°dÐ%Ñ;Ô;¸AÔ>ÔDˆØ×0Ò0°ÀÄÐ0ÑOÔOˆàð 	Yðð ð ð ð ð ð õ !Ð @Ð @Ð @Ð @°KÐ @Ñ @Ô @Ñ@Ô@ˆI‰Iå”y Ñ0Ô0ˆHØ%œ^¨C¨R¨CÔ0ˆHŒNØ×+Ò+¨JÑ7Ô7ˆHØÐ#¨¬¸Ò(CÐ(CÈ	Ð(CÝ$Ô>¸xÑHÔHð )Dð
  ×,Ò,Ñ.Ô.�Ý'¨°Ñ6Ô6�Ý˜rŸxšx™zœz×1Ò1°"Ñ5Ô5Ñ6Ô6�à")ð [ð [�JØ#Ô,¨QÔ/Ô5°z×7GÒ7GÑ7IÔ7IÐJ�CØ ×0Ò0°¸3Ñ?Ô?ð [ð [Ø#×.Ò.¨sÑ3Ô3˜Ý&7¸ÀÈhÐXYÑ&ZÔ&Z˜ð[ð [ð [ñ [ô [ð [ð [ð [ð [ð [ð [øøøð [ð [ð [ð [øð (�	�	å-¨g°{ÀHÈiÑXÔX�	Ý	„IÐ)¨9Ñ5Ô5Ð5ØÐs   È(H<È<I 	ÉI 	c           	      ó2  — t          |j        ¦  «        }|                      t          |¦  «        ¦  «        }|D ]È}t          |¦  «        }|j        dk    r$d                     d„ |j        D ¦   «         ¦  «        }|dv r_t          d„ |D ¦   «         ¦  «        }|dhk    r|dk    r|                      |¦  «        }Œ€|dhk    r|dk    r|                      |¦  «        }Œ£t          | |||                      |¦  «        ¦  «        }ŒÉt          j	        d	|¦  «         |S )
NÚcomp_opr¥   c              3   ó$   K  — | ]}|j         V — Œd S rf   ra   )rC   rö   s     rF   ri   z infer_or_test.<locals>.<genexpr>Õ  s$   è è € ÐCÐC¨A ¤ÐCÐCÐCÐCÐCÐCrH   )ÚandÚorc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rf   )Ú
py__bool__)rC   Úlefts     rF   ri   z infer_or_test.<locals>.<genexpr>Ù  s,   è è € ÐAÐA°4˜TŸ_š_Ñ.Ô.ÐAÐAÐAÐAÐAÐArH   Tr"  Fzinfer_or_test types %s)
Úiterrs   rŒ   r  rn   ÚjoinÚsetr´   r   ry   )rU   Úor_testÚiteratorÚtypesr¤   rÇ   Ú
left_boolss          rF   rÁ   rÁ   Ï  s<  € Ý�GÔ$Ñ%Ô%€HØ×Ò�t H™~œ~Ñ.Ô.€EØð Að AˆÝ�X‘”ˆØŒ=˜IÒ%Ð%Ø—x’xÐCÐC°Ô1BÐCÑCÔCÑCÔCˆHð �}Ð$Ð$ÝÐAÐA¸5ÐAÑAÔAÑAÔAˆJØ˜d˜VÒ#Ð#Ø˜uÒ$Ð$Ø#×.Ò.¨uÑ5Ô5�EøØ ˜wÒ&Ð&Ø˜uÒ$Ð$Ø#×.Ò.¨uÑ5Ô5�Eøõ & g¨u°hØ&-×&8Ò&8¸Ñ&?Ô&?ñAô AˆEˆEå	„IÐ&¨Ñ.Ô.Ð.Ø€LrH   c              #   ó�  K  — | D ]À}|dk    r&t          |¦  «        r|                     ¦   «         V — Œ.|dk    rˆ|                     ¦   «         }|€Tt          |j        j                             d¦  «                             d¦  «        ¦  «                             ¦   «         V — Œžt          j
        |j        | ¦  «        V — Œ¼|V — ŒÁdS )z6
    Calculates `+`, `-`, `~` and `not` prefixes.
    r6   ÚnotNÚbool)r   Únegater%  rz   rN   rR   r½   r¿   r³   r   rî   )rÅ   r¤   rb   Úbs       rF   r¹   r¹   è  sí   è è € ð
 ð ð ˆØ�sŠ?ˆ?Ý˜ÑÔð %Ø—l’l‘n”nÐ$Ð$Ð$øØ˜ÒÐØ× Ò Ñ"Ô"ˆAØˆyÝ˜5Ô0Ô@×SÒSÐTZÑ[Ô[ß.Ò.¨tÑ4Ô4ñ6ô 6ß69²c±e´eð<ð <ð <ð <õ Ô3°EÔ4IÈqÈ5ÑQÔQÐQÐQÐQÐQàˆKˆKˆKˆKðð rH   c                 óÐ   — t           }|D ][}t          |¦  «        r7t          j        | |j        j        ¦  «        }||                     ¦   «         z  }ŒH|t          |g¦  «        z  }Œ\|S rf   )r   r   r   r¼   r’   Ústring_namerÀ   r   )rN   r‹   Ú
new_resultrÂ   Úclss        rF   Ú_literals_to_typesr7  ü  sq   € õ €JØð *ð *ˆÝ�c‰?Œ?ð 	*õ Ô,¨_¸c¼hÔ>RÑSÔSˆCØ˜#×1Ò1Ñ3Ô3Ñ3ˆJˆJà�( C 5™/œ/Ñ)ˆJˆJØÐrH   c                 ó   ‡ ‡‡‡— ‰ j         Št          ‰t          ¦  «        r‰}nt          ‰j        ¦  «        }|r‰s#|pt          ‰pt          z  }t          ‰|¦  «        S |dk    rBt          d„ t          j        |‰¦  «        D ¦   «         ¦  «        rt          j
        |‰f¦  «        S t          |¦  «        t          ‰¦  «        z  dk    rt          ‰|‰z  ¦  «        S t          j
        ˆ ˆˆˆfd„|D ¦   «         ¦  «        S )Nr=   c              3   ó�   K  — | ]A}|                      ¦   «         p(|                     ¦   «         pt          |t          ¦  «        V — ŒBd S rf   )Úis_classÚis_compiledrk   r'   )rC   rb   s     rF   ri   z$_infer_comparison.<locals>.<genexpr>  s`   è è € ð %ð %àð 	�ŠÑÔÐM˜E×-Ò-Ñ/Ô/ÐMµ:¸eÅWÑ3MÔ3Mð%ð %ð %ð %ð %ð %rH   é   c           	   3   óH   •K  — | ]}‰D ]}t          ‰‰|‰|¦  «        V — ŒŒd S rf   )Ú_infer_comparison_part)rC   r&  rÇ   rU   r¤   Úright_valuesrô   s      €€€€rF   ri   z$_infer_comparison.<locals>.<genexpr>"  s^   øè è € ð &ð &àØ)ð&ð &ð õ ' u¨g°t¸XÀuÑMÔMð&ð &ð &ð &ð &ð &ð &rH   )rN   rk   Ústrrb   r   r7  ÚallÚ	itertoolsÚchainr   Ú	from_setsrx   )rU   r  r¤   r?  Úoperator_strr‹   rô   s   ` ``  @rF   r´   r´     sD  øøøø€ ØÔ#€EÝ�(�CÑ Ô ð +Øˆˆå˜8œ>Ñ*Ô*ˆØð ˜lð àÐ*¥¨|Ð/H½yÑIˆÝ! %¨Ñ0Ô0Ð0Ø	˜Ò	Ð	¥ð %ð %å”_ [°,Ñ?Ô?ð%ñ %ô %ñ "ô "Ð	õ
 Ô! ;°Ð"=Ñ>Ô>Ð>õ
 ˆ{ÑÔ�c ,Ñ/Ô/Ñ/°!Ò3Ð3Ý% e¨[¸<Ñ-GÑHÔHÐHåÔ%ð &ð &ð &ð &ð &ð &ð &à'ð&ñ &ô &ñ ô ð rH   c                 ób  — |                       ddd¦  «        }|€dS |j        dv r)|j        }|�|j        | j        cxk    o
|j        k     nc S na|j        dk    rV|j        }t          |¦  «        dk    r<|d         j        dk    r+|d         j        | j        cxk    o|d         j        k     nc S dS )NÚparamÚfuncdefrš   F)rG  rH  rK   rª   )rè   rn   r   rt   ru   rs   rx   )r’   ÚancestorÚannrö   s       rF   rê   rê   )  sÕ   € Ø×#Ò# G¨Y¸ÑDÔD€HØÐØˆuà„}Ð,Ð,Ð,ØÔ!ˆØˆ?Ø”= D¤NÐ@Ð@Ò@Ð@°S´[Ò@Ð@Ð@Ð@Ð@ð à	Œ˜+Ò	%Ð	%ØÔˆÝˆq‰6Œ6�AŠ:ˆ:˜!˜Aœ$œ) {Ò2Ð2Ø�Q”4”> T¤^ÐBÐBÒBÐB°a¸´d´lÒBÐBÐBÐBÐBØˆ5rH   c                 ó   — | j         dk    S )Nrz   ©r	  ra   s    rF   Ú_is_listrM  9  s   € ØÔ˜vÒ%Ð%rH   c                 ó   — | j         dk    S )NÚtuplerL  ra   s    rF   Ú	_is_tuplerP  =  s   € ØÔ˜wÒ&Ð&rH   c                 óF   — t          j        | t          |¦  «        ¦  «        S rf   )r   r¼   r@  )rN   Úbool_s     rF   Ú_bool_to_valuerS  A  s   € ÝÔ% oµs¸5±z´zÑBÔBÐBrH   c                 ó>  — t          | t          j        ¦  «        sd S g }|                      ¦   «         D ]i}t          |t          ¦  «        s d S |j        }|j        dk    r d S 	 |                     t          |j	        ¦  «        ¦  «         ŒX# t          $ r Y  d S w xY w|S )Nr“   )rk   r   r¸   Ú
py__iter__r   Údatarn   ÚappendÚintrb   Ú
ValueError)rb   Únumbersr  r×   s       rF   Ú_get_tuple_intsr[  E  s»   € Ý�e�XÔ:Ñ;Ô;ð ØˆtØ€GØ×&Ò&Ñ(Ô(ð 	ð 	ˆ
Ý˜*¥mÑ4Ô4ð 	Ø�4�4ØŒˆØŒ9˜Ò Ð Ø�4�4ð	Ø�NŠN�3˜tœz™?œ?Ñ+Ô+Ð+Ð+øÝð 	ð 	ð 	Ø�4�4�4ð	øøøà€Ns   Á#'BÂ
BÂBc                 ó4  — t          |¦  «        }t          |¦  «        }t          |t          ¦  «        r|}nt          |j        ¦  «        }|dk    rtt          |t          j        ¦  «        st          |¦  «        rt          |g¦  «        S t          |t          j        ¦  «        st          |¦  «        rt          |g¦  «        S �nB|dk    r›|r|st          |¦  «        r%t          |¦  «        r|                     ||¦  «        S t          |¦  «        rt          |¦  «        st          |¦  «        r4t          |¦  «        r%t          t	          j        | ||f¦  «        g¦  «        S �n¡|dk    r|r|r|                     ||¦  «        S �n|dk    rt          |g¦  «        S |t          v �r.|                     ¦   «         r/|                     ¦   «         r|                     ||¦  «        }|r|S n¾|dv r?t          |         }	 |	||¦  «        }
|dv |
k    rt          t          | |
¦  «        g¦  «        S t          |t          ¦  «        rft!          |¦  «        }|�Ut#          j        j        |         | j        j        t+          |¦  «        ¦  «        }t          t          | |¦  «        g¦  «        S t          t          | d¦  «        t          | d¦  «        g¦  «        S |d	v r-| j                             d
¦  «                             |¦  «        S d„ }|dv r:||k    r4 ||¦  «        s) ||¦  «        sd}t3          j        |d||||fz  ¦  «         |                     ¦   «         s|                     ¦   «         rt8          S t:          |         }|                     |¦  «        }|r|                     |¦  «        }|r|S |s;t>          |         }|                     |¦  «        }|                     |¦  «        }|r|S t          ||g¦  «        }tA          j!        d||¦  «         |S )Nr7   r5   r6   r:   )Úisz!=ú==zis not)r]  r^  TF)Úinznot inr0  c                 óH   — t          | t          ¦  «        o| j        j        dv S )z4Checks if a Jedi object is either a float or an int.)rX  Úfloat)rk   r   r’   r4  )Úobjs    rF   Úcheckz%_infer_comparison_part.<locals>.check’  s'   € å˜#�|Ñ,Ô,ð 5ØŒHÔ Ð$4Ð4ð	5rH   )r5   r6   z7TypeError: unsupported operand type(s) for +: %s and %sztype-error-operationz Used operator %s resulting in %s)"r   rk   r@  rb   r   ÚSequencer   r   Úexecute_operationrM  rP  ÚMergedArrayr   r;  rS  r   r[  r   ÚaccessÚenvironmentÚversion_inforO  rR   r½   r¿   r   Úaddr:  r   Úoperator_to_magic_methodrÀ   Ú reverse_operator_to_magic_methodr   ry   )rN   rU   r&  r¤   rÇ   Úl_is_numÚr_is_numÚstr_operatorr‹   Ú	operationrR  ri  Úbool_resultrc  ÚmessageÚmethod_nameÚmagic_methodsÚreverse_method_names                     rF   r>  r>  V  s”  € Ý˜‰Œ€HÝ˜ÑÔ€HÝ�(�CÑ Ô ð +Øˆˆå˜8œ>Ñ*Ô*ˆà�sÒÐå�d�HÔ-Ñ.Ô.ð 	%µ)¸D±/´/ð 	%Ý˜T˜FÑ#Ô#Ð#Ý˜�xÔ0Ñ1Ô1ð 	%µY¸uÑ5EÔ5Eð 	%Ý˜U˜GÑ$Ô$Ð$ñ	%à	˜Ò	Ð	Øð 	T˜ð 	T¥I¨d¡O¤Oð 	T½	À%Ñ8HÔ8Hð 	TØ×)Ò)¨%°Ñ>Ô>Ð>Ý�d‰^Œ^ð 	T¥¨¡¤ð 	Tµ9¸T±?´?ð 	TÅyÐQVÑGWÔGWð 	TÝ�XÔ1°/ÀDÈ%À=ÑQÔQÐRÑSÔSÐSùØ	˜Ò	Ð	Øð 	?˜ð 	?Ø×)Ò)¨%°Ñ>Ô>Ð>ùØ	˜Ò	Ð	õ ˜˜ÑÔÐØ	Õ-Ð	-Ñ	-Ø×ÒÑÔð 	T %×"3Ò"3Ñ"5Ô"5ð 	Tà×+Ò+¨E°<Ñ@Ô@ˆFØð Ø�ðð Ð;Ð;Ð;Ý0°Ô>�	Ø!˜	 $¨Ñ.Ô.�ð ! LÐ0°UÒ:Ð:Ý#¥^°OÀUÑ%KÔ%KÐ$LÑMÔMÐMå˜$¥Ñ,Ô,ð TÝ.¨uÑ5Ô5�ØÐ+Ý"*¤/Ô"FÀxÔ"PØ'Ô3Ô@Ý˜lÑ+Ô+ñ#ô #�Kõ $¥^°OÀ[Ñ%QÔ%QÐ$RÑSÔSÐSåÝ˜?¨DÑ1Ô1Ý˜?¨EÑ2Ô2ð
ñ ô ð 	ð 
Ð)Ð	)Ð	)ØÔ.×AÒAÀ&ÑIÔI×\Ò\Øñ
ô 
ð 	
ð5ð 5ð 5ð �zÐ!Ð! h°(Ò&:Ð&:Ø�U˜4‘[”[ð ';Ø$) E¨%¡L¤Lð ';àKˆÝŒ�WÐ4°hØ  e˜}Ñ,ñ	.ô 	.ð 	.ð ‡}‚}�„ð ˜%Ÿ.š.Ñ*Ô*ð ÝÐå*¨<Ô8€KØ×+Ò+¨KÑ8Ô8€MØð Ø×2Ò2°5Ñ9Ô9ˆØð 	ØˆMàð Ý>¸|ÔLÐØ×0Ò0Ð1DÑEÔEˆà×2Ò2°4Ñ8Ô8ˆØð 	ØˆMå�t˜U�mÑ$Ô$€FÝ	„IÐ0°(¸FÑCÔCÐCØ€MrH   c                 óp
  — t           }|                     ¦   «         j        }|��²|                     ¦   «                              |j        g ¦  «        }d}|D �]{}|j        }|j        dk    �re|j        d         j        dk    �rNt          j
        |¦  «        |j        k    }	|j        d         }
|
j        d         }|                     ¦   «         }|	�r |                     d¦  «        së|                     ¦   «         dk    sÓ|j        dk    r)|
j        d         j        |j        k    r|j        r|j        }t          j        ||j        d         j        d         ¦  «        }d}t#          |¦  «        dk    rEt%          t'          |¦  «        ¦  «        }t)          |t*          ¦  «        o|j        j        t0          v  }|}||                     |¦  «        z  }�Œ}|r|S g }|                     dd¬	¦  «        }|€É|j        }|j        d
k    r‰|                     |¦  «        }|                     ¦   «         rt           S t%          |                     ¦   «         ¦  «        }|                     |j        ¦  «        }t=          j        d„ |D ¦   «         ¦  «        S |j        dvr%|                     |¦  «        }tA          ||¦  «        S |j        }|dk    rt          j!        |||¦  «        }|r|S |dk    rt          j"        |||¦  «        }|r|S |dv r™	 |j#        |         |j                 }�n# tH          $ rq tK          ||j        d         ¦  «        }tM          | '                    ¦   «         ||j        j        dk    ¬¦  «        }tQ          ||¦  «        }tS          ||¦  «        }Y �nœw xY w|dk    rtU          |||¦  «        }�n|dk    r±| +                    | ,                    |¦  «        ¦  «        }|j        j        dk    rO| -                    d¦  «        }| .                    ¦   «         }| /                    ¦   «          0                    ¦   «         S | -                    d¦  «        }|                     |¦  «        S |dv rtc          j2        ||¦  «        }n®|dv rtg          ||¦  «        }n™|dk    rN| +                    | 4                    ¦   «          4                    ¦   «         ¦  «        }| .                    ¦   «         }nE|dk    rt           }n7|dk    rt           }n)|dk    rtW          ||¦  «        }ntk          d|z  ¦  «        ‚|S )NFrš   rK   rª   z
.TypeAliasÚ	TypeAliasr’   T)Úimport_name_alwaysr  Úglobal_stmtc              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rf   )rw   )rC   r’   s     rF   ri   z&tree_name_to_values.<locals>.<genexpr>ë  s*   è è € Ð%EÐ%E°t d§j¢j¡l¤lÐ%EÐ%EÐ%EÐ%EÐ%EÐ%ErH   )Úimport_fromÚimport_namer_   Ú	with_stmt)r_   rä   rå   rã   Ú
async_stmt)Úcontextualized_nodeÚis_asyncÚ
__aenter__Ú	__enter__)rH  ÚclassdefÚtry_stmtrG  Údel_stmtr®   zShould not happen. type: %s)6r   Úget_root_contextrM   Úget_used_namesrq   rb   rm   rn   rs   r   Úget_parent_scopeÚget_codeÚendswithÚstriprP   r   r¾   rx   r  r'  rk   r%   r’   r4  r&   r¿   Úget_definitionÚcreate_contextÚ	is_moduleÚget_filtersr   rD  r°   Úfind_type_from_comment_hint_forÚ find_type_from_comment_hint_withrp   rT   r   r
   rw   r    r  r²   rŒ   Úget_test_node_from_namer½   rÀ   r¶   r·   r   Úinfer_importÚ_apply_decoratorsÚget_previous_siblingrY  )rN   rU   Ú	tree_namerÅ   Úmodule_nodeÚnamesÚfound_annotationr’   rš   Úcorrect_scopeÚ
ann_assignÚfirstÚcodeÚfoundÚset_found_annotationr,  r×   rö   ÚfilterrÂ   r  Ú	for_typesrX   Úvalue_managersÚenter_methodsÚcoroÚ
exceptionss                              rF   Útree_name_to_valuesr¦  µ  sh  € å€IØ×*Ò*Ñ,Ô,Ô6€KàÑØ×*Ò*Ñ,Ô,×0Ò0°´À"ÑEÔEˆØ ÐØð 	Cñ 	CˆDØœˆIàŒ~ Ò,Ñ,°Ô1CÀAÔ1FÔ1KÈ{Ò1ZÑ1ZÝ ,Ô =¸dÑ CÔ CÀwÔGXÒ X�Ø&Ô/°Ô2�
Ø"Ô+¨AÔ.�Ø—~’~Ñ'Ô'�Ø ñ C¨$¯-ª-¸Ñ*EÔ*Eð CØ-1¯ZªZ©\¬\¸[Ò-HÐ-Hàœ vÒ-Ð-Ø'Ô0°Ô3Ô9¸Y¼_ÒLÐLØ#Ô2ð Mð #*Ô"8˜Ý&Ô7Ø Ô!3°AÔ!6Ô!?ÀÔ!Bñô �Eð ,0Ð(Ý˜5‘z”z Q’�Ý $¥T¨%¡[¤[Ñ 1Ô 1˜å& uÕ.>Ñ?Ô?ð RØ %¤
Ô 6Õ:QÐ Qð0Ð,ð (<Ð$Ø ×!9Ò!9¸'Ñ!BÔ!BÑB�IùØð 	ØÐà€EØ×#Ò#°tÈTÐ#ÑRÔR€DØ€|ØÔˆØŒ9˜Ò%Ð%Ø×&Ò& yÑ1Ô1ˆAØ�{Š{‰}Œ}ð !õ !Ð õ ˜!Ÿ-š-™/œ/Ñ*Ô*ˆFØ—J’J˜yœÑ/Ô/ˆEÝÔ%Ð%EÐ%E¸uÐ%EÑ%EÔ%EÑEÔEÐEØŒYÐ<Ð<Ð<Ø×&Ò& yÑ1Ô1ˆAÝ˜a Ñ+Ô+Ð+à
Œ)€CØ
ˆjÒÐÝÔ:¸7ÀDÈ)ÑTÔTˆØð 	ØˆLØ
ˆkÒÐÝÔ;¸GÀTÈ9ÑUÔUˆØð 	ØˆLà
Ð7Ð7Ð7ð
	:ØÔ,¨TÔ2°9´?ÔCˆE‰EøÝð 	:ð 	:ð 	:Ý# G¨T¬]¸1Ô-=Ñ>Ô>ˆBÝ&Ø—’‘
”
Ø$&ØœÔ)¨\Ò9ðñ ô ˆIõ
 # 7¨IÑ6Ô6ˆAÝ+¨A¨yÑ9Ô9ˆEˆE‰Eð	:øøøð 
�Ò	Ð	Ý ¨¨yÑ9Ô9ˆ‰Ø	�Ò	Ð	Ø ×+Ò+¨D×,HÒ,HÈÑ,SÔ,SÑTÔTˆØŒ;Ô˜|Ò+Ð+ð +×=Ò=¸lÑKÔKˆMØ ×4Ò4Ñ6Ô6ˆDØ×#Ò#Ñ%Ô%×@Ò@ÑBÔBÐBØ&×9Ò9¸+ÑFÔFˆØ×/Ò/°Ñ8Ô8Ð8Ø	Ð.Ð	.Ð	.ÝÔ$ W¨iÑ8Ô8ˆˆØ	Ð'Ð	'Ð	'Ý! '¨4Ñ0Ô0ˆˆØ	�
Ò	Ð	ð ×'Ò'¨	×(FÒ(FÑ(HÔ(H×(]Ò(]Ñ(_Ô(_Ñ`Ô`ˆ
Ø×.Ò.Ñ0Ô0ˆˆØ	�ŠˆÝˆˆØ	�
Ò	Ð	ÝˆˆØ	Ð Ò	 Ð	 Ý˜7 DÑ)Ô)ˆˆåÐ6¸Ñ<Ñ=Ô=Ð=Ø€Ls   ÌL  Ì A7NÎNc                 ó  ‡	— |j         dk    rt          | j        | |¬¦  «        Š	nt          j        | |¦  «        Š	t          ‰	g¦  «        x}}t          | ¦  «        r|S t          |                     ¦   «         ¦  «        D �]i}t          j
        d||d¬¦  «         t          j        ¦   «         5  |                      |j        d         ¦  «        }|j        dd…         }|r-t          j        d	|¦  «        }||_        t#          | ||¦  «        }t%          |¦  «        sB|                     d
¬¦  «        }|dk    rt          j        d||¦  «         |cddd¦  «         c S |                     t-          j        |g¦  «        ¦  «        }t%          |¦  «        s%t          j        d|¦  «         |cddd¦  «         c S 	 ddd¦  «         n# 1 swxY w Y   t          j
        d|d¬¦  «         �Œk||k    rt          ˆ	fd„|D ¦   «         ¦  «        S |S )z†
    Returns the function, that should to be executed in the end.
    This is also the places where the decorators are processed.
    rƒ  )rP   rM   zdecorator: %s %sÚMAGENTA)ÚcolorrK   rA   r¢   rÆ   F)Úinclude_prefixz	@runtime
zdecorator not found: %s on %sNz)not possible to resolve wrappers found %szdecorator end %sc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rB   r"   )rC   rö   Údecoratee_values     €rF   rd   z%_apply_decorators.<locals>.<listcomp>X  s#   ø€ ÐGÐGÐG¸1� 1 oÑ6Ô6ÐGÐGÐGrH   )rn   r   rN   r   r±   r   r   ÚreversedÚget_decoratorsr   ry   Úincrease_indent_cmrŒ   rs   r   Ú
PythonNoderm   rµ   rx   r‰  rS   rÔ   r   ÚValuesArguments)
rU   r×   ÚinitialÚvaluesÚdecÚ
dec_valuesÚtrailer_nodesrÆ   r�  r¬  s
            @rF   r”  r”  *  s³  ø€ ð „y�JÒÐÝ$ØÔ#Ø"Øð
ñ 
ô 
ˆˆõ (Ô4°W¸dÑCÔCˆÝ Ð 1Ñ2Ô2Ð2€Gˆfå˜wÑ'Ô'ð Øˆå˜×+Ò+Ñ-Ô-Ñ.Ô.ð ?ñ ?ˆÝŒ	Ð$ c¨6¸ÐCÑCÔCÐCÝÔ%Ñ'Ô'ð 	ð 	Ø ×+Ò+¨C¬L¸¬OÑ<Ô<ˆJØœL¨¨2¨Ô.ˆMØð Iåœ/¨)°]ÑCÔC�Ø!$�”Ý*¨7°JÀÑHÔH�
å�z‘?”?ð Ø—|’|°5�|Ñ9Ô9�ð ˜<Ò'Ð'Ý”MÐ"AÀ3ÈÑMÔMÐMØð!	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð$  ×'Ò'­	Ô(AÀ6À(Ñ(KÔ(KÑLÔLˆFÝ�v‘;”;ð Ý”ÐIÈ4ÑPÔPÐPØð+	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð&ð'	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ. 	Œ	Ð$ f°IÐ>Ñ>Ô>Ð>Ñ>Ø�ÒÐÝÐGÐGÐGÐGÀÐGÑGÔGÑHÔHÐHØ€Ms   Â,B!GÅAGÇG		ÇG		c                 ó²  — d}|                       ¦   «         D ]¿\  }}t          | j        |¦  «        }|                     |¦  «        }t	          |t
          ¦  «        r	t          c S d}d}||k    rT	 t          |¦  «        }||j        z  }n3# t          $ r& |�| 
                    ¦   «         cY c S t          cY c S w xY w||k    °T| 
                    ¦   «         }ŒÀ|S )z(
    Checks if tuples are assigned.
    Nr   )Úassignment_indexesr   rP   r  rk   Úslicer   r  ÚmaxÚStopIterationrw   )r’   rÅ   r  Úindexr×   r  Úiteratedrg   s           rF   r  r  \  s  € ð €JØ×.Ò.Ñ0Ô0ð 'ð '‰ˆˆtÝ Ô 3°TÑ:Ô:ˆØ×$Ò$ RÑ(Ô(ˆÝ�e�UÑ#Ô#ð 	åÐÐÐØˆØˆ
Ø�5Šjˆjð$Ý! (™^œ^�
ð �Z”^Ñ#��øõ !ð 
!ð 
!ð 
!ð Ð)Ø%×+Ò+Ñ-Ô-Ð-Ð-Ð-Ð-Ð-õ !Ð Ð Ð Ð Ð ð
!øøøð �5Šjˆjð  ×$Ò$Ñ&Ô&ˆ	ˆ	ØÐs   Á/B	Â	 B9Â-B9Â8B9c                   ó   — e Zd Zd„ ZdS )r  c                 ó6   — t          | j        | j        ¦  «        S rf   )rÒ   rU   r×   )Úselfs    rF   rw   z%ContextualizedSubscriptListNode.infer~  s   € Ý$ T¤\°4´9Ñ=Ô=Ð=rH   N)Ú__name__Ú
__module__Ú__qualname__rw   rB   rH   rF   r  r  }  s#   € € € € € ð>ð >ð >ð >ð >rH   r  c                 óš  — |dk    r%t          t          j        | ddd¦  «        g¦  «        S |j        dk    rÍ|j        d         dk    s¼g }|j        D ]y}|dk    r|s|                     d¦  «         Œ |j        dk    r9t          |j        ¦  «        dk    r |                     |j        d         ¦  «         Œd|                     |¦  «         Œz|dgd	t          |¦  «        z
  z  z  }t          t          j        | g|¢R Ž g¦  «        S |j        d
k    r)t          t          j        | j        | |¦  «        g¦  «        S |  	                    |¦  «        S )z,
    Handles slices in subscript nodes.
    râ   NÚ	subscriptr   rÎ   ÚsliceoprA   rK   rã   r
  )
r   r   ÚSlicern   rs   rW  rx   r¸   rN   rŒ   )rU   r¼  r‹   Úels       rF   rÒ   rÒ   ‚  s^  € ð �‚|€|å�œ¨°°t¸TÑBÔBÐCÑDÔDÐDà	Œ�{Ò	"Ð	"¨5¬>¸!Ô+<ÀÒ+CÐ+Cð ˆØ”.ð 	"ð 	"ˆBØ�SŠyˆyØð (Ø—M’M $Ñ'Ô'Ð'øØ”˜IÒ%Ð%Ý�r”{Ñ#Ô# qÒ(Ð(Ø—M’M "¤+¨a¤.Ñ1Ô1Ð1øà—’˜bÑ!Ô!Ð!Ð!Ø�4�&˜A¥ F¡¤™OÑ,Ñ,ˆå�œ¨Ð9°&Ð9Ð9Ð9Ð:Ñ;Ô;Ð;Ø	Œ�Ò	&Ð	&Ý�Ô6°wÔ7NÐPWÐY^Ñ_Ô_Ð`ÑaÔaÐað ×Ò˜eÑ$Ô$Ð$rH   rf   )VÚ__doc__r|   rB  Úparso.pythonr   Újedir   r   Újedi.inference.base_valuer   r   r   r	   r
   Újedi.inference.lazy_valuer   Újedi.inferencer   r   r   r   r   Újedi.inference.valuer   r   r   Ú#jedi.inference.value.dynamic_arraysr   r   r   Újedi.inference.helpersr   r   r   r   r   Újedi.inference.compiled.accessr   Újedi.inference.cacher   Ú!jedi.inference.gradual.stub_valuer   Újedi.inference.gradualr   Újedi.inference.namesr    Újedi.inference.contextr!   Újedi.inference.value.decoratorr#   Újedi.pluginsr$   Újedi.inference.gradual.typingr%   r&   Újedi.inference.gradual.type_varr'   rk  Úitemsrl  r\   rŒ   r~   rŽ   Úincrease_indentrl   rµ   r°   r²   rý   rÁ   r¹   r7  r´   rê   rM  rP  rS  r[  r>  Údecorater¦  r”  r  r  rÒ   rB   rH   rF   ú<module>rß     s  ððð ð €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð*ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *ð *à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "Ø $Ð $Ð $Ð $Ð $Ð $Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø )Ð )Ð )Ð )Ð )Ð )Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ -Ð -Ð -Ð -Ð -Ð -ð/ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /ð /à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø =Ð =Ð =Ð =Ð =Ð =Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø -Ð -Ð -Ð -Ð -Ð -Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ 3Ð 3Ð 3Ð 3Ð 3Ð 3ð 
Ø	Ø	Ø	Ø	Ø
Ø	Ø
Ø
Ø
Ø	Ø	Ø	ðð Ð ð $ð $Ø!9×!?Ò!?Ñ!AÔ!Að$ñ $ô $Ð  ð
ð ð ðBE=ð E=ð E=ðP
0ð 
0ð 
0ð Ð iÐ0Ñ0Ô0ð)ð )ñ 1Ô0ð)ð ÔØðM/ð M/ñ Ôñ ÔðM/ð`-ð -ð -ð0R%ð R%ð R%ðj ð
ð 
ð 
ñ Ôð
ð ÔðJð Jð Jñ ÔðJðZð ð ð2 ðð ñ Ôðð&ð ð ðð ð ð<ð ð ð &ð &ð &ð'ð 'ð 'ðCð Cð Cðð ð ð"\ð \ð \ð~ €ÔÑÔðoð oñ Ôðoðh ÐÑÔð.ð .ñ  Ôð.ðbð ð ðB>ð >ð >ð >ð >Ð&8ñ >ô >ð >ð
%ð %ð %ð %ð %rH   