
    ^j                     B   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)Z9e9ju                         D  ci c]  \  } }| d*|d+d z    c}} Z;d, Z<d- Z=d. Z> e'e
/      d0        Z?ej                  e<d1               ZAd2 ZBd3 ZCe<dFd4       ZDej                  dFd5       ZEd6 ZFed7        ZGd8 ZHd9 ZId: ZJd; ZKd< ZLd= ZMd> ZNd? ZO e3j                         d@        ZQ e'       dA        ZRdB ZS G dC dDe      ZTdE ZUyc c}} w )Gz&
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>>&|^__r   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                 t   | j                   }| j                  }	 |j                  |xx   dz  cc<   d}| j                  !| j	                         |j
                  u r|dz  }|j                  |   |kD  rt        j                  d|       t        S 	  | g|i |S # t        $ r d|j                  |<   Y &w xY w)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nrE   maximumfuncs         S/opt/ringagent/.cad-venv/lib/python3.12/site-packages/jedi/inference/syntax_tree.pywrapperz$_limit_value_infers.<locals>.wrapperB   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   A3B B76B7 )rQ   rS   s   ` rR   _limit_value_infersrU   9   s    .* N    c                    t        | t              rt        | |      S i g}|}|6|j                  }|j                  dv rnt        j                  |      rd }n|6| j                  j                  |      }||r|j                  dk(  r| j                  j                  r|j                  d   }|j                  |j                  kD  r't        |      }t        |      }|D cg c]  }|j                   c}t!        fd|D              r|D ]  }	| j                  j#                  | |	      }
t%        |
      dkD  rt%        |      t%        |
      z  dkD  rt'        j(                  d|       i g} nt+        |      }g }|
D ]T  }t+        |      }t-        |      D ]4  \  }}|j/                         ||<   t1        |g      ||   |	j                  <   6 ||z  }V |D ]  }|
||	j                  <     t%        |      dkD  r9t2        }|D ],  }| j5                  ||      5  |t        | |      z  }d d d        . |S t7        | |      S |rt        | |      S t7        | |      S c c}w # 1 sw Y   exY w)N)if_stmtfor_stmtrX   rB   c              3   :   K   | ]  }|j                   v   y wNvalue).0istr_element_namess     rR   	<genexpr>zinfer_node.<locals>.<genexpr>x   s     BA177//Bs      z,Too many options for if branch inference %s.)
isinstancer!   _infer_nodeparenttyper   is_scopepredefined_namesgetrE   is_analysischildren	start_posend_posr   r]   anyinferlenr   dbglist	enumeratecopyr   r   predefine_names_infer_node_if_inferred)rL   element
name_dictsrX   predefined_if_name_dictif_stmt_testif_nameselement_nameseif_namedefinitionsoriginal_name_dicts
definitionnew_name_dictsr_   	name_dictresultr`   s                    @rR   
infer_noder   Z   s   '>*7G,,JG

..<<22  )G 
 &66::7C &7	)g.E.E.Q.Q''*
 |333 )6H-g6M2? @Q @BBB' CG")"9"9"?"?"QK ;'!+z?S-==B!II&TV]^ +-J!.2:.>+%'
*5 9J-12E-FN09.0I Z94=NN4Dq 1CKZLCYq 1'-- @Z '.8J9 *4 CI7BIgmm4C1C4 z?QF' <	,,Wi@ <k'7;;F< << M*7G<<"w00*7G<<Q !A>< <s   &I I%%I.	c                     |}|8|j                   }| j                  j                  |      }|t        | |      S |8t	        | |      S )zA
    TODO This function is temporary: Merge with infer_node.
    )re   rh   ri   rd   _infer_node_cached)rL   rw   re   ry   s       rR   rv   rv      sY     F

")":":">">v"F".w00	 

 gw//rV   )defaultc                     t        | |      S r[   )rd   )rL   rw   s     rR   r   r      s    w((rV   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}|j                  d      }| j                  |      }t        |      D ]>  \  }}	|	dk(  r'| j                  ||dz            }
t        | ||	|
      } nt!        | ||	      }@ |r|j#                         j%                         S |S |dv r!t        t'        j(                  || |      g      S |dv r@| j                  |j                  d         }|j                  d d D ]  }t+        ||      } |S |dk(  r=| j                  |j                  d         | j                  |j                  d         z  S |dk(  r`|j                  dk7  r1|j,                  }t/        dt1        |j                        d|d      t        t3        j4                  |d      g      S |dk(  rEt        | |j                  d         }|j                  dd d   D ]  }|j7                  ||       } |S |dk(  r| j                  |j                  d         S |dk(  r2t9        j:                  | |j                  d         j=                  |       S |dk(  rt?        |j                        rv|j                  d   j                  dk(  rZ|j                  d   j                  d   }| j                  |      j7                  d      jA                         }|j%                         S tB        S |dk(  r| j                  |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   rB   Fr   awaitTr:   )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	star_expr)#r   rq   rl   rE   rf   
infer_atomr   r   from_contextinfer_expr_stmtrk   r]   popr   rs   _infer_comparisoninfer_trailerpy__await__py__stop_iteration_returnsr   SequenceLiteralValueinfer_factorre   AssertionErrorreprr   builtin_from_namepy__getattribute__r   infer_annotationexecute_annotationrp   execute_with_valuesr   infer_or_test)rL   rw   rE   typfirst_childrk   	had_await	value_setr_   trailerrightr   origin	next_name
generatorss                  rR   rd   rd      s    
II&1B1BGL--O
,,C
SS'7++			33GWEFGG		w00	&	&&&q)##AB'	y([->->'-II",,q/K&&{3	%h/ 
	CLQ$**8AE?;-		 %gy'BI
	C ((*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$/ 	VI!44YW4UI	V		!!'"2"21"566		**7G4D4DQ4GH(	)		w W%5%5a%8%=%=%L&&q)2215G ++G4##J/0C0C0E 88:: 	 	 !!'"2"21"566		Wg..rV   c                    |j                   d d \  }}|dk(  rd }|dk(  r6|j                   \  }}}|j                  t        | |      t        | |            S t	        j
                  d||       |dk(  r|j                  | |      S |dk(  s
J d|z         t        j                  | j                  | ||      }|j                  |      S )	Nr?   )[zinfer_trailer: %s in %s.)r   name_or_str(ztrailer_op is actually %s)rk   get_item_infer_subscript_listr   r   rq   r   r   TreeArgumentsrE   execute)rL   atom_valuesr   
trailer_opnode_rM   s          rR   r   r     s    ''+Js{S%..
D!##!'40w0
 	

 			+WkB11$  2  
 $N&AJ&NN$**7+B+BGTSZ[D&&t,,rV   c                 t   | j                   }j                  dk(  rj                  ddd      xs }|j                  dk(  r%t        fd|j	                         D              s}n|j                  dk(  r}|j
                  }t              rd}| j                  |      S j                  dk(  rWj                  d	v r*t        t        j                  |j                        g      S j                  d
k(  rt        S J dz         t        t        j                        rE|j                   j#                  j                        }t        t        j$                  ||      g      S j                  dk(  rIt'        | j(                  d         }j(                  dd D ]  }t'        | |      }t+        | |d|      } |S j                  dk(  rt        j,                  |      S j(                  }|d   dk(  rOt/        |      dk(  sA|d   j                  dk(  rt/        |d   j(                        dkD  s| j1                  |d         S 	 |d   j(                  d   }	|	dk(  r	 |d   j(                  d   }	|	j                  dv r!t        t5        j6                  ||       g      S |d   }
	 |
j(                  }|d   dk(  r%|
dk(  sd|v sd|v rt5        j:                  ||       }nt5        j<                  ||       }t        |g      S # t2        $ r Y w xY w# t2        t8        f$ r Y w xY w# t8        $ r g }Y w xY w)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   rX   c              3   z   K   | ]2  }|j                   j                   cxk  xr |j                  k  nc  4 y wr[   )rl   rm   )r^   rO   r   s     rR   ra   zinfer_atom.<locals>.<genexpr>)  s*     `Qq{{dnn@qyy@@`s   8;Npositionr   )FalseTrueNoneyieldzCannot infer the keyword %sr   r   rB   r4   r   r   r?   testlist_comp:   )comp_forsync_comp_for{}r:   )rE   rf   search_ancestorrn   get_test_nodesrl   _is_annotation_namer   r]   r   r   r   r   rc   r   Literalcompiled_subprocesssafe_literal_evalcreate_simple_objectr   rk   r   get_string_value_setrp   r   
IndexErrorr   comprehension_from_atomAttributeErrorDictLiteralValuer   )rL   r   statestmtr   r   r   r   cr   
array_nodearray_node_c	new_values    `           rR   r   r     s1    ##EyyF##KIFN$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6ufEFGG	i	wa(89	mmAB' 	JFw/E)'9c5II	J 	i	,,U33MMQ43;s1v{1o5 1/!3%%ad++	t}}Q'H 3 t}}Q/H }} ==!A!A7D" !  
 qT
	%..L Q43;J#-1D#|3 11%$GI 55eWdKI$$' "  N+ 		&  	L	s6   
L "L )L) 	LLL&%L&)L76L7c                     t        j                  | j                  |      5 }|r<|$t        j                  | ||      }|r|cd d d        S t        | ||      cd d d        S 	 d d d        t        S # 1 sw Y   t        S xY wr[   )r   execution_allowedrE   r   "find_type_from_comment_hint_assign_infer_expr_stmtr   )rL   r   	seek_nameallowedpep0484_valuess        rR   r   r   s  s    		$	$W%<%<d	C >w$AA'4QZ[ !)> > $GT9=> >> > s   A/
A//A=c                 r    d }t        j                  d||       |j                         } j                  |      |rt	         |      }t        |      t        |j                         d      } ||      \  }|dvxr |j                  dk(  }|s|r||j                  d      d   j                  }	 j                  |	|j                  	      }
|r fd
t        fd|
D              n!t        j                  |      }|j                  dd |_
        |j                  d      }||j                  dk(  rȉrt!        j"                  |      r|j%                         }t'         |      }t)        |j+                         j-                  |            }|D ]e  }|j.                  d   j                  |j+                         i} j1                  ||      5   j                  |      }t3         |
||      }
ddd       g |
nt3         |
|      t        j                  d       S # 1 sw Y   xY w)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y|j                   d   }|j                  dk7  st        |j                         dk7  ry|j                   d   }|j                   d   dk(  |j                   d   fS )	Nr   )r   r   )FNr   r?   r   r   rB   )rk   rf   rp   )r   r   r   r   s       rR   check_setitemz'_infer_expr_stmt.<locals>.check_setitem  s    MM!$	>>!77!!!$99#i&8&8"9Q">$$R("c)7+;+;A+>>>rV   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dictrr   )ContextualizedSubscriptListNode
array_typer   r   )vr   rL   subscriptlistr   s     rR   to_modz _infer_expr_stmt.<locals>.to_mod  sJ    3G]K<<6)+Ay!<<\\V++Ay!<<rV   c              3   .   K   | ]  } |        y wr[   rT   )r^   r  r  s     rR   ra   z#_infer_expr_stmt.<locals>.<genexpr>  s      @q @s   r   rY   rB   zinfer_expr_stmt result %s)r   rq   get_rhsr   r    check_tuple_assignmentsnextyield_operatorsrf   get_defined_namesr]   r   rl   r   rt   r   r   for_stmt_defines_one_nameget_testlistr   rr   ro   iteraterk   ru   r   )rL   r   r   r   rhsrO   first_operator
is_setitemis_annassignr   left_valuesr   rY   r   cnordered
lazy_valuedcttr  r  r   s   `                  @@@rR   r   r     s    ? 
II'y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++J7H#(C	$>>xH  ,,.'6rxxz11"56") [J#,,Q/55z7G7G7IJC 003? [#..s3&7hXY&Z[ [[
 (	-g{HiX		II)95[ [s    H--H6	c           	         t        |j                        }| j                  t        |            }|D ]  }t        |      }|j                  dk(  r"dj                  d |j                  D              }|dv rOt        d |D              }|dhk(  r|dk(  sa| j                  |      }s|dhk(  sz|dk7  s| j                  |      }t        | ||| j                  |            } t        j                  d	|       |S )
Ncomp_opr   c              3   4   K   | ]  }|j                     y wr[   r\   )r^   r   s     rR   ra   z infer_or_test.<locals>.<genexpr>  s     CACs   )andorc              3   <   K   | ]  }|j                           y wr[   )
py__bool__)r^   lefts     rR   ra   z infer_or_test.<locals>.<genexpr>  s     A4T__.A   Tr  Fzinfer_or_test types %s)
iterrk   r   r	  rf   joinsetr   r   rq   )rL   or_testiteratortypesr   r   
left_boolss          rR   r   r     s    G$$%HtH~.E AX==I%xxC1B1BCCH }$A5AAJdV#u$#..u5Ew&u$#..u5E &guh&-&8&8&?AE!A$ 
II&.LrV   c              #   |  K   | D ]  }|dk(  rt        |      s|j                          '|dk(  r|j                         }|Nt        |j                  j
                  j                  d      j                  d            j                          t        j                  |j                  |        |  yw)z6
    Calculates `+`, `-`, `~` and `not` prefixes.
    r5   notNbool)r   negater  rr   rE   rI   r   r   r   r   r   )r   r   r]   bs       rR   r   r     s     
  s?lln$  "Ay500@@SSTZ[..t4669ce< 33E4I4Iq5QQKs   B<B#B<c                     t         }|D ]Z  }t        |      r>t        j                  | |j                  j
                        }||j                         z  }L|t        |g      z  }\ |S r[   )r   r   r   r   r   string_namer   r   )rE   r   
new_resultr   clss        rR   _literals_to_typesr2    sh     J *c? ,,_chh>R>RSC#1133J(C5/)J* rV   c                      j                   t        t              r}nt        j                        }|rs!|xs t        xs t        z  }t        |      S |dk(  r=t        d t        j                  |      D              rt        j                  |f      S t        |      t              z  dkD  rt        |z        S t        j                   fd|D              S )Nr<   c              3      K   | ]8  }|j                         xs" |j                         xs t        |t               : y wr[   )is_classis_compiledrc   r&   )r^   r]   s     rR   ra   z$_infer_comparison.<locals>.<genexpr>  s<      % 	ME--/M:eW3MM%s   >A    c           	   3   J   K   | ]  }D ]  }t        ||         y wr[   )_infer_comparison_part)r^   r   r   rL   r   right_valuesr   s      rR   ra   z$_infer_comparison.<locals>.<genexpr>"  s;      &)&  'ugtXuM&M&s    #)rE   rc   strr]   r   r2  all	itertoolschainr   	from_setsrp   )rL   r  r   r:  operator_strr   r   s   ` ``  @rR   r   r     s    ##E(C 8>>*l*|/HyI!%00		 %__[,?% "
 !!;"=>>
 {c,//!3%e[<-GHH%% &'&  rV   c                    | j                  ddd      }|y|j                  dv r=|j                  }|.|j                  | j                  cxk  xr |j                  k  S c S y|j                  dk(  r`|j
                  }t        |      dkD  rF|d   j                  dk(  r4|d   j                  | j                  cxk  xr |d   j                  k  S c S y)Nparamfuncdefr   F)rB  rC  rB   r   )r   rf   r   rl   rm   rk   rp   )r   ancestorannr   s       rR   r   r   )  s    ##GYDH}},,!!?==DNN@S[[@@@@
 	 
+	%q6A:!A$)){2Q4>>T^^BadllBBBBrV   c                      | j                   dk(  S )Nrr   r  r\   s    rR   _is_listrH  9  s    v%%rV   c                      | j                   dk(  S )NtuplerG  r\   s    rR   	_is_tuplerK  =  s    w&&rV   c                 @    t        j                  | t        |            S r[   )r   r   r;  )rE   bool_s     rR   _bool_to_valuerN  A  s    %%os5zBBrV   c                 2   t        | t        j                        sy g }| j                         D ]V  }t        |t              s y |j
                  }|j                  dk7  r y 	 |j                  t        |j                               X |S # t        $ r Y  y w xY w)Nr   )rc   r   r   
py__iter__r   datarf   appendintr]   
ValueError)r]   numbersr  r   s       rR   _get_tuple_intsrV  E  s    eX::;G&&( 	
*m499 	NN3tzz?+	 N  		s   !$B			BBc                    t        |      }t        |      }t        |t              r|}nt        |j                        }|dk(  rct        |t        j
                        st        |      rt        |g      S t        |t        j
                        st        |      rt        |g      S |dk(  r||r|st        |      rt        |      r|j                  ||      S t        |      rt        |      st        |      rt        |      rt        t	        j                  | ||f      g      S |dk(  r|rY|rV|j                  ||      S |dk(  rt        |g      S |t        v r|j                         r&|j                         r|j                  ||      }|r|S |dv r/t        |   }	 |	||      }
|dv |
k(  rt        t        | |
      g      S t        |t              rct!        |      }|Vt#        j$                  j                  |   | j&                  j(                  t+        |            }t        t        | |      g      S t        t        | d      t        | d      g      S |d	v r*| j,                  j/                  d
      j1                  |      S d }|dv r4||k7  r/ ||      s' ||      sd}t3        j4                  |d||||fz         |j7                         s|j7                         rt8        S t:        |   }|j/                  |      }|r|j=                  |      }|r|S |s/t>        |   }|j/                  |      }|j=                  |      }|r|S t        ||g      }tA        jB                  d||       |S )Nr6   r4   r5   r9   )isz!===zis not)rX  rY  TF)inznot inr+  c                 V    t        | t              xr | j                  j                  dv S )z4Checks if a Jedi object is either a float or an int.)rS  float)rc   r   r   r/  )objs    rR   checkz%_infer_comparison_part.<locals>.check  s)    #|, 5HH  $44	5rV   )r4   r5   z7TypeError: unsupported operand type(s) for +: %s and %sztype-error-operationz Used operator %s resulting in %s)"r   rc   r;  r]   r   Sequencer   r   execute_operationrH  rK  MergedArrayr   r6  rN  r   rV  r   accessenvironmentversion_inforJ  rI   r   r   r   addr5  r   operator_to_magic_methodr    reverse_operator_to_magic_methodr   rq   )rE   rL   r   r   r   l_is_numr_is_numstr_operatorr   	operationrM  rd  bool_resultr^  messagemethod_namemagic_methodsreverse_method_names                     rR   r9  r9  V  sF   HH(C 8>>*sdH--.)D/TF##x001Yu5EUG$$		IdO	%8H))%>>d^9T?yQVGWX11/D%=QRSS		))%>>		 	-	-%"3"3"5++E<@F;;0>	!$. !L0U:#^OU%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%LKW4he},	. }}%..**<8K++K8M2259M>|L001DE2248MtUm$F	II0(FCMrV   c                 
   t         }|j                         j                  }||j                         j	                  |j
                  g       }d}|D ]  }|j                  }|j                  dk(  s |j                  d   j                  dk(  s=t        j                  |      |j                  k(  }	|j                  d   }
|
j                  d   }|j                         }|	s|j                  d      r|j                         dk(  r|j                  dk(  r>|
j                  d   j
                  |j
                  k(  r|j                  r|j                  }t        j                   ||j                  d   j                  d         }d}t#        |      dk(  rCt%        t'        |            }t)        |t*              xr |j,                  j.                  t0        v  }|}||j3                  |      z  } |r|S g }|j5                  dd	      }||j                  }|j                  d
k(  rw|j7                  |      }|j9                         rt         S t%        |j;                               }|j	                  |j
                        }t=        j>                  d |D              S |j                  dvr|j7                  |      }tA        ||      S |j                  }|dk(  rt        jB                  |||      }|r|S |dk(  rt        jD                  |||      }|r|S |dv r	 |jF                  |   |j
                     }|S |dk(  rtU        |||      }|S |dk(  r|jW                  |jY                  |            }|j                  j                  dk(  r?|j[                  d      }|j]                         }|j_                         ja                         S |j[                  d      }|j3                  |      S |dv rtc        jd                  ||      }|S |dv rtg        ||      }|S |dk(  r?|jW                  |ji                         ji                               }|j]                         }|S |dk(  rt         }|S |dk(  rt         }|S |dk(  rtW        ||      }|S tk        d|z        # tH        $ rh tK        ||j                  d         }tM        |jO                         ||j                  j                  dk(        }tQ        ||      }tS        ||      }Y |S w xY w)NFr   rB   r   z
.TypeAlias	TypeAliasr   T)import_name_alwaysr   global_stmtc              3   <   K   | ]  }|j                           y wr[   )ro   )r^   r   s     rR   ra   z&tree_name_to_values.<locals>.<genexpr>  s     %Etdjjl%Er!  )import_fromimport_namerY   	with_stmt)rY   r   r   r   
async_stmt)contextualized_nodeis_async
__aenter__	__enter__)rC  classdeftry_stmtrB  del_stmtr   zShould not happen. type: %s)6r   get_root_contextrD   get_used_namesri   r]   re   rf   rk   r   get_parent_scopeget_codeendswithstriprG   r   r   rp   r	  r"  rc   r$   r   r/  r%   r   get_definitioncreate_context	is_moduleget_filtersr   r?  r   find_type_from_comment_hint_for find_type_from_comment_hint_withrh   rK   r   r
   ro   r    r  r   r   get_test_node_from_namer   r   r   r   r   infer_import_apply_decoratorsget_previous_siblingrT  )rE   rL   	tree_namer   module_nodenamesfound_annotationr   r   correct_scope
ann_assignfirstcodefoundset_found_annotationr'  r   r   filterr   r  	for_typesrO   value_managersenter_methodscoro
exceptionss                              rR   tree_name_to_valuesr    s    I**,66K**,00"E  	CDI~~,1C1CA1F1K1K{1Z , = =d CwGXGX X&//2
"++A.~~' $--*E-1ZZ\[-Hv-'00399Y__L#22")"8"8&77!3!3A!6!?!?!BE ,0(5zQ $T%[ 1&u.>? R %

 6 6:Q Q0, (<$!9!9'!BBI7	C8 E##tT#RD|99%&&y1A{{} !  !--/*FJJy/E%%%Eu%EEEYY<<&&y1Aa++
))C
j::7D)TL
k;;GT9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//88	.	.$$Wi8" L! 
'	'!'40 L 

	 ''	(F(F(H(](](_`
..0 L 
 L 

	
 L	 
 	 7D) L 6<==O  	:#GT]]1-=>B&
$&))\9I
 #7I6A+Ay9E@ LQ	:s   R A-T	T	c           	         |j                   dk(  rt        | j                  | |      }nt        j                  | |      }t        |g      x}}t        |       r|S t        |j                               D ]D  }t        j                  d||d       t        j                         5  | j                  |j                  d         }|j                  dd }|r*t        j                  d	|      }||_        t#        | ||      }t%        |      s;|j'                  d
      }	|	dk7  rt        j(                  d||       |cddd       c S |j+                  t-        j.                  |g            }t%        |      s#t        j(                  d|       |cddd       c S 	 ddd       t        j                  d|d       G ||k7  r#t        |D 
cg c]  }
t1        |
|       c}
      S |S # 1 sw Y   NxY wc c}
w )z
    Returns the function, that should to be executed in the end.
    This is also the places where the decorators are processed.
    r~  )rG   rD   zdecorator: %s %sMAGENTA)colorrB   r?   r   r   F)include_prefixz	@runtime
zdecorator not found: %s on %sNz)not possible to resolve wrappers found %szdecorator end %s)rf   r   rE   r   r   r   r   reversedget_decoratorsr   rq   increase_indent_cmr   rk   r   
PythonNodere   r   rp   r  rJ   r   r   ValuesArgumentsr"   )rL   r   decoratee_valueinitialvaluesdec
dec_valuestrailer_nodesr   r  r   s              rR   r  r  *  s    yyJ$##"
 (44WdC 122Gfw'++-. ?		$c6C%%' 	 ++CLLO<JLL2.M//)]C!$*7JH
z?||5|9 <'MM"A3M!	 	$  ''	(A(A6((KLFv;I4P+	 	& '	. 			$fI>3?4 G11o6GHHM5	 	2 Hs   $BG%AG%	G1%G.	c                    d}| j                         D ]~  \  }}t        | j                  |      }|j                  |      }t	        |t
              rt        c S d}d}||k  r!	 t        |      }||j                  z  }||k  r!|j                         } |S # t        $ r! ||j                         cY c S t        cY c S w xY w)z(
    Checks if tuples are assigned.
    Nr   )assignment_indexesr   rG   r  rc   slicer   r	  maxStopIterationro   )r   r   r  indexr   r  iteratedr_   s           rR   r  r  \  s     J..0 't 3 3T:$$R(eU#
5j$!(^
 Z^^# 5j  $$&	1'2  ! 
! )%++-- ! 
!s   "BC 5C ?C c                       e Zd Zd Zy)r  c                 B    t        | j                  | j                        S r[   )r   rL   r   )selfs    rR   ro   z%ContextualizedSubscriptListNode.infer~  s    $T\\499==rV   N)__name__
__module____qualname__ro   rT   rV   rR   r  r  }  s    >rV   r  c                    |dk(  r"t        t        j                  | ddd      g      S |j                  dk(  r|j                  d   dk(  sg }|j                  D ]t  }|dk(  r|r|j                  d       |j                  dk(  r8t        |j                        dk(  sE|j                  |j                  d          d|j                  |       v |dgd	t        |      z
  z  z  }t        t        j                  | g| g      S |j                  d
k(  r+t        t        j                  | j                  | |      g      S | j                  |      S )z,
    Handles slices in subscript nodes.
    r   N	subscriptr   r   sliceopr?   rB   r   r  )
r   r   Slicerf   rk   rR  rp   r   rE   r   )rL   r  r   els       rR   r   r     s,    |tTBCDD	{	"5>>!+<+C .. 	"BSyMM$'I%r{{#q(MM"++a.1b!	" 	4&AFO,,9&9:;;		&66w7N7NPWY^_`aa e$$rV   r[   )V__doc__rt   r=  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&   rf  itemsrg  rU   r   rv   r   increase_indentrd   r   r   r   r   r   r   r2  r   r   rH  rK  rN  rV  r9  decorater  r  r  r  r   )kr  s   00rR   <module>r     s       * * 3 # $ # " $ : ) R -/ / ? = 9 - 3 1 4 ' S 3 
				
	


			 " ":!?!?!A$AAuqu}$  
BE=P
0 i0) 1) M/  M/`-0R%j 
 
 J JZ2  &< &'C"\~ o oh .  .bB>&8 >
%]$s   F