Format: application/x-python-code
⬇ Download File (21.3 KB)
   1  o
   2  
   3  �hߍ�@s�dZddlZddlZddlmZddlmZddlmZddlm	Z	m
   4  Z
   5  mZmZm
   6  Z
   7  ddlmZddlmZdd	lmZdd
   8  lmZddlmZddlmZdd
   9  lmZmZddlmZddlmZmZddlmZddlmZm Z m!Z!m"Z"m#Z#ddl$m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/ddl0m1Z1ddl2m3Z3ddddddd d!d"d#d$d%d&d'�
  10  Z4d(d)�e4�5�D�Z6d*d+�Z7d,d-�Z8d.d/�Z9e'e
  11  d0�d1d2��Z:ej;e7d3d4���Z<d5d6�Z=d7d8�Z>e7d[d9d:��Z?ej;d[d;d<��Z@d=d>�ZAed?d@��ZBdAdB�ZCdCdD�ZDdEdF�ZEdGdH�ZFdIdJ�ZGdKdL�ZHdMdN�ZIdOdP�ZJe3�K�dQdR��ZLe'�dSdT��ZMdUdV�ZNGdWdX�dXe�ZOdYdZ�ZPdS)\z&
  12  Functions inferring the syntax tree.
  13  �N)�tree)�debug)�parser_utils)�ValueSet�	NO_VALUES�ContextualizedNode�iterator_to_value_set�iterate_values)�
  14  LazyTreeValue)�compiled)�	recursion)�analysis)�imports)�	arguments)�
  15  ClassValue�
  16  FunctionValue)�iterable)�ListModification�DictModification)�TreeInstance)�	is_string�
  17  is_literal�	is_number�get_names_of_node�is_big_annoying_library)�COMPARISON_OPERATORS)�inference_state_method_cache)�VersionInfo)�
  18  annotation)�TreeNameDefinition)�CompForContext��	Decoratee)�plugin_manager�__add__�__sub__�__mul__�
  19  __matmul__�__truediv__�__floordiv__�__mod__�__pow__�
  20  __lshift__�
  21  __rshift__�__and__�__or__�__xor__)
  22  �+�-�*�@�/z//�%�**z<<z>>�&�|�^cCs"i|]
  23  \}}|d|dd��qS)�__r�N�)�.0�k�vr=r=�Pc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/syntax_tree.py�
  24  <dictcomp>2s�rBcs�fdd�}|S)a{
  25      This is for now the way how we limit type inference going wild. There are
  26      other ways to ensure recursion limits as well. This is mostly necessary
  27      because of instance (self) access that can be quite tricky to limit.
  28  
  29      I'm still not sure this is the way to go, but it looks okay for now and we
  30      can still go anther way in the future. Tests are there. ~ dave
  31      cs�|j}|j}z-|j|d7<d}|jdur"|��|jur"|d9}|j||kr2t�d|�tWSWnt	yAd|j|<Ynw�|g|�Ri|��S)N�i,�dz+In value %s there were too many inferences.)
  32  �	tree_node�inference_stateZinferred_element_counts�parent_context�	get_value�builtins_moduler�warningr�KeyError)�context�args�kwargs�nrF�maximum��funcr=rA�wrapper@s 
  33  ��z$_limit_value_infers.<locals>.wrapperr=)rRrSr=rQrA�_limit_value_infers7s	rTc	s�t|t�r
  34  t||�S|}|dur%|j}|jdvrnt�|�r!d}n|dus|j�|�}|dur�|r�|jdkr�|j	j
  35  r�|jd}ig}|j|j
  36  kr�t|�}t|�}dd�|D��t�fdd�|D��r�|D][}|j	�||�}	t|	�dkr�t|�t|	�dkr�t�d	|�ig}n8t|�}
  37  g}|	D]#}t|
  38  �}t|�D]\}
  39  }|��||
  40  <t|g�||
  41  |j<q�||7}q�qd|D]}|	||j<q�qdt|�dkr�t}|D]}|�||��|t||�O}Wd�n1s�wYq�|St||�S|r�t||�St||�S)
  42  N)�if_stmt�for_stmtrUrCcSsg|]}|j�qSr=��value)r>�er=r=rA�
  43  <listcomp>uszinfer_node.<locals>.<listcomp>c3s�|]}|j�vVqdS�NrW)r>�i�Zstr_element_namesr=rA�	<genexpr>vs�zinfer_node.<locals>.<genexpr>�z,Too many options for if branch inference %s.)�
  44  isinstancer �_infer_node�parent�typerZis_scope�predefined_names�getrFZis_analysis�children�	start_pos�end_posr�any�infer�lenr�dbg�list�	enumerate�copyrrXr�predefine_names�_infer_node_if_inferred)rL�elementrU�predefined_if_name_dictZif_stmt_testZ
  45  name_dictsZif_namesZ
  46  element_namesZif_nameZdefinitionsZoriginal_name_dictsZ
  47  definitionZnew_name_dictsr\Z	name_dict�resultr=r]rA�
  48  infer_nodeXsh
  49  
  50  
  51  
  52  �
  53  
  54  ����
  55  
  56  
  57  rucCsB|}|dur|j}|j�|�}|durt||�S|dust||�S)zA
  58      TODO This function is temporary: Merge with infer_node.
  59      N)rbrdrera�_infer_node_cached)rLrrrbrsr=r=rArq�s
  60  �
  61  rq)�defaultcCs
  62  t||�Sr[)ra)rLrrr=r=rArv�s
  63  rvcCs�t�d||j|�|j}|j}|dvrt||�S|dkr%tt�||�g�S|dkr.t	||�S|dvr�|j
  64  d}|j
  65  dd�}d}|jd	krQ|jd
  66  krQd}|�d�}|�
  67  |�}t|�D] \}}	|	dkrt|�
  68  ||d�}
  69  t|||	|
  70  �}nt|||	�}qZ|r�|����S|S|d
  71  vr�tt�|||�g�S|dvr�|�
  72  |j
  73  d�}|j
  74  dd�D]}t||�}q�|S|dkr�|�
  75  |j
  76  d�|�
  77  |j
  78  d�BS|dkr�|jdkr�|j}tdt|j�|f��tt�|d�g�S|dk�rt||j
  79  d�}|j
  80  ddd�D]	}
  81  |j|
  82  |d�}q�|S|dk�r|�
  83  |j
  84  d�S|dk�r"t�||j
  85  d���S|dk�rNt|j
  86  ��rL|j
  87  djdk�rL|j
  88  dj
  89  d}|�
  90  |��d�� �}|��St!S|dk�r[|�
  91  |j
  92  d�St"||�S)Nzinfer_node %s@%s in %s)�name�number�string�atom�strings�keyword�fstring�lambdef�	expr_stmt)�power�	atom_exprrrCFr}�awaitTr7)Ztestlist_star_exprZtestlist)Znot_test�factor������test�operatorz...zunhandled operator %s in %s �EllipsisZdotted_namer<)�name_contextZ
  93  eval_input�	annassignZ
  94  yield_exprZ	yield_arg�__iter__�namedexpr_test)#rrlrgrFrc�
  95  infer_atomrr�from_context�infer_expr_stmtrfrX�poprurn�_infer_comparison�
  96  infer_trailer�py__await__�py__stop_iteration_returnsr�SequenceLiteralValue�infer_factorrb�AssertionError�reprr�builtin_from_name�py__getattribute__r�infer_annotation�execute_annotationrk�execute_with_valuesr�
  97  infer_or_test)rLrrrF�typZfirst_childrfZ	had_await�	value_setr\�trailer�rightr��originZ	next_name�
  98  generatorsr=r=rAra�s�
  99  
 100  
 101  
 102  
 103  ��
 104  
 105  
 106  
 107  �
 108  
 109  �
 110  
 111  racCs�|jdd�\}}|dkrd}|dkr%|j\}}}|�t||�t||��St�d||�|dkr7|j||d�S|dksAJd|��t�|j	|||�}|�
 112  |�S)	Nr<�)�[zinfer_trailer: %s in %s�.)r�Zname_or_str�(ztrailer_op is actually %s)rfZget_item�_infer_subscript_listrrrlr�rZ
 113  TreeArgumentsrF�execute)rLZatom_valuesr�Z
 114  trailer_op�node�_rMr=r=rAr�s$��
 115  r�c
 116  	s�|j}�jdkr>t��ddd�p�}|jdkr't�fdd�|��D��s&�}n|jdkr.�}|j}t��r7d}|j�|d�S�jd	kr_�j	d
 117  vrRt
 118  t�|�j	�g�S�j	dkrYt
 119  SJd
 120  ���t�tj�ru|j��j	�}t
 121  t�||�g�S�jdkr�t|�jd�}�jdd�D]}t||�}t||d|�}q�|S�jdkr�t�|�S�j}|ddkr�t|�dks�|djdkr�t|dj�dks�|�|d�Sz	|djd}	Wnttfy�Yn(w|	dkr�z	|djd}	Wn	ty�Ynw|	jdv�rt
 122  t�||��g�S|d}
 123  z|
 124  j}Wnt�yg}Ynw|ddk�r:|
 125  dk�s2d|v�s2d|v�r:t�||��}nt�||��}t
 126  |g�S)z�
 127      Basically to process ``atom`` nodes. The parser sometimes doesn't
 128      generate the node (because it has just one child). In that case an atom
 129      might be a name or a literal as well.
 130      rxr�rrUc3s.�|]}|j�jko|jknVqdSr[)rgrh)r>rO�r{r=rAr^%s�,zinfer_atom.<locals>.<genexpr>N��positionr})�False�True�None�yieldFzCannot infer the keyword %sr|rrCr1r~r�r<Z
 131  testlist_comp�:�)�comp_for�
 132  sync_comp_for�{�}r7)rFrcr�search_ancestorriZget_test_nodesrg�_is_annotation_namer�rXrrr�rr`�LiteralZcompiled_subprocessZsafe_literal_eval�create_simple_objectr�rfr�Zget_string_value_setrkru�
 133  IndexError�AttributeErrorrZcomprehension_from_atomZDictLiteralValuer�)
 134  rLr{�state�stmtr�rzr�r��cr�Z
 135  array_nodeZarray_node_c�	new_valuer=r�rAr�sz
 136  
 137  �
 138  
 139  
 140  
 141  
 142  
 143  
 144  
 145  ���
 146  �"
 147  
 148  r�cCs~t�|j|��.}|r-|dur t�|||�}|r |Wd�St|||�Wd�SWd�tS1s8wYtSr[)rZexecution_allowedrFrZ"find_type_from_comment_hint_assign�_infer_expr_stmtr)rLr��	seek_name�allowedZpep0484_valuesr=r=rAr�os��
 149  �
 150  �	�	r�c	s�dd�}t�d||�|��}��|��|r t�|�}t|���t|��d�}||�\}�|dvo5|jdk}|s:|r�|j	dd�d	j
 151  }	�j|	|jd
 152  �}
 153  |ra���fdd��t
 154  �fd
 155  d�|
 156  D���npt�|�}|j
 157  dd�|_
 158  t�|d�}|dur�|jdkrʈr�t�|�r�|��}
 159  t�|
 160  �}t|���|��}|D].}|jdj
 161  |��i}��||����|�}t�|
 162  ||�}
 163  Wd�n1s�wYq�|
 164  �nt�|
 165  |���t�d���S)aD
 166      The starting point of the completion. A statement always owns a call
 167      list, which are the calls, that a statement does. In case multiple
 168      names are defined in the statement, `seek_name` returns the result for
 169      this name.
 170  
 171      expr_stmt: testlist_star_expr (annassign | augassign (yield_expr|testlist) |
 172                       ('=' (yield_expr|testlist_star_expr))*)
 173      annassign: ':' test ['=' test]
 174      augassign: ('+=' | '-=' | '*=' | '@=' | '/=' | '%=' | '&=' | '|=' | '^=' |
 175                  '<<=' | '>>=' | '**=' | '//=')
 176  
 177      :param stmt: A `tree.ExprStmt`.
 178      cSs`|jd}|jdvrdS|jd}|jdkst|j�dkrdS|jd}|jddk|jdfS)	Nr)r�r�)FNrxr<r�r�rC)rfrcrk)r�r�rxr�r=r=rA�
 179  check_setitem�s
 180  
 181  
 182  
 183  z'_infer_expr_stmt.<locals>.check_setitemzinfer_expr_stmt %s (%s)N)�=Nr�T)�include_setitemrr�cs:t���}|jdkrt|�|�S|jdkrt|�|�S|S)N�dictrm)�ContextualizedSubscriptListNode�
 184  array_typerr)r@r�)rL�
 185  subscriptlistr�r=rA�to_mod�s
 186  
 187  
 188  z _infer_expr_stmt.<locals>.to_modc3s�|]}�|�VqdSr[r=)r>r@)r�r=rAr^���z#_infer_expr_stmt.<locals>.<genexpr>r�rVrCzinfer_expr_stmt result %s)rrlZget_rhsrur�check_tuple_assignments�nextZyield_operatorsrcZget_defined_namesrXr�rgrrorr�rZfor_stmt_defines_one_nameZget_testlistrrmrj�iteraterfrpr�)rLr�r�r��rhsrOZfirst_operatorZ
 189  is_setitemZis_annassignrx�left_valuesr�rVr��cnZordered�
 190  lazy_value�dct�tr=)rLr�r�r�rAr�}sH
 191  
 192  
 193  
 194  
 195  �
 196  
 197  ��r�cCs�t|j�}|�t|��}|D]K}t|�}|jdkr$d�dd�|jD��}|dvrOtdd�|D��}|dhkr@|dkr?|�|�}q|d	hkrN|dkrN|�|�}qt||||�|��}qt�	d
 198  |�|S)NZcomp_op� css�|]}|jVqdSr[rW�r>r�r=r=rAr^�s�z infer_or_test.<locals>.<genexpr>)�and�orcs��|]}|��VqdSr[)�
 199  py__bool__)r>�leftr=r=rAr^�r�Tr�Fzinfer_or_test types %s)
 200  �iterrfrur�rc�join�setr�rrl)rLZor_test�iterator�typesr�r�Z
 201  left_boolsr=r=rAr��s*
 202  
 203  
 204  
 205  �
 206  
 207  ��r�ccs|�|D]8}|dkrt|�r|��Vq|dkr8|��}|dur.t|jj�d������Vqt	�
 208  |j|�Vq|VqdS)z6
 209      Calculates `+`, `-`, `~` and `not` prefixes.
 210      r2�notN�bool)r�negater�rmrFrIr�r�r�rr�)r�r�rX�br=r=rAr��s"�
 211  ����r�cCsFt}|D]}t|�rt�||jj�}||��O}q|t|g�O}q|Sr[)rrrr�rx�string_namer�r)rFrtZ
 212  new_resultr��clsr=r=rA�_literals_to_types�sr�cs��j�t�t�r�}nt�j�}|r�s!|pt�ptB}t�|�S|dkr9tdd�t�|��D��r9t	�
 213  |�f�St|�t��dkrJt�|�B�St	�
 214  ����fdd�|D��S)Nr9css �|]}|��p|��VqdSr[)�is_class�is_compiled)r>rXr=r=rAr^s
 215  ��
 216  �z$_infer_comparison.<locals>.<genexpr>�c3s*�|]}�D]}t��|�|�VqqdSr[)�_infer_comparison_part)r>r�r��rLr��right_valuesr�r=rAr^s����)rFr`�strrXrr��all�	itertools�chainr�	from_setsrk)rLr�r�r�Zoperator_strrtr=r�rAr�s 
 217  
 218  
 219  
 220  ��r�cCs�t�|ddd�}|durdS|jdvr+|j}|dur)|j|jko&|jkSSdS|jdkrS|j}t|�dkrS|djdkrS|dj|jkoP|djkSSdS)N�param�funcdefr�F)r�r�rCr�)rr�rcrrgrhrfrk)rxZancestor�annr�r=r=rAr�%s
 221  
 222  �&r�cC�
 223  |jdkS)Nrm�r�rWr=r=rA�_is_list5�
 224  r�cCr�)N�tupler�rWr=r=rA�	_is_tuple9r�r�cCst�|t|��Sr[)rr�r�)rF�bool_r=r=rA�_bool_to_value=src	Csvt|tj�sdSg}|��D]*}t|t�sdS|j}|jdkr#dSz
 225  |�t|j	��Wqt
 226  y8YdSw|S)Nry)r`rr�Z
 227  py__iter__r
 228  �datarc�append�intrX�
 229  ValueError)rX�numbersr�r�r=r=rA�_get_tuple_intsAs
 230  
 231  �rcCs�t|�}t|�}t|t�r|}nt|j�}|dkr8t|tj�s#t|�r(t|g�St|tj�s2t|�r7t|g�Sn�|dkrj|r@|sHt|�rNt|�rN|�||�St	|�rVt	|�s^t
 232  |�rit
 233  |�ritt�|||f�g�Sn�|dkry|rx|rx|�||�Snu|dkr�t|g�S|tvr�|�
 234  �r�|�
 235  �r�|�||�}|r�|Sn=|dvr�t|}	|	||�}
 236  |dv|
 237  kr�tt||
 238  �g�St|t�r�t|�}|dur�tjj||jjt|��}tt||�g�Stt|d�t|d�g�S|d	vr�|j�d
 239  ���Sdd�}
 240  |d
 241  v�r||k�r|
 242  |��s|
 243  |��sd}t�|d||||f�|���s|���r tSt|}|�|�}|�r6|�|�}|�r6|S|�sLt|}|�|�}|�|�}|�rL|St||g�}t �!d||�|S)Nr3r1r2r6)�isz!=�==zis not)rr	TF)�inznot inr�cSst|t�o
 244  |jjdvS)z4Checks if a Jedi object is either a float or an int.)r�float)r`rrxr�)�objr=r=rA�check�s
 245  
 246  �z%_infer_comparison_part.<locals>.check)r1r2z7TypeError: unsupported operand type(s) for +: %s and %sztype-error-operationz Used operator %s resulting in %s)"rr`r�rXr�SequencerrZexecute_operationr�r�ZMergedArrayrr�rrrr�access�environment�version_infor�rIr�r�r
 247  �addr�r�operator_to_magic_methodr�� reverse_operator_to_magic_methodrrl)rFrLr�r�r�Zl_is_numZr_is_numZstr_operatorrtZ	operationrrZbool_resultr
 248  �message�method_nameZ
 249  magic_methodsZreverse_method_namer=r=rAr�Rs�
 250  
 251  
 252  
 253  � ��
 254  �
 255  
 256  
 257  ����
 258  
 259  �
 260  
 261  
 262  
 263  r�cCs$t}|��j}|durg|���|jg�}d}|D]J}|j}|jdkrb|jdjdkrbt	�
 264  |�|jk}	|jd}
 265  |	rbd}|
 266  jdjdkrR|
 267  jdj|jkrR|jrR|j}|t�
 268  ||jdjd���O}q|rg|Sg}|jddd�}|dur�|j}|jdkr�|�|�}
 269  |
 270  ��r�tSt|
 271  ���}|�|j�}t�d	d
 272  �|D��S|jdvr�|�|�}
 273  t|
 274  |�S|j}|dkr�t�|||�}|r�|S|d
 275  kr�t�|||�}|r�|S|dv�rz|j||j}W|St�yt||jd�}t|��||jjdkd�}t||�}t||�}Y|Sw|dk�rt |||�}|S|d
 276  k�rA|�!|�"|��}|jjdk�r8|�#d�}|�$�}|�%��&�S|�#d�}|�$�S|dv�rNt'�(||�}|S|dv�rZt)||�}|S|dk�rn|�!|�*��*��}|�$�}|S|dk�rwt}|S|dk�r�t}|S|dk�r�t!||�}|St+d|��)NFr�rCr�Trx)Zimport_name_alwaysr�Zglobal_stmtcsr�r[)rj)r>rxr=r=rAr^�r�z&tree_name_to_values.<locals>.<genexpr>)Zimport_from�import_namerVZ	with_stmt)rVr�r�r�Z
 277  async_stmt)Zcontextualized_node�is_async�
 278  __aenter__�	__enter__)r��classdefZtry_stmtr�Zdel_stmtr�zShould not happen. type: %s),rZget_root_contextrEZget_used_namesrerXrbrcrfrZget_parent_scoperGrr�r�Zget_definitionZcreate_contextZ	is_moduler�Zget_filtersrr�r�Zfind_type_from_comment_hint_forZ find_type_from_comment_hint_withrdrKrr	rjrr�r�ruZget_test_node_from_namer�r�r�r�rZinfer_import�_apply_decoratorsZget_previous_siblingr)rFrLZ	tree_namer�Zmodule_node�namesZfound_annotationrxr�Z
 279  correct_scopeZ
 280  ann_assignr�r�r��filterr�r�Z	for_typesrOZvalue_managersZ
 281  enter_methods�coro�
 282  exceptionsr=r=rA�tree_name_to_values�s�
 283  
 284  ����
 285  
 286  
 287  
 288  
 289  
 290  )�
 291  �
 292   �
 293  	
 294  �
 295  
 296  
 297  
 298  �
 299  
 300  �	
 301  �
 302  �
 303  �
 304  �r!c		s||jdkrt|j||d��nt�||��t�g�}}t|�r!|St|���D]�}t	j
 305  d||dd�t	���f|�|j
 306  d�}|j
 307  dd�}|rWt�d	|�}||_t|||�}t|�sw|jd
 308  d�}|dkrlt	�d
 309  ||�|Wd�S|�t�|g��}t|�s�t	�d|�|Wd�SWd�n1s�wYt	j
 310  d|dd�q'||kr�t�fdd�|D��S|S)z�
 311      Returns the function, that should to be executed in the end.
 312      This is also the places where the decorators are processed.
 313      r)rGrEzdecorator: %s %sZMAGENTA)�colorrCr<r�r�F)Zinclude_prefixz	@runtime
 314  zdecorator not found: %s on %sNz)not possible to resolve wrappers found %szdecorator end %scsg|]}t|���qSr=r!r��Zdecoratee_valuer=rArZGsz%_apply_decorators.<locals>.<listcomp>)rcrrFrr�rr�reversedZget_decoratorsrrlZincrease_indent_cmrurfrZ
 315  PythonNoderbr�rk�get_coderJr�rZValuesArguments)	rLr��initial�values�decZ
 316  dec_valuesZ
 317  trailer_nodesr��coder=r#rArsH
 318  �
 319  ���rc	Cs�d}|��D]?\}}t|j|�}|�|�}t|t�rtSd}||krAzt|�}Wn
 320  ty7tYSw||j	7}||ks$|�
 321  �}q|S)z(
 322      Checks if tuples are assigned.
 323      Nr)Zassignment_indexesrrGr�r`�slicerr��
 324  StopIteration�maxrj)rxr�r��indexr�r�Ziteratedr\r=r=rAr�Ks"
 325  
 326  �
 327  �
 328  r�c@seZdZdd�ZdS)r�cCst|j|j�Sr[)r�rLr�)�selfr=r=rArjgsz%ContextualizedSubscriptListNode.inferN)�__name__�
 329  __module__�__qualname__rjr=r=r=rAr�fsr�cCs�|dkrtt�|ddd�g�S|jdkr`|jddks`g}|jD](}|dkr.|s-|�d�q |jdkrCt|j�dkrB|�|jd�q |�|�q |dgd	t|�7}ttj|g|�R�g�S|jd
 330  krptt�|j||�g�S|�	|�S)z,
 331      Handles slices in subscript nodes.
 332      r�NZ	subscriptrr�Zsliceopr<rCr�r�)
 333  rr�Slicercrfrrkr�rFru)rLr-rt�elr=r=rAr�ks&
 334  
 335  �
 336  �
 337  
 338  r�r[)Q�__doc__ror�Zparso.pythonrZjedirrZjedi.inference.base_valuerrrrr	Zjedi.inference.lazy_valuer
 339  Zjedi.inferencerrr
 340  rrZjedi.inference.valuerrrZ#jedi.inference.value.dynamic_arraysrrrZjedi.inference.helpersrrrrrZjedi.inference.compiled.accessrZjedi.inference.cacherZ!jedi.inference.gradual.stub_valuerZjedi.inference.gradualrZjedi.inference.namesrZjedi.inference.contextr Zjedi.inference.value.decoratorr"Zjedi.pluginsr#r�itemsrrTrurqrvZincrease_indentrar�r�r�r�r�r�r�r�r�r�r�rrr�Zdecorater!rr�r�r�r=r=r=rA�<module>s���!H
 341  NU
 342  M
 343  ]
 344  i
 345  1