
    ^h	[                        S r SSKJr  SSKJr  SSKJrJrJr  SSKJ	r	J
r
Jr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Jr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5      r# " S S\\#5      r$ " S S\$5      r%S r& " S S5      r' " S S5      r( " S S\\#5      r) " S S\'5      r* " S S\*\)5      r+ " S S\*\)5      r, " S  S!\*\$5      r- " S" S#5      r. " S$ S%\'\)\.5      r/ " S& S'\)5      r0 " S( S)\(\0\.5      r1 " S* S+\)5      r2 " S, S-\25      r3 " S. S/\25      r4 " S0 S1\(\)\.5      r5 " S2 S3\)5      r6S4 r7 " S5 S6\5      r8g7)8zd
Contains all classes and functions to deal with lists, dicts, generators and
iterators in general.
    )compiled)analysis)LazyKnownValueLazyKnownValuesLazyTreeValue)get_int_or_none	is_stringreraise_getitem_errorsSimpleGetItemNotFound)safe_propertyto_list)inference_state_method_cache)LazyAttributeOverwritepublish_method)ValueSetValue	NO_VALUESContextualizedNodeiterate_valuessentinelLazyValueWrapper)get_sync_comp_forsCompForContext)check_array_additionsc                   <    \ rS rSrSS jrS r\R                  rSrg)IterableMixin   Nc                 $    U R                  U5      $ N)
py__iter__selfcontextualized_nodes     W/home/james-whalen/.local/lib/python3.13/site-packages/jedi/inference/value/iterable.py
py__next__IterableMixin.py__next__   s    233    c                 X    [        [        R                  " U R                  S5      /5      $ NNoner   r   builtin_from_nameinference_stater#   s    r%   py__stop_iteration_returns(IterableMixin.py__stop_iteration_returns   #    33D4H4H&QRSSr(    r    )	__name__
__module____qualname____firstlineno__r&   r0   r   get_safe_value__static_attributes__r3   r(   r%   r   r      s    4T ))Nr(   r   c                       \ rS rSrSrS rS rS r\" S5      S 5       r	\" S5      \" S	5      S
 5       5       r
S r\S 5       rS rSrg)GeneratorBase&   Nc                 F    U R                  5       R                  5       u  nU$ r    )_get_clsexecute_annotation)r#   instances     r%   _get_wrapped_value GeneratorBase._get_wrapped_value)   s    MMO668	r(   c                 T    U R                   R                  R                  S5      u  nU$ N	Generator)r.   typing_modulepy__getattribute__)r#   	generators     r%   r>   GeneratorBase._get_cls-   s&    ))77JJ;W
	r(   c                     g)NTr3   r/   s    r%   
py__bool__GeneratorBase.py__bool__1       r(   __iter__c                     [        U /5      $ r    )r   r#   	argumentss     r%   _iterGeneratorBase._iter4   s    r(   send__next__c                 X    [         R                  " S U R                  5        5       5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr    infer.0
lazy_values     r%   	<genexpr>&GeneratorBase._next.<locals>.<genexpr>;        !YGX"2"2"4"4GX   r   	from_setsr!   rP   s     r%   _nextGeneratorBase._next8   s"     !!!YtGX!YYYr(   c                 X    [        [        R                  " U R                  S5      /5      $ r*   r,   r/   s    r%   r0   (GeneratorBase.py__stop_iteration_returns=   r2   r(   c                 0    [         R                  " U S5      $ rD   )r   CompiledValueNamer/   s    r%   nameGeneratorBase.name@   s    ))$<<r(   c                     SSK Jn  U R                  5       R                  5       nU" U[        [        45      nU R                  5       R                  U5      $ )Nr   TupleGenericManager)jedi.inference.gradual.genericsrm   merge_types_of_iteratepy__class__r   r>   with_generics)r#   rm   
gen_valuesgms       r%   get_annotated_class_object(GeneratorBase.get_annotated_class_objectD   sD    G002>>@
 *i!CD}},,R00r(   r3   )r4   r5   r6   r7   
array_typerA   r>   rK   r   rR   rc   r0   propertyri   rt   r9   r3   r(   r%   r;   r;   &   sv    J J     FJZ   ZT = =1r(   r;   c                   B   ^  \ rS rSrSrU 4S jrSS jrS rS rSr	U =r
$ )	rE   K   zHandling of `yield` functions.c                 0   > [         TU ]  U5        X l        g r    )super__init___func_execution_context)r#   r.   func_execution_context	__class__s      r%   r|   Generator.__init__M   s    )'=$r(   c                     U R                   R                  5       nU(       a  UR                  U5      $ U R                   R                  5       $ r    )r}   infer_annotationsiterateget_yield_lazy_values)r#   r$   	iteratorss      r%   r!   Generator.py__iter__Q   s@    00BBD	$$%899++AACCr(   c                 6    U R                   R                  5       $ r    )r}   get_return_valuesr/   s    r%   r0   $Generator.py__stop_iteration_returnsW   s    ++==??r(   c                 R    S[        U 5      R                  < SU R                  < S3$ N<z of >)typer4   r}   r/   s    r%   __repr__Generator.__repr__Z   s    #Dz22D4P4PQQr(   )r}   r    )r4   r5   r6   r7   __doc__r|   r!   r0   r   r9   __classcell__r   s   @r%   rE   rE   K   s#    (>D@R Rr(   rE   c                    UR                   S   nUR                   S   nUS:X  a|  UR                   S   R                   S   S:X  aU  UR                   S   nUR                  S:X  a  UR                   S   n[        U UUUR                   S   UR                   S   S9$ [        nOUS	:X  a  [        nOUS
:X  a  [
        nUR                   S   nUR                  S:X  a  UR                   S   nW" U UUUR                   S   S9$ )Nr      {:   comp_for   )sync_comp_for_nodekey_node
value_node([)defining_contextr   
entry_node)childrenr   DictComprehensionSetComprehensionGeneratorComprehensionListComprehension)r.   valueatombrackettest_list_compsync_comp_forclss          r%   comprehension_from_atomr   ^   s   mmAG]]1%N#~==$$Q'3.*33A6M!!Z/ - 6 6q 9$#0'003)2215  #C	C$	C"++A.MZ'%..q1(!**1-	 r(   c                   j    \ rS rSr\" 5       S 5       rS
S jr\" / S9\S 5       5       rS
S jr	S r
S	rg)ComprehensionMixin   c                     [        X5      $ r    r   )r#   parent_contextr   s      r%   _get_comp_for_context(ComprehensionMixin._get_comp_for_context   s    n77r(   Nc              #     #    US   nUR                   R                  S:H  nUR                  S   nU=(       d    U R                  nUR	                  U5      n[        X%5      nUR                  XtS9nUR                  S   n	[        U5       Hk  u  pUR                  5       n[        X,U	5      nU R                  UU5      nUR                  X=5          U R                  USS  U5       S h  vN   S S S 5        Mm     g  N! [         aR    UR	                  U R                  5      nU R                  S:X  a   XR	                  U R                   5      4v    NdUv    Njf = f! , (       d  f       M  = f7f)Nr   r   r   )is_asyncr   dict)parentr   r   _defining_context
infer_noder   r   	enumeraterY   unpack_tuple_to_dictr   predefine_names_nested
IndexError_entry_noderv   _value_node)r#   	comp_forsr   r   r   
input_nodeinput_typescniteratedexprlistir\   typesdctcontexts                  r%   r   ComprehensionMixin._nested   sU    Q<??'':5&&q)
'A4+A+A$//
;;&&r&=$$Q'&x0MA$$&E&~hGC00G ((7'#||IabM7CCC 87 1 D! '&11$2B2BCH&0&(:(:4;K;K(LLL&' 87s[   CE-EC<(C:)C<-E-:C<<AEEEEEE
E*	%E-defaultc              #   ~   #    [        [        U R                  5      5      nU R                  U5       S h  vN   g  N7fr    )tupler   _sync_comp_for_noder   )r#   r   s     r%   _iterateComprehensionMixin._iterate   s/      ,T-E-EFG	<<	***s   3=;=c              #   T   #    U R                  5        H  n[        U5      v   M     g 7fr    r   r   )r#   r$   set_s      r%   r!   ComprehensionMixin.py__iter__   s      MMOD!$'' $s   &(c                 R    S[        U 5      R                  < SU R                  < S3$ r   )r   r4   r   r/   s    r%   r   ComprehensionMixin.__repr__   s    #Dz22D4L4LMMr(   r3   r    )r4   r5   r6   r7   r   r   r   r   r   r!   r   r9   r3   r(   r%   r   r      sH    !#8 $8': ""-+  .+(Nr(   r   c                       \ rS rSrS rSrg)
_DictMixin   c                 B    [        S U R                  5        5       5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr    )rp   )r[   c_sets     r%   r]   +_DictMixin._get_generics.<locals>.<genexpr>   s     U6TU&&((6Tr`   )r   get_mapping_item_valuesr/   s    r%   _get_generics_DictMixin._get_generics   s    Ud6R6R6TUUUr(   r3   N)r4   r5   r6   r7   r   r9   r3   r(   r%   r   r      s    Vr(   r   c                   h    \ rS rSrSr\S 5       rS r\" SS9S 5       r	S r
S	 r\S
 5       rS rSrg)Sequence   r@   c                 B    [         R                  " X R                  5      $ r    )r   rh   rv   r/   s    r%   ri   Sequence.name   s    ))$@@r(   c                 @    U R                  5       R                  5       4$ r    )ro   rp   r/   s    r%   r   Sequence._get_generics   s    ++-99;==r(   r3   r   c                 "    U R                  5       $ r    )r   r/   s    r%   _cached_genericsSequence._cached_generics   s    !!##r(   c                     SSK Jn  SSKJn  [        R
                  " U R                  U R                  5      nU" UU" U R                  5       5      5      R                  5       u  nU$ )Nr   )GenericClassrl   )
jedi.inference.gradual.baser   rn   rm   r   r-   r.   rv   r   r?   )r#   r   rm   klasscs        r%   rA   Sequence._get_wrapped_value   sY    <G**4+?+?Q 5 5 78
 

 	 r(   c                     g r    r3   r/   s    r%   rK   Sequence.py__bool__   rM   r(   c                 .    U R                   R                  $ r    )r.   builtins_moduler/   s    r%   r   Sequence.parent   s    ##333r(   c                 l    U R                   S:X  a  U R                  5       $ [        [        U /5      5      $ )Nr   )rv   _dict_valuesr   r   )r#   index_value_setr$   s      r%   py__getitem__Sequence.py__getitem__   s/    ??f$$$&&hv.//r(   N)r4   r5   r6   r7   api_typerw   ri   r   r   r   rA   rK   r   r   r   r9   r3   r(   r%   r   r      s\    HA A> ""-$ .$ 4 40r(   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )_BaseComprehension   c                 l   > UR                   S:X  d   e[        TU ]	  U5        X l        X0l        X@l        g Nr   )r   r{   r|   r   r   r   )r#   r.   r   r   r   r   s        r%   r|   _BaseComprehension.__init__   s6    !&&/999)!1#5 %r(   )r   r   r   )r4   r5   r6   r7   r|   r9   r   r   s   @r%   r   r      s    & &r(   r   c                       \ rS rSrSrS rSrg)r      listc                    [        U[        5      (       a  [        U /5      $ [        U R	                  5       5      n[        [        [        5         X!   nS S S 5        UR                  5       $ ! , (       d  f       WR                  5       $ = fr    )	
isinstanceslicer   r  r!   r
   r   	TypeErrorrY   )r#   index	all_typesr\   s       r%   py__simple_getitem__&ListComprehension.py__simple_getitem__   sk    eU##TF##*+	#J	:")J ;!! ;:!!s   A,,
B	r3   N)r4   r5   r6   r7   rv   r  r9   r3   r(   r%   r   r      s    J"r(   r   c                       \ rS rSrSrSrg)r      setr3   Nr4   r5   r6   r7   rv   r9   r3   r(   r%   r   r      s    Jr(   r   c                       \ rS rSrSrg)r      r3   N)r4   r5   r6   r7   r9   r3   r(   r%   r   r      s    r(   r   c                        \ rS rSrS rS rSrg)_DictKeyMixin   c                 B    U R                  5       U R                  5       4$ r    )
_dict_keysr   r/   s    r%   r   %_DictKeyMixin.get_mapping_item_values   s     $"3"3"555r(   c                 "    U R                  5       $ r    )r  r/   s    r%   get_key_values_DictKeyMixin.get_key_values   s      r(   r3   N)r4   r5   r6   r7   r   r  r9   r3   r(   r%   r  r     s    6!r(   r  c                      ^  \ rS rSrSrU 4S jrSS jrS rS rS r	\
" S5      S	 5       r\
" S
5      S 5       rS rSrU =r$ )r   i  r   c                 x   > UR                   S:X  d   e[        TU ]	  U5        X l        X0l        X@l        XPl        g r  )r   r{   r|   r   r   r   r   )r#   r.   r   r   r   r   r   s         r%   r|   DictComprehension.__init__  s<    !&&/999)!1#5 #%r(   c              #   X   #    U R                  5        H  u  p#[        U5      v   M     g 7fr    r   )r#   r$   keysvaluess       r%   r!   DictComprehension.py__iter__  s"      MMOLD!$'' ,s   (*c                     U R                  5        H/  u  p#U H$  nUR                  [        5       S9U:X  d  M   Us  s  $    M1     [        5       e)Nr   )r   r8   objectr   )r#   r  r#  r$  ks        r%   r  &DictComprehension.py__simple_getitem__  sH     MMOLD ##FH#5>!M	  , $%%r(   c                 X    [         R                  " S U R                  5        5       5      $ )Nc              3   *   #    U  H	  u  pUv   M     g 7fr    r3   r[   r#  r$  s      r%   r]   /DictComprehension._dict_keys.<locals>.<genexpr>  s     !K?<4$?   r   rb   r   r/   s    r%   r  DictComprehension._dict_keys  s    !!!K4==?!KKKr(   c                 X    [         R                  " S U R                  5        5       5      $ )Nc              3   *   #    U  H	  u  pUv   M     g 7fr    r3   r,  s      r%   r]   1DictComprehension._dict_values.<locals>.<genexpr>   s     !M_\T&_r.  r/  r/   s    r%   r   DictComprehension._dict_values  s    !!!MT]]_!MMMr(   r$  c                 v    [        U R                  5       5      n[        [        U R                  U/5      /5      $ r    r   r   r   FakeListr.   r#   rQ   r\   s      r%   _imitate_values!DictComprehension._imitate_values"  2    $T%6%6%89
$"6"6EFGGr(   itemsc                     U R                  5        VVs/ s H8  u  p#[        [        U R                  [	        U5      [	        U5      /5      5      PM:     nnn[        [        U R                  U5      /5      $ s  snnf r    )r   r   	FakeTupler.   r   r   r7  )r#   rQ   keyr   lazy_valuess        r%   _imitate_items DictComprehension._imitate_items'  s}     #mmo	
 .
 (($S)$U+- . 	 	
 $"6"6DEFF	
s   ?A6c                     / $ r    r3   r/   s    r%   exact_key_items!DictComprehension.exact_key_items6  s	     	r(   )r   r   r   r   r    )r4   r5   r6   r7   rv   r|   r!   r  r  r   r   r9  rA  rD  r9   r   r   s   @r%   r   r     sc    J&(&LN HH H GG G r(   r   c                   f   ^  \ rS rSrSrSSSS.rU 4S jrU 4S jrS	 rSS
 jr	S r
S rS rSrU =r$ )SequenceLiteralValuei<  )testlist_star_exprtestlistsubscriptlistr   r  r  )r   r   r   c                    > [         TU ]  U5        X0l        X l        U R                  R                  U R
                  ;   a  SU l        g [        R                  UR                  S      U l        g )Nr   r   )
r{   r|   r   r   r   _TUPLE_LIKErv   rG  mappingr   )r#   r.   r   r   r   s       r%   r|   SequenceLiteralValue.__init__B  sV    )	!199>>T---%DO2::4==;KLDOKr(   c                    > U R                   S:X  a   [        S U R                  5        5       5      $ [        TU ]  5       $ )Nr   c              3   \   #    U  H"  oR                  5       R                  5       v   M$     g 7fr    )rY   rp   )r[   xs     r%   r]   5SequenceLiteralValue._get_generics.<locals>.<genexpr>O  s"     L:KQ..00:Ks   *,)rv   r   r!   r{   r   )r#   r   s    r%   r   "SequenceLiteralValue._get_genericsM  s5    ??g%L$//:KLLLw$&&r(   c                 >   [        U[        5      (       a  [        U /5      $ [        [        [
        [        5         U R                  5       U   nSSS5        WS:X  d  UR                  S:X  a  [        $ U R                  R                  U5      $ ! , (       d  f       NE= f)9Here the index is an int/str. Raises IndexError/KeyError.Nr   	subscript)r	  r
  r   r
   r  KeyErrorr   get_tree_entriesr   r   r   r   )r#   r  nodes      r%   r  )SequenceLiteralValue.py__simple_getitem__R  sz    eU##TF##'	8ZH,,.u5 Is{dii;6  ))44T::	 IHs   B
Bc           	   #      #    U R                  5        HV  nUS:X  d  UR                  S:X  a%  [        [        U R                  SSS5      5      v   M>  [        U R                  U5      v   MX     [        U R                  U 5       Sh  vN   g N7f)t
While values returns the possible values for any array field, this
function returns the value for a certain index.
r   rV  N)rX  r   r   Slicer   r   r   )r#   r$   rY  s      r%   r!   SequenceLiteralValue.py__iter__]  su     
 ))+Ds{dii;6 %U4+A+A4t%TUU#D$:$:DAA , ))?)?FFFs   BBBBc                 4    [        U R                  5       5      $ r    )lenrX  r/   s    r%   	py__len__SequenceLiteralValue.py__len__k  s    4((*++r(   c                    U R                   R                  nU R                   R                  U R                  ;   a  US S S2   $ US   nUS;   a  / $ UR                  S:X  a5  UR                  S S S2    Vs/ s H  nUR                  S:w  d  M  UPM     sn$ UR                  S:X  a  / n[	        UR                  5      nU H  nUS:X  a  [        U5        [        US 5        M"  [        US 5      nUb  US:X  a%  UR                  S:X  a  MI  UR                  U5        M\  US	:X  d   eUR                  U[        U5      45        [        US 5        M     U$ UR                  S:X  a  / $ U/$ s  snf )
Nr   r   )]})testlist_comp	star_exprdictorsetmakerz**,r   )r   r   r   rL  iternextappend)r#   r   
array_noder   kviteratorr?  ops           r%   rX  %SequenceLiteralValue.get_tree_entrieso  s\   II99>>T---SqS6MqT
(I??o-'1':':3Q3'? 2'?ezz[0 '? 2 2__ 00BJ//0H$; N4(h-BzR3Y88{2 !IIcN!Sy(y		3X"78Xt,%  & I+- 	"|#?2s   4E%E%c                 T    SU R                   R                  < SU R                  < S3$ r   )r   r4   r   r/   s    r%   r   SequenceLiteralValue.__repr__  s    #~~66		BBr(   )r   rv   r   r    )r4   r5   r6   r7   rL  rM  r|   r   r  r!   ra  rX  r   r9   r   r   s   @r%   rG  rG  <  sE    CKG	L'
	;G,+$ZC Cr(   rG  c                   x    \ rS rSrSrS rS rSS jr\" S5      S 5       r	\" S	5      S
 5       r
S rS rS rSrg)DictLiteralValuei  r   c                 F    [         R                  X5        X l        X0l        g r    )r   r|   r   r   )r#   r.   r   r   s       r%   r|   DictLiteralValue.__init__  s     	$0!1	r(   c                 t   [         R                  " U R                  U5      nU R                  5        Hv  u  p4U R                  R                  U5       HR  nUR                  US5       H9  nUR                  5       (       d  M  U R                  R                  U5      s  s  s  $    MT     Mx     [        SU -  5      e)rU  z==zNo key found in dictionary %s.)	r   create_simple_objectr.   rX  r   r   execute_operationr8   r   )r#   r  compiled_value_indexr?  r   r(  key_vs          r%   r  %DictLiteralValue.py__simple_getitem__  s    '<<T=Q=QSXY//1JC++66s;001EtLE++--#55@@GG M < 2
 $$Dt$KLLr(   Nc              #      #    [         nU R                  5        H"  u  p4X R                  R                  U5      -  nM$     U H  n[	        U5      v   M     g7f)r\  N)r   rX  r   r   r   )r#   r$   r   r(  _s        r%   r!   DictLiteralValue.py__iter__  sQ      ))+DA++66q99E , A!%(( s   AAr$  c                 v    [        U R                  5       5      n[        [        U R                  U/5      /5      $ r    r6  r8  s      r%   r9   DictLiteralValue._imitate_values  r;  r(   r<  c                 $   U R                  5        VVs/ s HN  u  p#[        [        U R                  [	        U R
                  U5      [	        U R
                  U5      45      5      PMP     nnn[        [        U R                  U5      /5      $ s  snnf r    )rX  r   r>  r.   r   r   r   r7  )r#   rQ   r   r   r@  s        r%   rA  DictLiteralValue._imitate_items  s     ,0+@+@+B

 ,C'8	 9$$t55x@t55zBD  ,C 	 
 $"6"6DEFF
s   ABc              #      #    U R                  5        Ha  u  pU R                  R                  U5       H=  n[        U5      (       d  M  UR	                  5       [        U R                  U5      4v   M?     Mc     g7f)z
Returns a generator of tuples like dict.items(), where the key is
resolved (as a string) and the values are still lazy values.
N)rX  r   r   r	   r8   r   )r#   r   r   r?  s       r%   rD   DictLiteralValue.exact_key_items  sc     
  $446OH--88BS>>,,.d>T>TV[0\\\ C  7s   AA91A9c                 `   ^  [         R                  " U 4S jT R                  5        5       5      $ )Nc              3   ^   >#    U  H"  u  pTR                   R                  U5      v   M$     g 7fr    r   r   r[   r(  vr#   s      r%   r]   0DictLiteralValue._dict_values.<locals>.<genexpr>  .      "
/ ""--a00/   *-r   rb   rX  r/   s   `r%   r   DictLiteralValue._dict_values  ,    !! "
--/"
 
 	
r(   c                 `   ^  [         R                  " U 4S jT R                  5        5       5      $ )Nc              3   ^   >#    U  H"  u  pTR                   R                  U5      v   M$     g 7fr    r  r  s      r%   r]   .DictLiteralValue._dict_keys.<locals>.<genexpr>  r  r  r  r/   s   `r%   r  DictLiteralValue._dict_keys  r  r(   )r   r   r    )r4   r5   r6   r7   rv   r|   r  r!   r   r9  rA  rD  r   r  r9   r3   r(   r%   rv  rv    s]    JM) HH H G	G 	G]

r(   rv  c                   D   ^  \ rS rSrU 4S jrS rSS jrS rS rSr	U =r
$ )	_FakeSequencei  c                 0   > [         TU ]  U5        X l        g)z'
type should be one of "tuple", "list"
N)r{   r|   _lazy_value_list)r#   r.   lazy_value_listr   s      r%   r|   _FakeSequence.__init__  s     	) /r(   c                     [        U[        5      (       a  [        U /5      $ [        [        [
        5         U R                  U   nS S S 5        UR                  5       $ ! , (       d  f       WR                  5       $ = fr    )r	  r
  r   r
   r   r  r  rY   r#   r  r\   s      r%   r  "_FakeSequence.py__simple_getitem__  sb    eU##TF###J	:..u5J ;!! ;:!!s   A
A;c                     U R                   $ r    r  r"   s     r%   r!   _FakeSequence.py__iter__  s    $$$r(   c                 >    [        [        U R                  5      5      $ r    )boolr`  r  r/   s    r%   rK   _FakeSequence.py__bool__  s    C--.//r(   c                 R    S[        U 5      R                  < SU R                  < S3$ r   )r   r4   r  r/   s    r%   r   _FakeSequence.__repr__   s    #Dz22D4I4IJJr(   r  r    )r4   r5   r6   r7   r|   r  r!   rK   r   r9   r   r   s   @r%   r  r    s#    0"%0K Kr(   r  c                       \ rS rSrSrSrg)r>  i  r   r3   Nr  r3   r(   r%   r>  r>        Jr(   r>  c                       \ rS rSrSrSrg)r7  i  r   r3   Nr  r3   r(   r%   r7  r7    r  r(   r7  c                   p   ^  \ rS rSrSrU 4S jrSS jrS r\" S5      S 5       r	S r
S	 rS
 rS rSrU =r$ )FakeDicti  r   c                 0   > [         TU ]  U5        X l        g r    )r{   r|   _dct)r#   r.   r   r   s      r%   r|   FakeDict.__init__  s    )	r(   c              #      #    U R                    H/  n[        [        R                  " U R                  U5      5      v   M1     g 7fr    )r  r   r   rz  r.   )r#   r$   r?  s      r%   r!   FakeDict.py__iter__  s2     99C !>!>t?S?SUX!YZZ s   AAc                     [        [        [        5         U R                  U   nS S S 5        UR	                  5       $ ! , (       d  f       WR	                  5       $ = fr    )r
   rW  r  r  rY   r  s      r%   r  FakeDict.py__simple_getitem__  sF    #Hi85)J 9!! 98!!s	   =
Ar$  c           	      r    [        [        U R                  [        U R	                  5       5      /5      /5      $ r    )r   r>  r.   r   r   rP   s     r%   _valuesFakeDict._values  s8      T..012
   	r(   c                 l    [         R                  " S U R                  R                  5        5       5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr    rX   rZ   s     r%   r]   (FakeDict._dict_values.<locals>.<genexpr>$  s     !ZGY"2"2"4"4GYr`   )r   rb   r  r$  r/   s    r%   r   FakeDict._dict_values#  s&    !!!ZtyyGWGWGY!ZZZr(   c                 X    [         R                  " S U R                  5        5       5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr    rX   rZ   s     r%   r]   &FakeDict._dict_keys.<locals>.<genexpr>'  r_   r`   ra   r/   s    r%   r  FakeDict._dict_keys&       !!!YtGX!YYYr(   c                 6    U R                   R                  5       $ r    )r  r<  r/   s    r%   rD  FakeDict.exact_key_items)  s    yy  r(   c                 T    SU R                   R                  < SU R                  < S3$ )Nr   z: r   )r   r4   r  r/   s    r%   r   FakeDict.__repr__,  s    !^^44dii@@r(   )r  r    )r4   r5   r6   r7   rv   r|   r!   r  r   r  r   r  rD  r   r9   r   r   s   @r%   r  r    sN    J["
 H [Z!A Ar(   r  c                   8   ^  \ rS rSrU 4S jrSS jrS rSrU =r$ )MergedArrayi0  c                 X   > [         TU ]  U5        US   R                  U l        X l        g )N)r{   r|   rv   _arrays)r#   r.   arraysr   s      r%   r|   MergedArray.__init__1  s&    ) *//r(   c              #   f   #    U R                    H  nUR                  5        S h  vN   M     g  N	7fr    )r  r!   )r#   r$   arrays      r%   r!   MergedArray.py__iter__6  s(     \\E''))) ")s   #1/
1c                 X    [         R                  " S U R                  5        5       5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr    rX   rZ   s     r%   r]   3MergedArray.py__simple_getitem__.<locals>.<genexpr>;  r_   r`   ra   )r#   r  s     r%   r   MergedArray.py__simple_getitem__:  r  r(   )r  rv   r    )	r4   r5   r6   r7   r|   r!   r  r9   r   r   s   @r%   r  r  0  s    
*Z Zr(   r  c           	         UR                   S:X  a  UR                  U0$ UR                   S:X  a,  UR                  S   S;   a  [        XUR                  S   5      $ UR                   S;   a  0 n[	        UR                  SSS2   5      nSnUR                  [        X5      5       H=  nUS-  n [        U5      nUR                  [        XR                  5       U5      5        M?     [        US5      nU(       a  Ub  [        R                  " U SUSU-  S9  U$ UR                   S:X  d  UR                   S:X  a  0 $ UR                   S:X  a  0 $ [        e! [         a    [        R                  " U S	WS
U-  S9   M  f = f)z?
Unpacking tuple assignments in for statements and expr_stmts.
ri   r   r   )r   r   r   )rI  rg  r   rH  Nr   zvalue-error-too-many-valuesz3ValueError: too many values to unpack (expected %s))messagezvalue-error-too-few-valuesz.ValueError: need more than %s values to unpackpower	atom_exprrh  )r   r   r   r   rk  r   r   rl  updaterY   StopIterationr   addNotImplementedError)	r   r   r   r   partsnr\   part	has_partss	            r%   r   r   >  sw    }}&&	&	 X%6%6q%9Z%G#GH4E4Ea4HII	 1 
1X&&ss+,--(:7(MNJFATE{
 

/9I9I9KTRS O %	Y*LL">	!QTU!UW
	'	!X]]k%A 		+	%	
% ! `W&CT%Z]^%^``s   -E$E98E9c                   ,    \ rS rSrS rS r\4S jrSrg)r]  id  c                 V    UR                   U l         Xl        X l        X0l        X@l        g r    )r.   _context_start_stop_step)r#   python_contextstartstopsteps        r%   r|   Slice.__init__e  s$    -==&

r(   c                     [         R                  " U R                  R                  S5      nUR	                  5       u  nU$ )Nr
  )r   r-   r  r.   execute_with_values)r#   r   slice_values      r%   rA   Slice._get_wrapped_valuem  s4    **4==+H+H'R002r(   c                    ^  U 4S jn [        U" T R                  5      U" T R                  5      U" T R                  5      5      $ ! [         a    [        SSS5      s $ f = f)zM
Imitate CompiledValue.obj behavior and return a ``builtin.slice()``
object.
c                    > U c  g TR                   R                  U 5      n[        U5      S:w  a  [        eUu  n[	        U5      $ )Nr   )r  r   r`  r   r   )elementresultr   r#   s      r%   get!Slice.get_safe_value.<locals>.getw  sE    ]]--g6F6{a ! FE"5))r(   N)r
  r  r  r  r   )r#   r   r  s   `  r%   r8   Slice.get_safe_valuer  sS    
	*	+T[[)3tzz?C

OLL 	+tT**	+s   <A A A )r  r  r  r  r.   N)	r4   r5   r6   r7   r|   rA   r   r8   r9   r3   r(   r%   r]  r]  d  s    
 &. +r(   r]  N)9r   jedi.inferencer   r   jedi.inference.lazy_valuer   r   r   jedi.inference.helpersr   r	   r
   r   jedi.inference.utilsr   r   jedi.inference.cacher   jedi.inference.filtersr   r   jedi.inference.base_valuer   r   r   r   r   r   r   jedi.parser_utilsr   jedi.inference.contextr   #jedi.inference.value.dynamic_arraysr   r   r;   rE   r   r   r   r   r   r   r   r   r  r   rG  rv  r  r>  r7  r  r  r   r]  r3   r(   r%   <module>r     su   $ # 2 2 7 = I   1 1 E* * "1*M "1JR R&!H-N -N`V V
"0%} "0J&+ &
"*H 
")8 	/ 	! !5*Hm 5paC8 aCHG
z#7 G
TKH K4 } !Az8] !AHZ( Z#L#+ #+r(   