
    ^hߍ                     (   S r SSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	J
r
JrJrJr  SSKJr  SSKJr  SS	KJr  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  SSKJr  SSKJrJ r J!r!J"r"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSSSSSS S!S"S#S$S%S&S'.r4\4Rk                  5        V Vs0 s H  u  pU S(US)S -   _M     snn r6S* r7S+ r8S, r9\'" \
S-9S. 5       r:\Rv                  \7S/ 5       5       r<S0 r=S1 r>\7SDS2 j5       r?\Rv                  SDS3 j5       r@S4 rA\S5 5       rBS6 rCS7 rDS8 rES9 rFS: rGS; rHS< rIS= rJ\3R                  " 5       S> 5       rL\'" 5       S? 5       rMS@ rN " SA SB\5      rOSC rPgs  snn f )Ez&
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__add____sub____mul__
__matmul____truediv____floordiv____mod____pow__
__lshift__
__rshift____and____or____xor__)+-*@/z//%**z<<z>>&|^__r   c                    ^  U 4S jnU$ )ac  
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                 ~  > U R                   nU R                  n UR                  U==   S-  ss'   SnU R                  c"  U R	                  5       UR
                  L a  US-  nUR                  U   U:  a  [        R                  " SU5        [        $  T" U /UQ70 UD6$ ! [         a    SUR                  U'    N'f = f)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nrB   maximumfuncs         T/home/james-whalen/.local/lib/python3.13/site-packages/jedi/inference/syntax_tree.pywrapper$_limit_value_infers.<locals>.wrapper@   s    !11	;33A6!;6G%%-))+/N/NN
 366q9GCKQO   D
 G-d-f--  	;9:O33A6	;s   A7B   B<;B< )rN   rP   s   ` rO   _limit_value_infersrS   7   s    .* N    c                 H  ^ [        U [        5      (       a  [        X5      $ UnUb@  UR                  nUR                  S;   a  O#[
        R                  " U5      (       a  S nOUb  M@  U R                  R                  U5      nUGc  U(       Ga  UR                  S:X  Ga  U R                  R                  (       Ga  UR                  S   n0 /nUR                  UR                  :  Ga5  [        U5      n[        U5      nU Vs/ s H  oR                  PM     snm[!        U4S jU 5       5      (       a  U H  n	U R                  R#                  X	5      n
[%        U
5      S:  a  [%        U5      [%        U
5      -  S:  a  [&        R(                  " SU5        0 /n  O[+        U5      n/ nU
 HS  n[+        U5      n[-        U5       H2  u  pUR/                  5       X'   [1        U/5      X   U	R                  '   M4     X]-  nMU     M  U H  nXU	R                  '   M     M     [%        U5      S:  a9  [2        nU H+  nU R5                  X/5         U[        X5      -  nS S S 5        M-     U$ [7        X5      $ U(       a  [        X5      $ [7        X5      $ s  snf ! , (       d  f       Mm  = f)N)if_stmtfor_stmtrV   r?   c              3   @   >#    U  H  oR                   T;   v   M     g 7fNvalue).0istr_element_namess     rO   	<genexpr>infer_node.<locals>.<genexpr>v   s     BA77//s      z,Too many options for if branch inference %s.)
isinstancer!   _infer_nodeparenttyper   is_scopepredefined_namesgetrB   is_analysischildren	start_posend_posr   r[   anyinferlenr   dbglist	enumeratecopyr   r   predefine_names_infer_node_if_inferred)rI   elementrV   predefined_if_name_dictif_stmt_test
name_dictsif_nameselement_nameseif_namedefinitionsoriginal_name_dicts
definitionnew_name_dictsr]   	name_dictresultr^   s                    @rO   
infer_noder   X   sk   '>**7,,G

..<<22  ))G 
 &66::7C &7	)g.E.E.Q.Q.Q''*T

 |333 )6H-g6M2? @-Q- @BBBB'G")"9"9"?"?"QK ;'!+z?S-==B!II&TV]^ +-J!.2:.>+%'
*5J-12E-FN09.0I4=NN4D 1CKZLCY 1'-- @ 1J '8J +6 *4I7Bgmm4 *41  (4 z?QF'	,,W@k';;F A@ ( M*7<<"w00*7<<Q !A> A@s   JJ
J!	c                     UnUb:  UR                   nU R                  R                  U5      nUb  [        X5      $ Ub  M:  [	        X5      $ )z9
TODO This function is temporary: Merge with infer_node.
)rd   rg   rh   rc   _infer_node_cached)rI   rv   rd   rw   s       rO   ru   ru      sU     F

")":":">">v"F".w00	 

 g//rT   )defaultc                     [        X5      $ rY   )rc   )rI   rv   s     rO   r   r      s    w((rT   c                    [         R                  " SXR                  U 5        U R                  nUR                  nUS;   a  [        X5      $ US:X  a   [        [        R                  " X5      /5      $ US:X  a  [        X5      $ US;   a  UR                  S   nUR                  SS  nSnUR                  S	:X  a#  UR                  S
:X  a  SnUR                  S5      nU R                  U5      n[        U5       H=  u  pU	S:X  a&  U R                  XXS-      5      n
[        U UU	U
5      n  O[!        XU	5      nM?     U(       a  UR#                  5       R%                  5       $ U$ US;   a!  [        [&        R(                  " X U5      /5      $ US;   aA  U R                  UR                  S   5      nUR                  S S  H  n[+        X{5      nM     U$ US:X  a=  U R                  UR                  S   5      U R                  UR                  S   5      -  $ US:X  ad  UR                  S:w  a3  UR,                  n[/        S[1        UR                  5      < SU< S35      e[        [2        R4                  " US5      /5      $ US:X  aB  [        XR                  S   5      nUR                  SS S2    H  nUR7                  XS9nM     U$ US:X  a  U R                  UR                  S   5      $ US:X  a1  [8        R:                  " XR                  S   5      R=                  5       $ US:X  a  [?        UR                  5      (       aw  UR                  S   R                  S:X  aZ  UR                  S   R                  S   nU R                  U5      R7                  S5      RA                  5       nUR%                  5       $ [B        $ US:X  a  U R                  UR                  S   5      $ [E        X5      $ ) Nzinfer_node %s@%s in %s)namenumberstringatomstringskeywordfstringlambdef	expr_stmt)power	atom_exprr   r?   Fr   awaitTr7   )testlist_star_exprtestlist)not_testfactortestoperatorz...zunhandled operator z in  Ellipsisdotted_namer<   )name_context
eval_input	annassign
yield_expr	yield_arg__iter__namedexpr_test)#r   rp   rk   rB   re   
infer_atomr   r   from_contextinfer_expr_stmtrj   r[   popr   rr   _infer_comparisoninfer_trailerpy__await__py__stop_iteration_returnsr   SequenceLiteralValueinfer_factorrd   AssertionErrorreprr   builtin_from_namepy__getattribute__r   infer_annotationexecute_annotationro   execute_with_valuesr   infer_or_test)rI   rv   rB   typfirst_childrj   	had_await	value_setr]   trailerrightr   origin	next_name
generatorss                  rO   rc   rc      s    
II&1B1BGL--O
,,C
SS'++			33GEFGG		w00	&	&&&q)##AB'	y([->->'-II",,q/K&&{3	%h/LQ$**8E?;-		 %g'BI 0 ((*EEGG	3	366QXYZ[[	&	&&&w'7'7';<	(("-H$Y9I .	""7#3#3A#67$$W%5%5b%9:; 	<	
	==E!^^F 4CVX^!_``33OZPQRR		w(8(8(;<	 ))!$Q$/I!44Y4UI 0		!!'"2"21"566		**74D4DQ4GH!	"		w  W%5%5a%8%=%=%L&&q)2215G ++G4##J/0C0C0E 88:: 	 	 !!'"2"21"566W..rT   c                    UR                   S S u  p4US:X  a  S nUS:X  a3  UR                   u  p4nUR                  [        X5      [        X5      5      $ [        R
                  " SX!5        US:X  a  UR                  U US9$ US:X  d
   SU-  5       e[        R                  " U R                  XU5      nUR                  U5      $ )	Nr<   )[zinfer_trailer: %s in %s.)r   name_or_str(ztrailer_op is actually %s)rj   get_item_infer_subscript_listr   r   rp   r   r   TreeArgumentsrB   execute)rI   atom_valuesr   
trailer_opnode_rJ   s          rO   r   r     s    ''+Js{S%..
!##!'0w0
 	

 			+WB11$  2  
 $N&AJ&NN$**7+B+BGSZ[D&&t,,rT   c                   ^ U R                   nTR                  S:X  a  [        R                  " TSSS5      =(       d    TnUR                  S:X  a+  [	        U4S jUR                  5        5       5      (       d  TnOUR                  S:X  a  TnUR                  n[        T5      (       a  SnU R                  TUS9$ TR                  S:X  a[  TR                  S	;   a+  [        [        R                  " UTR                  5      /5      $ TR                  S
:X  a  [        $  ST-  5       e[        T[        R                  5      (       aE  UR                   R#                  TR                  5      n[        [        R$                  " X%5      /5      $ TR                  S:X  aI  ['        U TR(                  S   5      nTR(                  SS  H  n['        X5      n[+        XSU5      nM     U$ TR                  S:X  a  [        R,                  " U5      $ TR(                  nUS   S:X  aR  [/        U5      S:X  dC  US   R                  S:X  a  [/        US   R(                  5      S:  d  U R1                  US   5      $  US   R(                  S   n	U	S:X  a   US   R(                  S   n	U	R                  S;   a!  [        [4        R6                  " X T5      /5      $  US   n
 U
R(                  nUS   S:X  a*  U
S:X  d  SU;   d  SU;   a  [4        R:                  " X T5      nO[4        R<                  " X T5      n[        U/5      $ ! [2         a     Nf = f! [2        [8        4 a     Nf = f! [8         a    / n Nf = f)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   rV   c              3      >#    U  H7  oR                   TR                   s=:*  =(       a    UR                  :  Os  v   M9     g 7frY   )rk   rl   )r\   rL   r   s     rO   r_   infer_atom.<locals>.<genexpr>%  s-     `J_Q{{dnn@@qyy@@J_s   ?ANpositionr   )FalseTrueNoneyieldzCannot infer the keyword %sr   r   r?   r1   r   r   r<   testlist_comp:   )comp_forsync_comp_for{}r7   )rB   re   r   search_ancestorrm   get_test_nodesrk   _is_annotation_namer   r[   r   r   r   r   rb   Literalcompiled_subprocesssafe_literal_evalcreate_simple_objectr   rj   r   get_string_value_setro   r   
IndexErrorr   comprehension_from_atomAttributeErrorDictLiteralValuer   )rI   r   statestmtr   r   r   r   cr   
array_nodearray_node_c	new_values    `           rO   r   r     s0    ##EyyF##D+y)LTPT99	!`$J]J]J_```YY)#D>>t$$ H))$)BB	i	::22X77tzzJKLLZZ7" :3d::u	D$,,	'	'**<<TZZH66uEFGG	i	wa(89	mmAB'Fw/E)'c5II ( 	i	,,U33MMQ43;s1v{1o5 1/!3%%ad++	t}}Q'H 3 t}}Q/H }} ==!A!AD" !   > qT
	%..L Q43;J#-1D#|3 11%$GI 55edKI$$' "  N+ 		&  	L	s6   1M 
L6 M 6
MMMMM+*M+c                     [         R                  " U R                  U5       nU(       aA  Ub)  [        R                  " XU5      nU(       a  UsS S S 5        $ [        XU5      sS S S 5        $  S S S 5        [        $ ! , (       d  f       [        $ = frY   )r   execution_allowedrB   r   "find_type_from_comment_hint_assign_infer_expr_stmtr   )rI   r   	seek_nameallowedpep0484_valuess        rO   r   r   o  s    		$	$W%<%<d	Cw$AA'QZ[ !) 
D	C $G9= 
D	C 
D  
D	C s   *A:A::
Bc                   ^ ^^^ S n[         R                  " SX5        UR                  5       nT R                  U5      mU(       a  [	        T U5      n[        UT5      m[        UR                  5       S5      nU" U5      u  nmUS;  =(       a    UR                  S:H  nU(       d  U(       Ga  UR                  SS9S   R                  n	T R                  XR                  S	9n
U(       a  U UU4S
 jm[        U4S jU
 5       5      mGO5[        R                  " U5      nUR                  SS Ul
        [        R                   " US5      nUb  UR                  S:X  a  T(       a  ["        R$                  " U5      (       a  UR'                  5       n[)        T U5      n[+        UR-                  5       R/                  U5      5      nU He  nUR0                  S   R                  UR-                  5       0nT R3                  UU5         T R                  U5      n[5        T XU5      n
SSS5        Mg     U
mO[5        T XT5      m[         R                  " ST5        T$ ! , (       d  f       M  = f)a  
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                    U R                   S   nUR                  S;  a  gUR                   S   nUR                  S:w  d  [        UR                   5      S:w  a  gUR                   S   nUR                   S   S:H  UR                   S   4$ )	Nr   )r   r   )FNr   r<   r   r   r?   )rj   re   ro   )r   r   r   r   s       rO   check_setitem'_infer_expr_stmt.<locals>.check_setitem  s    MM!$	>>!77!!!$99#i&8&8"9Q">$$R("c)7+;+;A+>>>rT   zinfer_expr_stmt %s (%s)N)=Nr   T)include_setitemr   r   c                    > [        TT5      nU R                  S:X  a  [        U TU5      $ U R                  S:X  a  [        U TU5      $ U $ )Ndictrq   )ContextualizedSubscriptListNode
array_typer   r   )vr   rI   subscriptlistr   s     rO   to_mod _infer_expr_stmt.<locals>.to_mod  sJ    3G]K<<6)+Ay!<<\\V++Ay!<<rT   c              3   4   >#    U  H  nT" U5      v   M     g 7frY   rR   )r\   r  r  s     rO   r_   #_infer_expr_stmt.<locals>.<genexpr>  s      @KqKs   r   rW   r?   zinfer_expr_stmt result %s)r   rp   get_rhsr   r    check_tuple_assignmentsnextyield_operatorsre   get_defined_namesr[   r   rk   r   rs   r   r   r   for_stmt_defines_one_nameget_testlistr   rq   rn   iteraterj   rt   r   )rI   r   r   r   rhsrL   first_operator
is_setitemis_annassignr   left_valuesr   rW   r   cnordered
lazy_valuedcttr  r  r   s   `                  @@@rO   r   r   }  s	    ? 
II'9
,,.C""3'Iw	2+Ay9	$..0$7N -d 3J!4Z9L9LPZ9ZLz%%d%;A>DD000O ! @K @@Iyy0H%^^CR0HN++D*=H#(C	$>>xHH  ,,.'6rxxz11"56")J#,,Q/55z7G7G7IJC 003?#..s3&7XY&Z @? #*
 (	-g{iX		II)95 @?s   I
I&	c           	         [        UR                  5      nU R                  [        U5      5      nU H  n[        U5      nUR                  S:X  a"  SR                  S UR                   5       5      nUS;   aX  [        S U 5       5      nUS1:X  a  US:X  a  U R                  U5      nMx  Mz  US1:X  a  US:w  a  U R                  U5      nM  M  M  [        XUU R                  U5      5      nM     [        R                  " S	U5        U$ )
Ncomp_opr   c              3   8   #    U  H  oR                   v   M     g 7frY   rZ   )r\   r   s     rO   r_    infer_or_test.<locals>.<genexpr>  s     C1BA1Bs   )andorc              3   @   #    U  H  oR                  5       v   M     g 7frY   )
py__bool__)r\   lefts     rO   r_   r    s     A54__..5   Tr  Fzinfer_or_test types %s)
iterrj   r   r  re   joinsetr   r   rp   )rI   or_testiteratortypesr   r   
left_boolss          rO   r   r     s   G$$%HtH~.EX==I%xxC1B1BCCH }$A5AAJdV#u$#..u5E %w&u$#..u5E % '
 &gh&-&8&8&?AE! $ 
II&.LrT   c              #     #    U  H  nUS:X  a&  [        U5      (       a  UR                  5       v   M-  M/  US:X  a  UR                  5       nUcN  [        UR                  R
                  R                  S5      R                  5       5      R                  5       v   M  [        R                  " UR                  U(       + 5      v   M  Uv   M     g7f)z.
Calculates `+`, `-`, `~` and `not` prefixes.
r2   notNbool)r   negater"  rq   rB   rF   r   r   r   r   r   )r   r   r[   bs       rO   r   r     s     
 s?lln$    "Ay500@@SSTZ[..0225#%8 33E4I4Iq5QQK s   CCc                     [         nU H`  n[        U5      (       a>  [        R                  " XR                  R
                  5      nX$R                  5       -  nMQ  U[        U/5      -  nMb     U$ rY   )r   r   r   r   r   string_namer   r   )rB   r   
new_resultr   clss        rO   _literals_to_typesr5    sa     Jc?? ,,_hh>R>RSC1133J(C5/)J  rT   c                   ^ ^^^ T R                   m[        T[        5      (       a  TnO[        TR                  5      nU(       a  T(       d+  U=(       d    [        T=(       d    [        -  n[        TU5      $ US:X  aD  [        S [        R                  " UT5       5       5      (       a  [        R                  " UT45      $ [        U5      [        T5      -  S:  a  [        TUT-  5      $ [        R                  " U UUU4S jU 5       5      $ )Nr9   c              3   p   #    U  H,  nUR                  5       =(       d    UR                  5       v   M.     g 7frY   )is_classis_compiled)r\   r[   s     rO   r_   $_infer_comparison.<locals>.<genexpr>  s/      %?E 	/E--//?s   46   c           	   3   V   >#    U  H  nT  H  n[        TTUTU5      v   M     M      g 7frY   )_infer_comparison_part)r\   r#  r   rI   r   right_valuesr   s      rO   r_   r:    s6      &'D)E 'ugtXuMM) N's   &))rB   rb   strr[   r   r5  all	itertoolschainr   	from_setsro   )rI   r  r   r>  operator_strr   r   s   ` ``  @rO   r   r     s    ##E(C  8>>*l*|/HyI!%00		 %__[,?% " "
 !!;"=>>
 {c,//!3%e[<-GHH%% &'&  rT   c                    [         R                  " U SSS5      nUc  gUR                  S;   aD  UR                  nUb3  UR                  U R                  s=:*  =(       a    UR
                  :  $ s  $  gUR                  S:X  ag  UR                  n[        U5      S:  aL  US   R                  S:X  a9  US   R                  U R                  s=:*  =(       a    US   R
                  :  $ s  $ g)Nparamfuncdefr   F)rF  rG  r?   r   )r   r   re   r   rk   rl   rj   ro   )r   ancestorannr   s       rO   r   r   %  s    ##D'9kJH}},,!!?==DNN@@S[[@@@@  	 
+	%q6A:!A$)){2Q4>>T^^BBadllBBBBrT   c                      U R                   S:H  $ )Nrq   r  rZ   s    rO   _is_listrL  5  s    v%%rT   c                      U R                   S:H  $ )NtuplerK  rZ   s    rO   	_is_tuplerO  9  s    w&&rT   c                 B    [         R                  " U [        U5      5      $ rY   )r   r   r?  )rB   bool_s     rO   _bool_to_valuerR  =  s    %%os5zBBrT   c                 N   [        U [        R                  5      (       d  g / nU R                  5        H]  n[        U[        5      (       d    g UR
                  nUR                  S:w  a    g  UR                  [        UR                  5      5        M_     U$ ! [         a       g f = f)Nr   )rb   r   r   
py__iter__r   datare   appendintr[   
ValueError)r[   numbersr  r   s       rO   _get_tuple_intsrZ  A  s    eX::;;G&&(
*m4499 	NN3tzz?+ ) N  		s   ,$B
B$#B$c                    [        U5      n[        U5      n[        U[        5      (       a  UnO[        UR                  5      nUS:X  ax  [        U[        R
                  5      (       d  [        U5      (       a  [        U/5      $ [        U[        R
                  5      (       d  [        U5      (       a  [        U/5      $ GO0US:X  a  U(       a  U(       d   [        U5      (       a!  [        U5      (       a  UR                  XG5      $ [        U5      (       a  [        U5      (       d   [        U5      (       a2  [        U5      (       a"  [        [        R                  " XU45      /5      $ GOUS:X  a!  U(       a  U(       a  UR                  XG5      $ GO`US:X  a  [        U/5      $ U[        ;   Ga  UR                  5       (       a0  UR                  5       (       a  UR                  XG5      nU(       a  U$ OUS;   a/  [        U   n	U	" X$5      n
US;   U
:X  a  [        [        X
5      /5      $ [        U[        5      (       ad  [!        U5      nUbV  ["        R$                  R                  U   " U R&                  R(                  [+        U5      5      n[        [        X5      /5      $ [        [        U S5      [        U S5      /5      $ US	;   a)  U R,                  R/                  S
5      R1                  5       $ S nUS;   a>  XV:w  a9  U" U5      (       d,  U" U5      (       d  Sn[2        R4                  " USUXU4-  5        UR7                  5       (       d  UR7                  5       (       a  [8        $ [:        U   nUR/                  U5      nU(       a  UR=                  U5      nU(       a  U$ U(       d4  [>        U   nUR/                  U5      nUR=                  U5      nU(       a  U$ [        X$/5      n[@        RB                  " SX85        U$ )Nr3   r1   r2   r6   )isz!===zis not)r\  r]  TF)inznot inr.  c                 b    [        U [        5      =(       a    U R                  R                  S;   $ )z4Checks if a Jedi object is either a float or an int.)rW  float)rb   r   r   r2  )objs    rO   check%_infer_comparison_part.<locals>.check  s)    #|, 5HH  $44	5rT   )r1   r2   z7TypeError: unsupported operand type(s) for +: %s and %sztype-error-operationz Used operator %s resulting in %s)"r   rb   r?  r[   r   Sequencer   r   execute_operationrL  rO  MergedArrayr   r9  rR  r   rZ  r   accessenvironmentversion_inforN  rF   r   r   r   addr8  r   operator_to_magic_methodr    reverse_operator_to_magic_methodr   rp   )rB   rI   r#  r   r   l_is_numr_is_numstr_operatorr   	operationrQ  ri  bool_resultrb  messagemethod_namemagic_methodsreverse_method_names                     rO   r=  r=  R  sf   HH(C  8>>*sdH--..)D//TF##x0011Yu5E5EUG$$ 6F		IdOO	%8H8H))%>>d^^9T??yQVGWGWX11/%=QRSS		))%>>		 	-	-%"3"3"5"5++E@F  ;;0>	!$. !L0U:#^O%K$LMM$,,.u5+"*//"F"Fx"P'33@@l+#K $^O%Q$RSS?D1?E2
  	 
)	)..AA&I\\^^5 z!h&:4[[E%LLKW4he},	. }}%..***<8K++K8M2259M>|L001DE2248Mtm$F	II0(CMrT   c                 ^	   [         nUR                  5       R                  nUGb\  UR                  5       R	                  UR
                  / 5      nSnU GH   nUR                  nUR                  S:X  d  M"  UR                  S   R                  S:X  d  MA  [        R                  " U5      UR                  :H  n	UR                  S   n
U	(       d  M|  SnU
R                  S   R                  S:X  aD  U
R                  S   R
                  UR
                  :X  a  UR                  (       a  UR                  nU[        R                  " XR                  S   R                  S   5      R                  5       -  nGM#     U(       a  U$ / nUR                  SSS9nUc  UR                  nUR                  S:X  a}  UR!                  U5      nUR#                  5       (       a  [         $ [%        UR'                  5       5      nUR	                  UR
                  5      n[(        R*                  " S	 U 5       5      $ UR                  S
;  a  UR!                  U5      n[-        X5      $ UR                  nUS:X  a   [        R.                  " XU5      nU(       a  U$ US:X  a   [        R0                  " XU5      nU(       a  U$ US;   a   UR2                  U   UR
                     nU$ US:X  a  [A        XU5      nU$ US:X  a  URC                  URE                  U5      5      nUR                  R                  S:X  a?  URG                  S5      nURI                  5       nURK                  5       RM                  5       $ URG                  S5      nURI                  5       $ US
;   a  [N        RP                  " X5      nU$ US;   a  [S        X5      nU$ US:X  a?  URC                  URU                  5       RU                  5       5      nURI                  5       nU$ US:X  a  [         nU$ US:X  a  [         nU$ US:X  a  [C        X5      nU$ [W        SU-  5      e! [4         ac    [7        XR                  S   5      n[9        UR;                  5       UUR                  R                  S:H  S9n[=        X5      n[?        UU5      n U$ f = f)NFr   r?   r   Tr   )import_name_alwaysr   global_stmtc              3   @   #    U  H  oR                  5       v   M     g 7frY   )rn   )r\   r   s     rO   r_   &tree_name_to_values.<locals>.<genexpr>  s     %Eutjjllur$  )import_fromimport_namerW   	with_stmt)rW   r   r   r   
async_stmt)contextualized_nodeis_async
__aenter__	__enter__)rG  classdeftry_stmtrF  del_stmtr   zShould not happen. type: %s),r   get_root_contextrA   get_used_namesrh   r[   rd   re   rj   r   get_parent_scoperD   r   r   r   get_definitioncreate_context	is_moduler  get_filtersr   rC  r   find_type_from_comment_hint_for find_type_from_comment_hint_withrg   rH   r   r
   rn   r    r
  r   r   get_test_node_from_namer   r   r   r   r   infer_import_apply_decoratorsget_previous_siblingrX  )rB   rI   	tree_namer   module_nodenamesfound_annotationr   r   correct_scope
ann_assignr*  r   r   filterr   r  	for_typesrL   value_managersenter_methodscoro
exceptionss                          rO   tree_name_to_valuesr    sk   I**,66K**,00"E DI~~,1C1CA1F1K1K{1Z , = =d CwGXGX X&//2
 ='+$#,,Q/44>'00399Y__L#22")"8"8!<!<!3!3A!6!?!?!B"((*+I " E##tT#RD|99%&&y1A{{}} !  !--/*FJJy/E%%%Eu%EEEYY<<&&y1Aa++
))C
j::7)TL
k;;G9UL
77
	:,,T29??CER L? 
	y9< L; 
	 ++D,H,H,ST;;|+ +==lKM 446D##%@@BB&99+F0022	.	.$$W8" L! 
'	'!'0 L 

	 ''	(F(F(H(](](_`
..0 L 
 L 

	
 L	 
 	 7) L 6<==O  	:#G]]1-=>B&
$&))\9I
 #76A+Ay9E@ LQ	:s   :P? ?A)R,+R,c           	         UR                   S:X  a  [        U R                  U US9nO[        R                  " X5      n[        U/5      =p4[        U 5      (       a  U$ [        UR                  5       5       GHO  n[        R                  " SXTSS9  [        R                  " 5          U R                  UR                  S   5      nUR                  SS nU(       a)  [        R                  " S	U5      nXXl        [#        XU5      n[%        U5      (       d9  UR'                  S
S9n	U	S:w  a  [        R(                  " SXQ5        UsSSS5        s  $ UR+                  [,        R.                  " U/5      5      n[%        U5      (       d$  [        R(                  " SU5        UsSSS5        s  $  SSS5        [        R                  " SUSS9  GMR     XC:w  a%  [        U V
s/ s H  n
[1        X5      PM     sn
5      $ U$ ! , (       d  f       NU= fs  sn
f )zz
Returns the function, that should to be executed in the end.
This is also the places where the decorators are processed.
r  )rD   rA   zdecorator: %s %sMAGENTA)colorr?   r<   r   r   F)include_prefixz	@runtime
zdecorator not found: %s on %sNz)not possible to resolve wrappers found %szdecorator end %s)re   r   rB   r   r   r   r   reversedget_decoratorsr   rp   increase_indent_cmr   rj   r   
PythonNoderd   r   ro   get_coderG   r   r   ValuesArgumentsr"   )rI   r   decoratee_valueinitialvaluesdec
dec_valuestrailer_nodesr   coder   s              rO   r  r    s    yyJ$##"
 (44WC 122Gw''++-.		$cC%%' ++CLLO<JLL2.M//)]C!$*7H
z??||5|9 <'MM"A3M! ('$  ''	(A(A6((KLFv;;I4P+ ('& ' (. 			$fI>3 /4 G116GHHM5 ('2 Hs   $BG5AG5H5
H	c                 d   SnU R                  5        H  u  p4[        U R                  U5      nUR                  U5      n[	        U[
        5      (       a  [        s  $ SnXs::  a!   [        U5      nXrR                  -  nXs::  a  M!  UR                  5       nM     U$ ! [         a    [        s s  $ f = f)z 
Checks if tuples are assigned.
Nr   )assignment_indexesr   rD   r  rb   slicer   r  maxStopIterationrn   )r   r   r  indexr   r  iteratedr]   s           rO   r
  r
  K  s     J..0 3 3T:$$R(eU##j	$!(^
 ^^# j $$&	% 1&  ! !
 ! !s   $BB/.B/c                       \ rS rSrS rSrg)r  if  c                 B    [        U R                  U R                  5      $ rY   )r   rI   r   )selfs    rO   rn   %ContextualizedSubscriptListNode.inferg  s    $T\\499==rT   rR   N)__name__
__module____qualname____firstlineno__rn   __static_attributes__rR   rT   rO   r  r  f  s    >rT   r  c                    US:X  a#  [        [        R                  " U SSS5      /5      $ UR                  S:X  a  UR                  S   S:X  d  / nUR                   H  nUS:X  a  U(       d  UR                  S5        M#  M%  UR                  S:X  a;  [        UR                  5      S:X  a   UR                  UR                  S   5        Mn  Mp  UR                  U5        M     US/S	[        U5      -
  -  -  n[        [        R                  " U /UQ76 /5      $ UR                  S
:X  a+  [        [        R                  " U R                  X5      /5      $ U R                  U5      $ )z$
Handles slices in subscript nodes.
r   N	subscriptr   r   sliceopr<   r?   r   r  )
r   r   Slicere   rj   rV  ro   r   rB   r   )rI   r  r   els       rO   r   r   k  s0    |tTBCDD	{	"5>>!+<+C ..BSyMM$' I%r{{#q(MM"++a.1 ) b! ! 	4&AFO,,9&9:;;		&66w7N7NPW_`aa e$$rT   rY   )Q__doc__rs   rA  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#   rk  itemsrl  rS   r   ru   r   increase_indentrc   r   r   r   r   r   r   r5  r   r   rL  rO  rR  rZ  r=  decorater  r  r
  r  r   )kr  s   00rO   <module>r     s       * * 3 # $ # " $ : ) R -/ / ? = 9 - 3 1 4 ' 
				
	


			 " ":!?!?!A$!AAuqu}!A$  
BE=P
0 i0) 1) K/  K/\-0R%j 
 
 J JZ2  &< &'C"Zz d dR .  .b6>&8 >
%s$s   F