
    f	[                        d 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#      Z. G d$ d%e'e)e.      Z/ G d& d'e)      Z0 G d( d)e(e0e.      Z1 G d* d+e)      Z2 G d, d-e2      Z3 G d. d/e2      Z4 G d0 d1e(e)e.      Z5 G d2 d3e)      Z6d4 Z7 G d5 d6e      Z8y7)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                   2    e Zd ZddZd Zej                  Zy)IterableMixinNc                 $    | j                  |      S N)
py__iter__selfcontextualized_nodes     X/var/www/cvtools/html/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_nameinference_stater"   s    r$   py__stop_iteration_returnsz(IterableMixin.py__stop_iteration_returns   #    33D4H4H&QRSSr&   r   )__name__
__module____qualname__r%   r.   r   get_safe_value r&   r$   r   r      s    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                 F    | j                         j                         \  }|S r   )_get_clsexecute_annotation)r"   instances     r$   _get_wrapped_valuez GeneratorBase._get_wrapped_value)   s    MMO668	r&   c                 T    | j                   j                  j                  d      \  }|S N	Generator)r,   typing_modulepy__getattribute__)r"   	generators     r$   r8   zGeneratorBase._get_cls-   s&    ))77JJ;W
	r&   c                      y)NTr4   r-   s    r$   
py__bool__zGeneratorBase.py__bool__1       r&   __iter__c                     t        | g      S r   )r   r"   	argumentss     r$   _iterzGeneratorBase._iter4   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    rG   s     r$   _nextzGeneratorBase._next8   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_returns=   r/   r&   c                 .    t        j                  | d      S r=   )r   CompiledValueNamer-   s    r$   namezGeneratorBase.name@   s    ))$<<r&   c                     ddl m} | j                         j                         } ||t        t        f      }| j                         j                  |      S )Nr   TupleGenericManager)jedi.inference.gradual.genericsr_   merge_types_of_iteratepy__class__r   r8   with_generics)r"   r_   
gen_valuesgms       r$   get_annotated_class_objectz(GeneratorBase.get_annotated_class_objectD   sD    G002>>@
 *i!CD}},,R00r&   )r0   r1   r2   
array_typer;   r8   rC   r   rI   rX   r.   propertyr\   rf   r4   r&   r$   r6   r6   &   sv    J J     FJZ   ZT = =1r&   r6   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$   rl   zGenerator.__init__M   s    )'=$r&   c                     | j                   j                         }|r|j                  |      S | j                   j                         S r   )rm   infer_annotationsiterateget_yield_lazy_values)r"   r#   	iteratorss      r$   r    zGenerator.py__iter__Q   s@    00BBD	$$%899++AACCr&   c                 6    | j                   j                         S r   )rm   get_return_valuesr-   s    r$   r.   z$Generator.py__stop_iteration_returnsW   s    ++==??r&   c                 N    dt        |       j                  d| j                  dS N<z of >)typer0   rm   r-   s    r$   __repr__zGenerator.__repr__Z   s    #Dz22D4P4PQQr&   r   )	r0   r1   r2   __doc__rl   r    r.   r|   __classcell__ro   s   @r$   r>   r>   K   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   ^   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                   d    e Zd Z e       d        ZddZ eg       ed               ZddZd Z	y)	ComprehensionMixinc                     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   _defining_context
infer_noder   rr   	enumeraterO   unpack_tuple_to_dictr   predefine_names_nested
IndexError_entry_noderg   _value_node)r"   	comp_forsr   r   r   
input_nodeinput_typescniteratedexprlistirR   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   _sync_comp_for_noder   )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 rx   )r{   r0   r   r-   s    r$   r|   zComprehensionMixin.__repr__   s    #Dz22D4L4LMMr&   r   )
r0   r1   r2   r   r   r   r   r   r    r|   r4   r&   r$   r   r      sH    !#8 $8': ""-+  .+(Nr&   r   c                       e Zd Zd Zy)
_DictMixinc                 B    t        d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr   )rb   )rQ   c_sets     r$   rS   z+_DictMixin._get_generics.<locals>.<genexpr>   s     UUU&&(UrU   )r   get_mapping_item_valuesr-   s    r$   _get_genericsz_DictMixin._get_generics   s    Ud6R6R6TUUUr&   N)r0   r1   r2   r   r4   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[   rg   r-   s    r$   r\   zSequence.name   s    ))$@@r&   c                 @    | j                         j                         fS r   )ra   rb   r-   s    r$   r   zSequence._get_generics   s    ++-99;==r&   r4   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                         \  }|S )Nr   )GenericClassr^   )
jedi.inference.gradual.baser   r`   r_   r   r+   r,   rg   r   r9   )r"   r   r_   klasscs        r$   r;   zSequence._get_wrapped_value   sY    <G**4+?+?Q 5 5 78
 

 	 r&   c                      y r   r4   r-   s    r$   rC   zSequence.py__bool__   rD   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   )rg   _dict_valuesr   r   )r"   index_value_setr#   s      r$   py__getitem__zSequence.py__getitem__   s/    ??f$$$&&hv.//r&   N)r0   r1   r2   api_typerh   r\   r   r   r   r;   rC   r   r   r   r4   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{   rk   rl   r   r   r   )r"   r,   r   r   r   ro   s        r$   rl   z_BaseComprehension.__init__   s<    !&&/999)!1#5 %r&   )r0   r1   r2   rl   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   	TypeErrorrO   )r"   index	all_typesrR   s       r$   py__simple_getitem__z&ListComprehension.py__simple_getitem__   sl    eU#TF##*+	#J	: 	*"5)J	*!!	*!!s   
A((B N)r0   r1   r2   rg   r   r4   r&   r$   r   r      s    J"r&   r   c                       e Zd ZdZy)r   setNr0   r1   r2   rg   r4   r&   r$   r   r      s    Jr&   r   c                       e Zd Zy)r   N)r0   r1   r2   r4   r&   r$   r   r      s    r&   r   c                       e Zd Zd Zd Zy)_DictKeyMixinc                 B    | j                         | j                         fS r   )
_dict_keysr   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)r0   r1   r2   r   r   r4   r&   r$   r   r      s    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{   rk   rl   r   r   r   r   )r"   r,   r   r   r   r   ro   s         r$   rl   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   r3   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   r4   rQ   r   r   s      r$   rS   z/DictComprehension._dict_keys.<locals>.<genexpr>  s     !K<4$!K   r   rW   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   r4   r   s      r$   rS   z1DictComprehension._dict_values.<locals>.<genexpr>   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"   rH   rR   s      r$   _imitate_valuesz!DictComprehension._imitate_values"  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"   rH   keyr   lazy_valuess        r$   _imitate_itemsz DictComprehension._imitate_items'  sz     #mmo	
 U (($S)$U+-	
 	
 $"6"6DEFF	
s   =A4c                     g S r   r4   r-   s    r$   exact_key_itemsz!DictComprehension.exact_key_items6  s	     	r&   r   )r0   r1   r2   rg   rl   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   )
rk   rl   r   r   r{   _TUPLE_LIKErg   r  mappingr   )r"   r,   r   r   ro   s       r$   rl   zSequenceLiteralValue.__init__B  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   )rO   rb   )rQ   xs     r$   rS   z5SequenceLiteralValue._get_generics.<locals>.<genexpr>O  s     LQ..0Ls   (*)rg   r   r    rk   r   )r"   ro   s    r$   r   z"SequenceLiteralValue._get_genericsM  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__R  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__]  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__k  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_entrieso  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 rx   )ro   r0   r   r-   s    r$   r|   zSequenceLiteralValue.__repr__  s    #~~66		BBr&   r   )r0   r1   r2   r  r  rl   r   r   r    r$  r  r|   r~   r   s   @r$   r  r  <  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   rl   r   r   )r"   r,   r   r   s       r$   rl   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_operationr3   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"   rH   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	   r3   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   rQ   r   vr"   s      r$   rS   z0DictLiteralValue._dict_values.<locals>.<genexpr>  .      "
1 ""--a0"
   (+r   rW   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   rD  rE  s      r$   rS   z.DictLiteralValue._dict_keys.<locals>.<genexpr>  rG  rH  rI  r-   s   `r$   r   zDictLiteralValue._dict_keys  rJ  r&   r   )r0   r1   r2   rg   rl   r   r    r   r  r  r  r   r   r4   r&   r$   r6  r6    s]    JM) HH H G	G 	G]

r&   r6  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)rk   rl   _lazy_value_list)r"   r,   lazy_value_listro   s      r$   rl   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   rP  rO   r"   r   rR   s      r$   r   z"_FakeSequence.py__simple_getitem__  sa    eU#TF###J	: 	6..u5J	6!!	6!!s   AA1c                     | j                   S r   )rP  r!   s     r$   r    z_FakeSequence.py__iter__  s    $$$r&   c                 >    t        t        | j                              S r   )boolr#  rP  r-   s    r$   rC   z_FakeSequence.py__bool__  s    C--.//r&   c                 N    dt        |       j                  d| j                  dS rx   )r{   r0   rP  r-   s    r$   r|   z_FakeSequence.__repr__   s    #Dz22D4I4IJJr&   r   )	r0   r1   r2   rl   r   r    rC   r|   r~   r   s   @r$   rN  rN    s    0"%0Kr&   rN  c                       e Zd ZdZy)r  r   Nr   r4   r&   r$   r  r        Jr&   r  c                       e Zd ZdZy)r  r   Nr   r4   r&   r$   r  r    rY  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   )rk   rl   _dct)r"   r,   r   ro   s      r$   rl   zFakeDict.__init__  s    )	r&   c              #      K   | j                   D ]-  }t        t        j                  | j                  |             / y wr   )r^  r   r   r9  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^  rO   rS  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   rG   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   rN   rP   s     r$   rS   z(FakeDict._dict_values.<locals>.<genexpr>$  s     !Z*"2"2"4!ZrU   )r   rW   r^  r   r-   s    r$   r   zFakeDict._dict_values#  s&    !!!ZtyyGWGWGY!ZZZr&   c                 V    t        j                  d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr   rN   rP   s     r$   rS   z&FakeDict._dict_keys.<locals>.<genexpr>'  rT   rU   rV   r-   s    r$   r   zFakeDict._dict_keys&       !!!YtGX!YYYr&   c                 6    | j                   j                         S r   )r^  r  r-   s    r$   r  zFakeDict.exact_key_items)  s    yy  r&   c                 P    d| j                   j                  d| j                  dS )Nry   z: rz   )ro   r0   r^  r-   s    r$   r|   zFakeDict.__repr__,  s    !^^44dii@@r&   r   )r0   r1   r2   rg   rl   r    r   r   rb  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)rk   rl   rg   _arrays)r"   r,   arraysro   s      r$   rl   zMergedArray.__init__1  s(    ) *//r&   c              #   b   K   | j                   D ]  }|j                         E d {     y 7 wr   )rn  r    )r"   r#   arrays      r$   r    zMergedArray.py__iter__6  s.     \\ 	*E'')))	*)s   #/-/c                 V    t        j                  d | j                         D              S )Nc              3   <   K   | ]  }|j                           y wr   rN   rP   s     r$   rS   z3MergedArray.py__simple_getitem__.<locals>.<genexpr>;  rT   rU   rV   )r"   r   s     r$   r   z MergedArray.py__simple_getitem__:  rg  r&   r   )r0   r1   r2   rl   r    r   r~   r   s   @r$   rk  rk  0  s    
*Zr&   rk  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-  rr   r   r.  updaterO   StopIterationr   addNotImplementedError)	r   r   r   r   partsnrR   part	has_partss	            r$   r   r   >  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$   rl   zSlice.__init__e  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_valuem  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>.getw  sE    ]]--g6F6{a ! FE"5))r&   N)r   r  r  r  r   )r"   r   r  s   `  r$   r3   zSlice.get_safe_valuer  sS    
	*	+T[[)3tzz?C

OLL 	+tT**	+s   <A AAN)r0   r1   r2   rl   r;   r   r3   r4   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   r6   r>   r   r   r   r   r   r   r   r   r   r   r  r6  rN  r  r  r\  rk  r   r!  r4   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&   