Format: application/x-python-code
⬇ Download File (23.3 KB)
   1  o
   2  
   3  �h	[�@sdZddlmZddlmZddlmZmZmZddlm	Z	m
   4  Z
   5  mZmZddl
   6  mZmZddlmZddlmZmZdd	lmZmZmZmZmZmZmZdd
   7  lmZddlm Z ddl!m"Z"Gd
   8  d�d�Z#Gdd�dee#�Z$Gdd�de$�Z%dd�Z&Gdd�d�Z'Gdd�d�Z(Gdd�dee#�Z)Gdd�de'�Z*Gdd�de*e)�Z+Gdd �d e*e)�Z,Gd!d"�d"e*e$�Z-Gd#d$�d$�Z.Gd%d&�d&e'e)e.�Z/Gd'd(�d(e)�Z0Gd)d*�d*e(e0e.�Z1Gd+d,�d,e)�Z2Gd-d.�d.e2�Z3Gd/d0�d0e2�Z4Gd1d2�d2e(e)e.�Z5Gd3d4�d4e)�Z6d5d6�Z7Gd7d8�d8e�Z8d9S):zd
   9  Contains all classes and functions to deal with lists, dicts, generators and
  10  iterators in general.
  11  �)�compiled)�analysis)�LazyKnownValue�LazyKnownValues�
  12  LazyTreeValue)�get_int_or_none�	is_string�reraise_getitem_errors�SimpleGetItemNotFound)�
  13  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@s$eZdZddd�Zdd�ZejZdS)�
  14  IterableMixinNcCs
  15  |�|�S�N)�
  16  py__iter__��self�contextualized_node�r!�Sc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/value/iterable.py�
  17  py__next__�
  18  zIterableMixin.py__next__cC�tt�|jd�g�S�N�None�rr�builtin_from_name�inference_state�rr!r!r"�py__stop_iteration_returns�z(IterableMixin.py__stop_iteration_returnsr)�__name__�
  19  __module__�__qualname__r#r,r�get_safe_valuer!r!r!r"rs
  20  
  21  	rc@sleZdZdZdd�Zdd�Zdd�Zed�d	d
  22  ��Zed�ed�d
  23  d���Z	dd�Z
  24  edd��Zdd�Z
  25  dS)�
  26  GeneratorBaseNcCs|����\}|Sr)�_get_cls�execute_annotation)r�instancer!r!r"�_get_wrapped_value)sz GeneratorBase._get_wrapped_valuecCs|jj�d�\}|S�N�	Generator)r*Z
  27  typing_moduleZpy__getattribute__)r�	generatorr!r!r"r3-szGeneratorBase._get_clscCsdS)NTr!r+r!r!r"�
  28  py__bool__1�zGeneratorBase.py__bool__�__iter__cCs
  29  t|g�Sr)r�r�	argumentsr!r!r"�_iter4�
  30  zGeneratorBase._iter�send�__next__cC�t�dd�|��D��S)Ncs��|]}|��VqdSr��infer��.0�
  31  lazy_valuer!r!r"�	<genexpr>;��z&GeneratorBase._next.<locals>.<genexpr>�r�	from_setsrr=r!r!r"�_next8szGeneratorBase._nextcCr%r&r(r+r!r!r"r,=r-z(GeneratorBase.py__stop_iteration_returnscCst�|d�Sr7)r�CompiledValueNamer+r!r!r"�name@�zGeneratorBase.namecCs4ddlm}|����}||ttf�}|���|�S)Nr��TupleGenericManager)�jedi.inference.gradual.genericsrS�merge_types_of_iterate�py__class__rr3Z
  32  with_generics)rrSZ
  33  gen_valuesZgmr!r!r"�get_annotated_class_objectDsz(GeneratorBase.get_annotated_class_object)r.r/r0�
  34  array_typer6r3r:rr?rNr,�propertyrPrWr!r!r!r"r2&s
  35  
  36  r2cs:eZdZdZ�fdd�Zddd�Zdd�Zd	d
  37  �Z�ZS)r8zHandling of `yield` functions.c�t��|�||_dSr)�super�__init__�_func_execution_context)rr*Zfunc_execution_context��	__class__r!r"r\M�
  38  zGenerator.__init__NcCs"|j��}|r|�|�S|j��Sr)r]Zinfer_annotations�iterateZget_yield_lazy_values)rr �	iteratorsr!r!r"rQs
  39  
  40  
  41  zGenerator.py__iter__cC�
  42  |j��Sr)r]Zget_return_valuesr+r!r!r"r,Wr$z$Generator.py__stop_iteration_returnscC�dt|�j|jfS�Nz
  43  <%s of %s>)�typer.r]r+r!r!r"�__repr__Zr-zGenerator.__repr__r)	r.r/r0�__doc__r\rr,rg�
  44  __classcell__r!r!r^r"r8Ks
  45  r8cCs�|jd}|jd}|dkr9|jdjddkr6|jd}|jdkr'|jd}t||||jd|jdd�St}n
  46  |d	kr@t}n|d
  47  krFt}|jd}|jdkrU|jd}|||||jdd�S)Nr��{�:��comp_for�)�sync_comp_for_node�key_node�
  48  value_node�(�[)�defining_contextrp�
  49  entry_node)�childrenrf�DictComprehension�SetComprehension�GeneratorComprehension�ListComprehension)r*�value�atomZbracketZtest_list_comp�
  50  sync_comp_for�clsr!r!r"�comprehension_from_atom^s8
  51  
  52  
  53  
  54  
  55  �
  56  
  57  
  58  �r�c@sLeZdZe�dd��Zd
  59  dd�Zegd�edd���Zd
  60  d	d
  61  �Zdd�Z	dS)�ComprehensionMixincCs
  62  t||�Srr)r�parent_contextrnr!r!r"�_get_comp_for_context�r@z(ComprehensionMixin._get_comp_for_contextNc
  63  cs�|d}|jjdk}|jd}|p|j}|�|�}t||�}|j||d�}|jd}	t|�D][\}
  64  }|��}t	|||	�}
  65  |�
  66  ||�}|�||
  67  ��9z|�|dd�|�EdHWn!t
  68  yz|�|j�}|jdkru||�|j�fVn|VYnwWd�n1s�wYq/dS)Nrrnrm)�is_asyncrj�dict)�parentrfrw�_defining_context�
  69  infer_noderra�	enumeraterF�unpack_tuple_to_dictr�Zpredefine_names�_nested�
  70  IndexError�_entry_noderX�_value_node)r�	comp_forsr�rnr�Z
  71  input_nodeZinput_typesZcnZiterated�exprlist�irI�types�dct�contextr!r!r"r��s<�
  72  
  73  
  74  
  75  
  76  �
  77  ������zComprehensionMixin._nested��defaultccs$�tt|j��}|�|�EdHdSr)�tupler�_sync_comp_for_noder�)rr�r!r!r"�_iterate�s�zComprehensionMixin._iterateccs�|��D]}t|�VqdSr�r�r)rr �set_r!r!r"r�s��zComprehensionMixin.py__iter__cCrdre)rfr.r�r+r!r!r"rg�r-zComprehensionMixin.__repr__r)
  78  r.r/r0r
  79  r�r�rr�rrgr!r!r!r"r��s
  80  
  81  
  82  r�c@seZdZdd�ZdS)�
  83  _DictMixincCstdd�|��D��S)NcsrDr)rV)rHZc_setr!r!r"rJ�rKz+_DictMixin._get_generics.<locals>.<genexpr>)r��get_mapping_item_valuesr+r!r!r"�
  84  _get_generics�sz_DictMixin._get_genericsN)r.r/r0r�r!r!r!r"r��sr�c@sZeZdZdZedd��Zdd�Zedd�dd	��Zd
  85  d�Z	dd
  86  �Z
  87  edd��Zdd�Z
  88  dS)�Sequencer5cCst�||j�Sr)rrOrXr+r!r!r"rP�sz
  89  Sequence.namecCs|����fSr)rUrVr+r!r!r"r���zSequence._get_genericsr!r�cC�|��Sr)r�r+r!r!r"�_cached_generics��zSequence._cached_genericscCsDddlm}ddlm}t�|j|j�}||||�����	�\}|S)Nr)�GenericClassrR)
  90  Zjedi.inference.gradual.baser�rTrSrr)r*rXr�r4)rr�rS�klass�cr!r!r"r6�s
  91  ��zSequence._get_wrapped_valuecCsdSrr!r+r!r!r"r:�r;zSequence.py__bool__cCs|jjSr)r*Zbuiltins_moduler+r!r!r"r��r�zSequence.parentcCs |jdkr	|��Stt|g��S)Nr�)rX�_dict_valuesrr)rZindex_value_setr r!r!r"�
  92  py__getitem__�s
  93  zSequence.py__getitem__N)r.r/r0Zapi_typerYrPr�r
  94  r�r6r:rr�r�r!r!r!r"r��s
  95  
  96  
  97  
  98  r�cseZdZ�fdd�Z�ZS)�_BaseComprehensioncs0|jdksJ�t��|�||_||_||_dS�Nr~)rfr[r\r�r�r�)rr*rurprvr^r!r"r\�s
  99  
 100  z_BaseComprehension.__init__)r.r/r0r\rir!r!r^r"r��sr�c@seZdZdZdd�ZdS)r{�listcCs`t|t�r
 101  t|g�St|���}ttt��||}Wd�|��S1s'wY|��Sr)	�
 102  isinstance�slicerr�rr	r��	TypeErrorrF)r�indexZ	all_typesrIr!r!r"�py__simple_getitem__�s
 103  
 104  
 105  
 106  ��z&ListComprehension.py__simple_getitem__N)r.r/r0rXr�r!r!r!r"r{�sr{c@�eZdZdZdS)ry�setN�r.r/r0rXr!r!r!r"ry��ryc@seZdZdS)rzN)r.r/r0r!r!r!r"rz�srzc@seZdZdd�Zdd�ZdS)�
 107  _DictKeyMixincCs|��|��fSr)�
 108  _dict_keysr�r+r!r!r"r��sz%_DictKeyMixin.get_mapping_item_valuescCr�r)r�r+r!r!r"�get_key_values�r�z_DictKeyMixin.get_key_valuesN)r.r/r0r�r�r!r!r!r"r��sr�csjeZdZdZ�fdd�Zddd�Zdd�Zd	d
 109  �Zdd�Ze	d
 110  �dd��Z
 111  e	d�dd��Zdd�Z�Z
 112  S)rxr�cs6|jdksJ�t��|�||_||_||_||_dSr�)rfr[r\r�r�r�r�)rr*rurprqrrr^r!r"r\s
 113  zDictComprehension.__init__Nccs"�|��D]	\}}t|�VqdSrr�)rr �keys�valuesr!r!r"rs��zDictComprehension.py__iter__cCs@|��D]\}}|D]}|jt�d�|kr|Sq
 114  qt��)Nr�)r�r1�objectr
 115  )rr�r�r��kr!r!r"r�s��z&DictComprehension.py__simple_getitem__cCrC)Ncss�|]\}}|VqdSrr!�rHr�r�r!r!r"rJrKz/DictComprehension._dict_keys.<locals>.<genexpr>�rrMr�r+r!r!r"r��zDictComprehension._dict_keyscCrC)Ncss�|]\}}|VqdSrr!r�r!r!r"rJ rKz1DictComprehension._dict_values.<locals>.<genexpr>r�r+r!r!r"r�r�zDictComprehension._dict_valuesr�cC� t|���}tt|j|g�g�Sr�rr�r�FakeListr*�rr>rIr!r!r"�_imitate_values"�z!DictComprehension._imitate_values�itemsc�(�fdd����D�}tt�j|�g�S)Ncs,g|]\}}tt�jt|�t|�g���qSr!)r�	FakeTupler*r)rH�keyr|r+r!r"�
 116  <listcomp>)s�����z4DictComprehension._imitate_items.<locals>.<listcomp>)r�rr�r*�rr>Zlazy_valuesr!r+r"�_imitate_items's
 117  �z DictComprehension._imitate_itemscCsgSrr!r+r!r!r"�exact_key_items6sz!DictComprehension.exact_key_itemsr)r.r/r0rXr\rr�r�r�rr�r�r�rir!r!r^r"rxs
 118  	
 119  
 120  rxcsbeZdZdZdddd�Z�fdd�Z�fdd	�Zd
 121  d�Zdd
 122  d�Zdd�Z	dd�Z
 123  dd�Z�ZS)�SequenceLiteralValue)�testlist_star_expr�testlistZ
 124  subscriptlistr�r�r�)rsrtrkcsHt��|�||_||_|jj|jvrd|_dStj|j	d|_	dS)Nr�r)
 125  r[r\r}r�rf�_TUPLE_LIKErXr��mappingrw�rr*rur}r^r!r"r\Bs
 126  zSequenceLiteralValue.__init__cs*|jdkrtdd�|��D��St���S)Nr�css�|]	}|����VqdSr)rFrV)rH�xr!r!r"rJOs�z5SequenceLiteralValue._get_generics.<locals>.<genexpr>)rXr�rr[r�r+r^r!r"r�Ms
 127  
 128  z"SequenceLiteralValue._get_genericscCsnt|t�r
 129  t|g�Stttt��|��|}Wd�n1s!wY|dks/|jdkr1t	S|j
 130  �|�S)�9Here the index is an int/str. Raises IndexError/KeyError.Nrl�	subscript)r�r�rr	r��KeyErrorr��get_tree_entriesrfrr�r�)rr��noder!r!r"r�Rs
 131  
 132  �z)SequenceLiteralValue.py__simple_getitem__Nccs^�|��D]}|dks|jdkrtt|jddd��Vqt|j|�Vqt|j|�EdHdS)��
 133          While values returns the possible values for any array field, this
 134          function returns the value for a certain index.
 135          rlr�N)r�rfr�Slicer�rr)rr r�r!r!r"r]s�zSequenceLiteralValue.py__iter__cCst|���Sr)�lenr�r+r!r!r"�	py__len__krQzSequenceLiteralValue.py__len__cCs|jj}|jj|jvr|ddd�S|d}|dvrgS|jdkr.dd�|jddd�D�S|jdkr|g}t|j�}|D]=}|dkrLt|�t|d�q<t|d�}|dusY|d	kre|jd
 136  kr_q<|�|�q<|dkskJ�|�|t|�f�t|d�q<|S|jd
 137  kr�gS|gS)Nrorj)�]�}�)�
 138  testlist_compcSsg|]	}|jdkr|�qS)�	star_expr)rf)rHr|r!r!r"r�{s
 139  �z9SequenceLiteralValue.get_tree_entries.<locals>.<listcomp>Zdictorsetmakerz**�,r�rl)r}rwrfr��iter�next�append)rr�Z
 140  array_node�kv�iteratorr��opr!r!r"r�os6
 141  
 142  
 143  
 144  
 145  
 146  z%SequenceLiteralValue.get_tree_entriescC�d|jj|jfSre)r_r.r}r+r!r!r"rg��zSequenceLiteralValue.__repr__r)
 147  r.r/r0r�r�r\r�r�rr�r�rgrir!r!r^r"r�<s�
 148  -r�c@sbeZdZdZdd�Zdd�Zddd�Zed	�d
 149  d��Zed�d
 150  d��Z	dd�Z
 151  dd�Zdd�ZdS)�DictLiteralValuer�cCst�||�||_||_dSr)r�r\r�r}r�r!r!r"r\�s
 152  zDictLiteralValue.__init__cCspt�|j|�}|��D]&\}}|j�|�D]}|�|d�D]}|��r/|j�|�Sqqqtd|��)r�z==zNo key found in dictionary %s.)	r�create_simple_objectr*r�r�r�Zexecute_operationr1r
 153  )rr�Zcompiled_value_indexr�r|r�Zkey_vr!r!r"r��s���z%DictLiteralValue.py__simple_getitem__Nccs@�t}|��D]\}}||j�|�O}q|D]}t|�VqdS)r�N)rr�r�r�r)rr r�r��_r!r!r"r�s��zDictLiteralValue.py__iter__r�cCr�rr�r�r!r!r"r��r�z DictLiteralValue._imitate_valuesr�cr�)Nc	s4g|]\}}tt�jt�j|�t�j|�f���qSr!)rr�r*rr�)rHrqrrr+r!r"r��s�
 154  
 155  ���z3DictLiteralValue._imitate_items.<locals>.<listcomp>)r�rr�r*r�r!r+r"r��s
 156  �zDictLiteralValue._imitate_itemsccsH�|��D]\}}|j�|�D]}t|�r |��t|j|�fVqqdS)z�
 157          Returns a generator of tuples like dict.items(), where the key is
 158          resolved (as a string) and the values are still lazy values.
 159          N)r�r�r�rr1r)rrqr|r�r!r!r"r��s����z DictLiteralValue.exact_key_itemsc�t��fdd����D��S)Nc3s �|]\}}�j�|�VqdSr�r�r��rHr��vr+r!r"rJ��
 160  �
 161  �
 162  �z0DictLiteralValue._dict_values.<locals>.<genexpr>�rrMr�r+r!r+r"r����zDictLiteralValue._dict_valuescr�)Nc3s �|]\}}�j�|�VqdSrr�r�r+r!r"rJ�r�z.DictLiteralValue._dict_keys.<locals>.<genexpr>r�r+r!r+r"r��r�zDictLiteralValue._dict_keysr)
 163  r.r/r0rXr\r�rrr�r�r�r�r�r!r!r!r"r��s
 164  
 165  
 166  
 167  
 168  r�cs>eZdZ�fdd�Zdd�Zddd�Zdd	�Zd
 169  d�Z�ZS)
 170  �
 171  _FakeSequencecst��|�||_dS)z7
 172          type should be one of "tuple", "list"
 173          N)r[r\�_lazy_value_list)rr*Zlazy_value_listr^r!r"r\�s
 174  z_FakeSequence.__init__cCsVt|t�r
 175  t|g�Sttt��|j|}Wd�|��S1s"wY|��Sr)r�r�rr	r�r�r�rF�rr�rIr!r!r"r��s
 176  
 177  
 178  ��z"_FakeSequence.py__simple_getitem__NcCs|jSr)r�rr!r!r"r�sz_FakeSequence.py__iter__cCstt|j��Sr)�boolr�r�r+r!r!r"r:�r�z_FakeSequence.py__bool__cCrdre)rfr.r�r+r!r!r"rgr-z_FakeSequence.__repr__r)	r.r/r0r\r�rr:rgrir!r!r^r"r��s
 179  r�c@r�)r�r�Nr�r!r!r!r"r�r�r�c@r�)r�r�Nr�r!r!r!r"r�r�r�csbeZdZdZ�fdd�Zddd�Zdd�Zed	�d
 180  d��Zdd
 181  �Z	dd�Z
 182  dd�Zdd�Z�Z
 183  S)�FakeDictr�crZr)r[r\�_dct)rr*r�r^r!r"r\r`zFakeDict.__init__Nccs&�|jD]}tt�|j|��VqdSr)r�rrr�r*)rr r�r!r!r"rs�
 184  �zFakeDict.py__iter__cCsBttt��|j|}Wd�|��S1swY|��Sr)r	r�r�r�rFr�r!r!r"r�s
 185  ��zFakeDict.py__simple_getitem__r�cCstt|jt|���g�g�Sr)rr�r*rr�r=r!r!r"�_valuess�zFakeDict._valuescCst�dd�|j��D��S)NcsrDrrErGr!r!r"rJ$rKz(FakeDict._dict_values.<locals>.<genexpr>)rrMr�r�r+r!r!r"r�#szFakeDict._dict_valuescCrC)NcsrDrrErGr!r!r"rJ'rKz&FakeDict._dict_keys.<locals>.<genexpr>rLr+r!r!r"r�&r�zFakeDict._dict_keyscCrcr)r�r�r+r!r!r"r�)r$zFakeDict.exact_key_itemscCr�)Nz<%s: %s>)r_r.r�r+r!r!r"rg,r�zFakeDict.__repr__r)r.r/r0rXr\rr�rr�r�r�r�rgrir!r!r^r"r�s
 186  
 187  r�cs.eZdZ�fdd�Zddd�Zdd�Z�ZS)	�MergedArraycs"t��|�|dj|_||_dS)N�����)r[r\rX�_arrays)rr*Zarraysr^r!r"r\1s
 188  zMergedArray.__init__Nccs �|jD]	}|��EdHqdSr)r�r)rr �arrayr!r!r"r6s�
 189  �zMergedArray.py__iter__cCrC)NcsrDrrErGr!r!r"rJ;rKz3MergedArray.py__simple_getitem__.<locals>.<genexpr>rL)rr�r!r!r"r�:r�z MergedArray.py__simple_getitem__r)r.r/r0r\rr�rir!r!r^r"r�0s
 190  r�c	
 191  Cs(|jdkr
 192  |j|iS|jdkr|jddvrt|||jd�S|jdvri}t|jddd��}d}|�t||��D],}|d7}zt|�}WntyZt	j
 193  |d	|d
 194  |d�Yq:w|�t||��|��q:t|d�}|r}|dur}t	j
 195  |d|d
 196  |d�|S|jdks�|jdkr�iS|jdkr�iSt
 197  �)zG
 198      Unpacking tuple assignments in for statements and expr_stmts.
 199      rPr}r)rsrtrj)r�r�r�r�Nrozvalue-error-too-many-valuesz3ValueError: too many values to unpack (expected %s))�messagezvalue-error-too-few-valuesz.ValueError: need more than %s values to unpack�powerZ	atom_exprr�)rfr|rwr�r�rarr��
 200  StopIterationr�add�updaterF�NotImplementedError)	r�r�r�r��parts�nrI�partZ	has_partsr!r!r"r�>s:
 201  
 202  
 203  
 204  
 205  ��
 206  
 207  �
 208  r�c@s(eZdZdd�Zdd�Zefdd�ZdS)r�cCs$|j|_||_||_||_||_dSr)r*�_context�_start�_stop�_step)rZpython_context�start�stop�stepr!r!r"r\es
 209  
 210  zSlice.__init__cCst�|jjd�}|��\}|S)Nr�)rr)r	r*Zexecute_with_values)rr|�slice_valuer!r!r"r6ms
 211  zSlice._get_wrapped_valuecsL�fdd�}zt|�j�|�j�|�j��WSty%tddd�YSw)ze
 212          Imitate CompiledValue.obj behavior and return a ``builtin.slice()``
 213          object.
 214          cs6|durdS�j�|�}t|�dkrt�|\}t|�S)Nrj)r	r�r�r�r)�element�resultr|r+r!r"�getwsz!Slice.get_safe_value.<locals>.getN)r�r
 215  rrr�)rr�rr!r+r"r1rs
 216   �zSlice.get_safe_valueN)r.r/r0r\r6rr1r!r!r!r"r�dsr�N)9rhZjedi.inferencerrZjedi.inference.lazy_valuerrrZjedi.inference.helpersrrr	r
 217  Zjedi.inference.utilsrrZjedi.inference.cacher
 218  Zjedi.inference.filtersrrZjedi.inference.base_valuerrrrrrrZjedi.parser_utilsrZjedi.inference.contextrZ#jedi.inference.value.dynamic_arraysrrr2r8r�r�r�r�r�r{ryrzr�rxr�r�r�r�r�r�r�r�r�r!r!r!r"�<module>sD$%$0%	
 219  
 220  8dJ$&