
    ^j8\                        d 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	 ddl
mZmZmZ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mZ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$  G d d      Z% G d dee%      Z& G d de&      Z'd Z( G d d      Z) G d d      Z* G d dee%      Z+ G d de)      Z, G d de,e+      Z- G d d e,e+      Z. G d! d"e,e&      Z/ G d# d$      Z0 G d% d&e)e+e0      Z1 G d' d(e+      Z2 G d) d*e*e2e0      Z3 G d+ d,e+      Z4 G d- d.e4      Z5 G d/ d0e4      Z6 G d1 d2e*e+e0      Z7 G d3 d4e+      Z8d5 Z9 G d6 d7e      Z:y8)9zd
Contains all classes and functions to deal with lists, dicts, generators and
iterators in general.
    )Any)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                   H    e Zd ZU eed<   eed<   ddZd Zej                  Zy)IterableMixin
py__iter__inference_stateNc                 $    | j                  |      S N)r   selfcontextualized_nodes     V/opt/ringagent/.cad-venv/lib/python3.12/site-packages/jedi/inference/value/iterable.py
py__next__zIterableMixin.py__next__   s    233    c                 V    t        t        j                  | j                  d      g      S NNoner   r   builtin_from_namer    r$   s    r&   py__stop_iteration_returnsz(IterableMixin.py__stop_iteration_returns   #    33D4H4H&QRSSr(   r"   )	__name__
__module____qualname__r   __annotations__r'   r/   r   get_safe_value r(   r&   r   r      s%    O4T ))Nr(   r   c                       e Zd ZdZd Zd Zd Z ed      d        Z ed       ed      d	               Z	d
 Z
ed        Zd Zy)GeneratorBaseNc                 H    | j                         j                  d       \  }|S r"   )_get_clsexecute_annotation)r$   instances     r&   _get_wrapped_valuez GeneratorBase._get_wrapped_value.   s    MMO66t<	r(   c                 T    | j                   j                  j                  d      \  }|S )NGeneratorType)r    types_modulepy__getattribute__)r$   	generators     r&   r:   zGeneratorBase._get_cls2   s&    ))66II/Z
	r(   c                      y)NTr6   r.   s    r&   
py__bool__zGeneratorBase.py__bool__6       r(   __iter__c                     t        | g      S r"   )r   r$   	argumentss     r&   _iterzGeneratorBase._iter9   s    r(   send__next__c                 V    t        j                  d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr"   infer.0
lazy_values     r&   	<genexpr>z&GeneratorBase._next.<locals>.<genexpr>@        !Y*"2"2"4!Y   r   	from_setsr   rH   s     r&   _nextzGeneratorBase._next=   s"     !!!YtGX!YYYr(   c                 V    t        t        j                  | j                  d      g      S r*   r,   r.   s    r&   r/   z(GeneratorBase.py__stop_iteration_returnsB   r0   r(   c                 .    t        j                  | d      S )N	Generator)r   CompiledValueNamer.   s    r&   namezGeneratorBase.nameE   s    ))$<<r(   c                     ddl m} | j                         j                         } ||t        t        f      }| j                         j                  |      S )Nr   TupleGenericManager)jedi.inference.gradual.genericsra   merge_types_of_iteratepy__class__r   r:   with_generics)r$   ra   
gen_valuesgms       r&   get_annotated_class_objectz(GeneratorBase.get_annotated_class_objectI   sD    G002>>@
 *i!CD}},,R00r(   )r1   r2   r3   
array_typer=   r:   rD   r   rJ   rY   r/   propertyr^   rh   r6   r(   r&   r8   r8   +   sv    J J     FJZ   ZT = =1r(   r8   c                   6     e Zd ZdZ fdZddZd Zd Z xZS )r\   zHandling of `yield` functions.c                 2    t         |   |       || _        y r"   )super__init___func_execution_context)r$   r    func_execution_context	__class__s      r&   rn   zGenerator.__init__R   s    )'=$r(   c                     | j                   j                         }|r|j                  |      S | j                   j                         S r"   )ro   infer_annotationsiterateget_yield_lazy_values)r$   r%   	iteratorss      r&   r   zGenerator.py__iter__V   s@    00BBD	$$%899++AACCr(   c                 6    | j                   j                         S r"   )ro   get_return_valuesr.   s    r&   r/   z$Generator.py__stop_iteration_returns\   s    ++==??r(   c                 N    dt        |       j                  d| j                  dS N<z of >)typer1   ro   r.   s    r&   __repr__zGenerator.__repr___   s    #Dz22D4P4PQQr(   r"   )	r1   r2   r3   __doc__rn   r   r/   r~   __classcell__rq   s   @r&   r\   r\   P   s    (>D@Rr(   r\   c                    |j                   d   }|j                   d   }|dk(  r}|j                   d   j                   d   dk(  rW|j                   d   }|j                  dk(  r|j                   d   }t        | |||j                   d   |j                   d         S t        }n|d	k(  rt        }n|d
k(  rt
        }|j                   d   }|j                  dk(  r|j                   d   } | |||j                   d         S )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   c   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                       e Zd ZU eed<   eed<   eed<   eed<   eed<    e       d        ZddZ eg 	      ed
               Z	ddZ
d Zy)ComprehensionMixin_defining_context_entry_noderi   _value_node_sync_comp_for_nodec                     t        ||      S r"   r   )r$   parent_contextr   s      r&   _get_comp_for_contextz(ComprehensionMixin._get_comp_for_context   s    nh77r(   Nc              #     K   |d   }|j                   j                  dk(  }|j                  d   }|xs | j                  }|j	                  |      }t        ||      }|j                  ||      }|j                  d   }	t        |      D ]m  \  }
}|j                         }t        |||	      }| j                  ||      }|j                  ||      5  	 | j                  |dd  |      E d {    d d d        o y 7 # t        $ rQ |j	                  | j                        }| j                  dk(  r ||j	                  | j                         f n| Y fw xY w# 1 sw Y   xY ww)Nr   r   r   )is_asyncr   dict)parentr}   r   r   
infer_noder   rt   	enumeraterP   unpack_tuple_to_dictr   predefine_names_nested
IndexErrorr   ri   r   )r$   	comp_forsr   r   r   
input_nodeinput_typescniteratedexprlistirS   typesdctcontexts                  r&   r   zComprehensionMixin._nested   sq    Q<??'':5&&q)
'A4+A+A$//
;
;&&rH&=$$Q'&x0 	'MAz$$&E&~uhGC00G ((37 ''#||IabM7CCC' '	' D! '&11$2B2BCH&0&(:(:4;K;K(LLL&'' 'sO   CE&EC=+C;,C=0E&;C==AEEEEE#	E&defaultc              #   ~   K   t        t        | j                              }| j                  |      E d {    y 7 wr"   )tupler   r   r   )r$   r   s     r&   _iteratezComprehensionMixin._iterate   s0      ,T-E-EFG	<<	***s   3=;=c              #   P   K   | j                         D ]  }t        |        y wr"   r   r   )r$   r%   set_s      r&   r   zComprehensionMixin.py__iter__   s&     MMO 	(D!$''	(s   $&c                 N    dt        |       j                  d| j                  dS rz   )r}   r1   r   r.   s    r&   r~   zComprehensionMixin.__repr__   s    #Dz22D4L4LMMr(   r"   )r1   r2   r3   r   r4   r   r   r   r   r   r   r~   r6   r(   r&   r   r      se    O!#8 $8': ""-+  .+(Nr(   r   c                       e Zd ZU eed<   d Zy)
_DictMixinget_mapping_item_valuesc                 B    t        d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr"   )rd   )rR   c_sets     r&   rT   z+_DictMixin._get_generics.<locals>.<genexpr>   s     UUU&&(UrV   )r   r   r.   s    r&   _get_genericsz_DictMixin._get_generics   s    Ud6R6R6TUUUr(   N)r1   r2   r3   r   r4   r   r6   r(   r&   r   r      s      Vr(   r   c                   f    e Zd ZdZed        Zd Z ed      d        Zd Z	d Z
ed	        Zd
 Zy)Sequencer<   c                 B    t        j                  | | j                        S r"   )r   r]   ri   r.   s    r&   r^   zSequence.name   s    ))$@@r(   c                 @    | j                         j                         fS r"   )rc   rd   r.   s    r&   r   zSequence._get_generics   s    ++-99;==r(   r6   r   c                 "    | j                         S r"   )r   r.   s    r&   _cached_genericszSequence._cached_generics   s    !!##r(   c                     ddl m} ddlm} t	        j
                  | j                  | j                        } || || j                                     j                  d       \  }|S )Nr   )GenericClassr`   )
jedi.inference.gradual.baser   rb   ra   r   r-   r    ri   r   r;   )r$   r   ra   klasscs        r&   r=   zSequence._get_wrapped_value   s[    <G**4+?+?Q 5 5 78
 
T
" 	 r(   c                      y r"   r6   r.   s    r&   rD   zSequence.py__bool__   rE   r(   c                 .    | j                   j                  S r"   )r    builtins_moduler.   s    r&   r   zSequence.parent   s    ##333r(   c                 j    | j                   dk(  r| j                         S t        t        | g            S )Nr   )ri   _dict_valuesr   r   )r$   index_value_setr%   s      r&   py__getitem__zSequence.py__getitem__   s/    ??f$$$&&hv.//r(   N)r1   r2   r3   api_typerj   r^   r   r   r   r=   rD   r   r   r   r6   r(   r&   r   r      s\    HA A> ""-$ .$ 4 40r(   r   c                        e Zd Z fdZ xZS )_BaseComprehensionc                 p    |j                   dk(  sJ t        | 	  |       || _        || _        || _        y Nr   )r}   rm   rn   r   r   r   )r$   r    r   r   r   rq   s        r&   rn   z_BaseComprehension.__init__   s<    !&&/999)!1#5 %r(   )r1   r2   r3   rn   r   r   s   @r&   r   r      s    & &r(   r   c                       e Zd ZdZd Zy)r   listc                    t        |t              rt        | g      S t        | j	                               }t        t        t              5  ||   }d d d        |j                         S # 1 sw Y   j                         S xY wr"   )	
isinstanceslicer   r   r   r   r   	TypeErrorrP   )r$   index	all_typesrS   s       r&   py__simple_getitem__z&ListComprehension.py__simple_getitem__   sl    eU#TF##*+	#J	: 	*"5)J	*!!	*!!s   
A((B N)r1   r2   r3   ri   r   r6   r(   r&   r   r      s    J"r(   r   c                       e Zd ZdZy)r   setNr1   r2   r3   ri   r6   r(   r&   r   r      s    Jr(   r   c                       e Zd Zy)r   N)r1   r2   r3   r6   r(   r&   r   r     s    r(   r   c                   .    e Zd ZU eed<   eed<   d Zd Zy)_DictKeyMixin
_dict_keysr   c                 B    | j                         | j                         fS r"   )r   r   r.   s    r&   r   z%_DictKeyMixin.get_mapping_item_values  s     $"3"3"555r(   c                 "    | j                         S r"   )r   r.   s    r&   get_key_valuesz_DictKeyMixin.get_key_values  s      r(   N)r1   r2   r3   r   r4   r   r   r6   r(   r&   r   r     s    O6!r(   r   c                   z     e Zd ZdZ fdZddZd Zd Zd Z e	d      d        Z
 e	d	      d
        Zd Z xZS )r   r   c                 ~    |j                   dk(  sJ t        | 	  |       || _        || _        || _        || _        y r   )r}   rm   rn   r   r   r   r   )r$   r    r   r   r   r   rq   s         r&   rn   zDictComprehension.__init__  sD    !&&/999)!1#5 #%r(   c              #   V   K   | j                         D ]  \  }}t        |        y wr"   r   )r$   r%   keysvaluess       r&   r   zDictComprehension.py__iter__  s*      MMO 	(LD&!$''	(s   ')c                     | j                         D ]/  \  }}|D ]%  }|j                  t                     |k(  s!|c c S  1 t               )Nr   )r   r5   objectr   )r$   r   r   r   ks        r&   r   z&DictComprehension.py__simple_getitem__#  sT     MMO 	"LD& " ##FH#5>!M	"	" $%%r(   c                 V    t        j                  d | j                         D              S )Nc              3   &   K   | ]	  \  }}|  y wr"   r6   rR   r   r   s      r&   rT   z/DictComprehension._dict_keys.<locals>.<genexpr>-  s     !K<4$!K   r   rX   r   r.   s    r&   r   zDictComprehension._dict_keys,  s    !!!K4==?!KKKr(   c                 V    t        j                  d | j                         D              S )Nc              3   &   K   | ]	  \  }}|  y wr"   r6   r   s      r&   rT   z1DictComprehension._dict_values.<locals>.<genexpr>0  s     !M\T6&!Mr   r   r.   s    r&   r   zDictComprehension._dict_values/  s    !!!MT]]_!MMMr(   r   c                 v    t        | j                               }t        t        | j                  |g      g      S r"   r   r   r   FakeListr    r$   rI   rS   s      r&   _imitate_valuesz!DictComprehension._imitate_values2  2    $T%6%6%89
$"6"6EFGGr(   itemsc                     | j                         D cg c]8  \  }}t        t        | j                  t	        |      t	        |      g            : }}}t        t        | j                  |      g      S c c}}w r"   )r   r   	FakeTupler    r   r   r  )r$   rI   keyr   lazy_valuess        r&   _imitate_itemsz DictComprehension._imitate_items7  sz     #mmo	
 U (($S)$U+-	
 	
 $"6"6DEFF	
s   =A4c                     g S r"   r6   r.   s    r&   exact_key_itemsz!DictComprehension.exact_key_itemsF  s	     	r(   r"   )r1   r2   r3   ri   rn   r   r   r   r   r   r  r  r  r   r   s   @r&   r   r     s^    J&(&LN HH H GG Gr(   r   c                   X     e Zd ZdZddddZ fdZ fdZd Zdd	Zd
 Z	d Z
d Z xZS )SequenceLiteralValue)testlist_star_exprtestlistsubscriptlistr   r   r   )r   r   r   c                     t         |   |       || _        || _        | j                  j                  | j
                  v rd| _        y t        j                  |j                  d      | _        y )Nr   r   )
rm   rn   r   r   r}   _TUPLE_LIKEri   r  mappingr   )r$   r    r   r   rq   s       r&   rn   zSequenceLiteralValue.__init__R  sZ    )	!199>>T---%DO2::4==;KLDOKr(   c                 ~    | j                   dk(  r t        d | j                         D              S t        |          S )Nr   c              3   X   K   | ]"  }|j                         j                          $ y wr"   )rP   rd   )rR   xs     r&   rT   z5SequenceLiteralValue._get_generics.<locals>.<genexpr>_  s     LQ..0Ls   (*)ri   r   r   rm   r   )r$   rq   s    r&   r   z"SequenceLiteralValue._get_generics]  s5    ??g%L$//:KLLLw$&&r(   c                 &   t        |t              rt        | g      S t        t        t
        t              5  | j                         |   }ddd       dk(  s|j                  dk(  rt        S | j                  j                  |      S # 1 sw Y   >xY w)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   z)SequenceLiteralValue.py__simple_getitem__b  s|    eU#TF##'	8ZH 6,,.u56s{dii;6  ))44T::	6 6s   BBc           	   #     K   | j                         D ]R  }|dk(  s|j                  dk(  r$t        t        | j                  ddd             ;t        | j                  |       T t        | j                  |       E d{    y7 w)
        While values returns the possible values for any array field, this
        function returns the value for a certain index.
        r   r  N)r  r}   r   Slicer   r   r   )r$   r%   r   s      r&   r   zSequenceLiteralValue.py__iter__m  s}     
 ))+ 	BDs{dii;6 %U4+A+A4t%TUU#D$:$:DAA	B ))?)?FFFs   A?B	BB	c                 4    t        | j                               S r"   )lenr  r.   s    r&   	py__len__zSequenceLiteralValue.py__len__{  s    4((*++r(   c                    | j                   j                  }| j                   j                  | j                  v r|d d d   S |d   }|dv rg S |j                  dk(  r/|j                  d d d   D cg c]  }|j                  dk7  r| c}S |j                  dk(  rg }t	        |j                        }|D ]  }|dk(  rt        |       t        |d         t        |d       }||dk(  r"|j                  dk(  rC|j                  |       U|d	k(  sJ |j                  |t        |      f       t        |d         |S |j                  dk(  rg S |gS c c}w )
Nr   r   )]})testlist_comp	star_exprdictorsetmakerz**,r   )r   r   r}   r  iternextappend)r$   r   
array_noder   kviteratorr  ops           r&   r  z%SequenceLiteralValue.get_tree_entries  s[   II99>>T---SqS6MqT
(I??o-'1':':3Q3'? 2e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   /Ec                 P    d| j                   j                  d| j                  dS rz   )rq   r1   r   r.   s    r&   r~   zSequenceLiteralValue.__repr__  s    #~~66		BBr(   r"   )r1   r2   r3   r  r  rn   r   r   r   r&  r  r~   r   r   s   @r&   r  r  L  s?    CKG	L'
	;G,+$ZCr(   r  c                   n    e Zd ZdZd Zd ZddZ ed      d        Z ed      d	        Z	d
 Z
d Zd Zy)DictLiteralValuer   c                 L    t         j                  | |       || _        || _        y r"   )r   rn   r   r   )r$   r    r   r   s       r&   rn   zDictLiteralValue.__init__  s#     	$0!1	r(   c                 ^   t        j                  | j                  |      }| j                         D ]m  \  }}| j                  j                  |      D ]J  }|j                  |d      D ]3  }|j                         s| j                  j                  |      c c c S  L o t        d| z        )r  z==zNo key found in dictionary %s.)	r   create_simple_objectr    r  r   r   execute_operationr5   r   )r$   r   compiled_value_indexr  r   r   key_vs          r&   r   z%DictLiteralValue.py__simple_getitem__  s    '<<T=Q=QSXY//1 	HJC++66s; H001EtL HE++-#55@@GGHH	H
 $$Dt$KLLr(   Nc              #      K   t         }| j                         D ]#  \  }}|| j                  j                  |      z  }% |D ]  }t	        |        yw)r"  N)r   r  r   r   r   )r$   r%   r   r   _s        r&   r   zDictLiteralValue.py__iter__  s`      ))+ 	:DAqT++66q99E	:  	)A!%((	)s   AAr   c                 v    t        | j                               }t        t        | j                  |g      g      S r"   r  r  s      r&   r  z DictLiteralValue._imitate_values  r  r(   r  c                     | j                         D cg c]N  \  }}t        t        | j                  t	        | j
                  |      t	        | j
                  |      f            P }}}t        t        | j                  |      g      S c c}}w r"   )r  r   r
  r    r   r   r   r  )r$   rI   r   r   r  s        r&   r  zDictLiteralValue._imitate_items  s     ,0+@+@+B

 (8Z	 9$$t55x@t55zBD 
 
 $"6"6DEFF
s   AB
c              #      K   | j                         D ]Y  \  }}| j                  j                  |      D ]6  }t        |      s|j	                         t        | j                  |      f 8 [ yw)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)r  r   r   r
   r5   r   )r$   r   r   r  s       r&   r  z DictLiteralValue.exact_key_items  sq     
  $446 	]OHe--88B ]S>,,.d>T>TV[0\\\]	]s   A A0-A0c                 \     t        j                   fd j                         D              S )Nc              3   Z   K   | ]"  \  }}j                   j                  |       $ y wr"   r   r   rR   r   vr$   s      r&   rT   z0DictLiteralValue._dict_values.<locals>.<genexpr>  .      "
1 ""--a0"
   (+r   rX   r  r.   s   `r&   r   zDictLiteralValue._dict_values  ,    !! "
--/"
 
 	
r(   c                 \     t        j                   fd j                         D              S )Nc              3   Z   K   | ]"  \  }}j                   j                  |       $ y wr"   rF  rG  s      r&   rT   z.DictLiteralValue._dict_keys.<locals>.<genexpr>  rI  rJ  rK  r.   s   `r&   r   zDictLiteralValue._dict_keys  rL  r(   r"   )r1   r2   r3   ri   rn   r   r   r   r  r  r  r   r   r6   r(   r&   r8  r8    s]    JM) HH H G	G 	G]

r(   r8  c                   8     e Zd Z fdZd ZddZd Zd Z xZS )_FakeSequencec                 2    t         |   |       || _        y)z7
        type should be one of "tuple", "list"
        N)rm   rn   _lazy_value_list)r$   r    lazy_value_listrq   s      r&   rn   z_FakeSequence.__init__  s     	) /r(   c                     t        |t              rt        | g      S t        t        t
              5  | j                  |   }d d d        |j                         S # 1 sw Y   j                         S xY wr"   )r   r   r   r   r   r   rR  rP   r$   r   rS   s      r&   r   z"_FakeSequence.py__simple_getitem__  sa    eU#TF###J	: 	6..u5J	6!!	6!!s   AA1c                     | j                   S r"   )rR  r#   s     r&   r   z_FakeSequence.py__iter__
  s    $$$r(   c                 >    t        t        | j                              S r"   )boolr%  rR  r.   s    r&   rD   z_FakeSequence.py__bool__  s    C--.//r(   c                 N    dt        |       j                  d| j                  dS rz   )r}   r1   rR  r.   s    r&   r~   z_FakeSequence.__repr__  s    #Dz22D4I4IJJr(   r"   )	r1   r2   r3   rn   r   r   rD   r~   r   r   s   @r&   rP  rP    s    0"%0Kr(   rP  c                       e Zd ZdZy)r
  r   Nr   r6   r(   r&   r
  r
        Jr(   r
  c                       e Zd ZdZy)r  r   Nr   r6   r(   r&   r  r    r[  r(   r  c                   d     e Zd ZdZ fdZddZd Z ed      d        Zd Z	d Z
d	 Zd
 Z xZS )FakeDictr   c                 2    t         |   |       || _        y r"   )rm   rn   _dct)r$   r    r   rq   s      r&   rn   zFakeDict.__init__  s    )	r(   c              #      K   | j                   D ]-  }t        t        j                  | j                  |             / y wr"   )r`  r   r   r;  r    )r$   r%   r  s      r&   r   zFakeDict.py__iter__#  s:     99 	[C !>!>t?S?SUX!YZZ	[s   >A c                     t        t        t              5  | j                  |   }d d d        |j	                         S # 1 sw Y   j	                         S xY wr"   )r   r  r   r`  rP   rU  s      r&   r   zFakeDict.py__simple_getitem__'  sH    #Hi8 	*5)J	*!!	*!!s	   =Ar   c           	      r    t        t        | j                  t        | j	                               g      g      S r"   )r   r
  r    r   r   rH   s     r&   _valueszFakeDict._values,  s8      T..012
   	r(   c                 j    t        j                  d | j                  j                         D              S )Nc              3   <   K   | ]  }|j                           y wr"   rO   rQ   s     r&   rT   z(FakeDict._dict_values.<locals>.<genexpr>4  s     !Z*"2"2"4!ZrV   )r   rX   r`  r   r.   s    r&   r   zFakeDict._dict_values3  s&    !!!ZtyyGWGWGY!ZZZr(   c                 V    t        j                  d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr"   rO   rQ   s     r&   rT   z&FakeDict._dict_keys.<locals>.<genexpr>7  rU   rV   rW   r.   s    r&   r   zFakeDict._dict_keys6       !!!YtGX!YYYr(   c                 6    | j                   j                         S r"   )r`  r  r.   s    r&   r  zFakeDict.exact_key_items9  s    yy  r(   c                 P    d| j                   j                  d| j                  dS )Nr{   z: r|   )rq   r1   r`  r.   s    r&   r~   zFakeDict.__repr__<  s    !^^44dii@@r(   r"   )r1   r2   r3   ri   rn   r   r   r   rd  r   r   r  r~   r   r   s   @r&   r^  r^    sH    J["
 H [Z!Ar(   r^  c                   ,     e Zd Z fdZddZd Z xZS )MergedArrayc                 Z    t         |   |       |d   j                  | _        || _        y )N)rm   rn   ri   _arrays)r$   r    arraysrq   s      r&   rn   zMergedArray.__init__A  s(    ) *//r(   c              #   b   K   | j                   D ]  }|j                         E d {     y 7 wr"   )rp  r   )r$   r%   arrays      r&   r   zMergedArray.py__iter__F  s.     \\ 	*E'')))	*)s   #/-/c                 V    t        j                  d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr"   rO   rQ   s     r&   rT   z3MergedArray.py__simple_getitem__.<locals>.<genexpr>K  rU   rV   rW   )r$   r   s     r&   r   z MergedArray.py__simple_getitem__J  ri  r(   r"   )r1   r2   r3   rn   r   r   r   r   s   @r&   rm  rm  @  s    
*Zr(   rm  c           	         |j                   dk(  r|j                  |iS |j                   dk(  r+|j                  d   dv rt        | ||j                  d         S |j                   dv ri }t	        |j                  ddd         }d}|j                  t        | |            D ]=  }|dz  }	 t        |      }|j                  t        | |j                         |             ? t        |d      }|r|t        j                  | d|d|z         |S |j                   dk(  s|j                   dk(  ri S |j                   dk(  ri S t        # t        $ r t        j                  | d	d
|z         Y w xY w)zG
    Unpacking tuple assignments in for statements and expr_stmts.
    r^   r   r   )r   r   r   )r  r+  r   r  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_exprr,  )r}   r   r   r   r/  rt   r   r0  updaterP   StopIterationr   addNotImplementedError)	r   r   r   r   partsnrS   part	has_partss	            r&   r   r   N  s    }}&&	&	 X%6%6q%9Z%G#GUH4E4Ea4HII	 1 
1X&&ss+,--(:7H(MN 	TJFATE{
 

/9I9I9KTRS	T %	Y*LL">	!QTU!UW
	'	!X]]k%A 		+	%	
% ! `W&CT%Z]^%^``s   )E%E-,E-c                   "    e Zd Zd Zd ZefdZy)r#  c                 ^    |j                   | _         || _        || _        || _        || _        y r"   )r    _context_start_stop_step)r$   python_contextstartstopsteps        r&   rn   zSlice.__init__u  s,    -==&

r(   c                 ~    t        j                  | j                  j                  d      }|j	                         \  }|S )Nr   )r   r-   r  r    execute_with_values)r$   r   slice_values      r&   r=   zSlice._get_wrapped_value}  s4    **4==+H+H'R002r(   c                       fd}	 t         | j                         | j                         | j                              S # t        $ r t        ddd      cY S w xY w)ze
        Imitate CompiledValue.obj behavior and return a ``builtin.slice()``
        object.
        c                     | y j                   j                  |       }t        |      dk7  rt        |\  }t	        |      S )Nr   )r  r   r%  r   r	   )elementresultr   r$   s      r&   getz!Slice.get_safe_value.<locals>.get  sE    ]]--g6F6{a ! FE"5))r(   N)r   r  r  r  r   )r$   r   r  s   `  r&   r5   zSlice.get_safe_value  sS    
	*	+T[[)3tzz?C

OLL 	+tT**	+s   <A AAN)r1   r2   r3   rn   r=   r   r5   r6   r(   r&   r#  r#  t  s    
 &. +r(   r#  N);r   typingr   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   r8   r\   r   r   r   r   r   r   r   r   r   r   r  r8  rP  r
  r  r^  rm  r   r#  r6   r(   r&   <module>r     sx    # # 2 2 7 = I   1 1 E* *&"1*M "1JR R&!H3N 3Nl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(   