Format: application/x-python-code
⬇ Download File (22.9 KB)
   1  o
   2  
   3  �h+G�@s2dZddlmZddlmZddlmZddlmZddl	m
   4  Z
   5  ddlmZddl
   6  mZdd	lmZdd
   7  lmZddlmZe�ZGdd
   8  �d
   9  e�ZGdd�d�ZGdd�de�Zd&dd�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�d�Z d d!�Z!Gd"d#�d#�Z"e"g�Z#d$d%�Z$dS)'a4
  10  Values are the "values" that Python would return. However Values are at the
  11  same time also the "values" that a user is currently sitting in.
  12  
  13  A ValueSet is typically used to specify the return of a function or any other
  14  static analysis operation. In jedi there are always multiple returns and not
  15  just one.
  16  �)�reduce)�add)�zip_longest)�Name)�debug)�clean_scope_docstring��SimpleGetItemNotFound)�
  17  safe_property)�%inference_state_as_method_param_cache)�memoize_methodc@seZdZdS)�HasNoContextN)�__name__�
  18  __module__�__qualname__�rr�Oc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/base_value.pyr
  19  sr
  20  c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
  21  �Zd"d
  22  d�Zdd�Z	d#dd�Z
  23  		d$dd�Zdd�Zdd�Z
  24  d"dd�Zdd�Zdd�Zed d!��ZdS)%�HelperValueMixincCs.|}|jdur|��S	|jdur|S|j}q�N)�parent_context�
  25  as_context)�self�valuerrr�get_root_contexts
  26  
  27  �z!HelperValueMixin.get_root_contextcCs|jj||d�S)N��	arguments��inference_state�execute�rrrrrr(�zHelperValueMixin.executecGs,ddlm}|dd�|D��}|j�||�S)Nr)�ValuesArgumentscSsg|]}t|g��qSr��ValueSet��.0rrrr�
  28  <listcomp>-sz8HelperValueMixin.execute_with_values.<locals>.<listcomp>)Zjedi.inference.argumentsr!rr)rZ
  29  value_listr!rrrr�execute_with_values+sz$HelperValueMixin.execute_with_valuescCs|��Sr�r'�rrrr�execute_annotation0�z#HelperValueMixin.execute_annotationcCs
  30  t|g�Srr"r)rrr�gather_annotation_classes3�
  31  z*HelperValueMixin.gather_annotation_classesNFcCst�dd�|�||�D��S)Ncs��|]}|��VqdSr��infer�r%Z
  32  lazy_valuerrr�	<genexpr>7�
  33  ��
  34  �z:HelperValueMixin.merge_types_of_iterate.<locals>.<genexpr>�r#�	from_sets�iterate)r�contextualized_node�is_asyncrrr�merge_types_of_iterate6s
  35  
  36  �z'HelperValueMixin.merge_types_of_iterateccsd�t|t�r|nd}|j|d�EdH|��r.ddlm}|t|h��D]}|��EdHq$dSdS)N)�origin_scoper)�convert_values)�
  37  isinstancerZget_filters�is_stubZ!jedi.inference.gradual.conversionr;r#)r�name_or_strr:r;�crrr�_get_value_filters<s��z#HelperValueMixin._get_value_filtersTcCs6ddlm}|�|�}|�||�}t�d|||�|S)Nr)�finderzcontext.goto %s in (%s): %s)�jedi.inferencerAr@Zfilter_namer�dbg)rr>�name_context�analysis_errorsrA�filters�namesrrr�gotoEs
  38  
  39  zHelperValueMixin.gotoc	Cs�|dur|}|�|||�}t�dd�|D��}|s(t|t�r!|jn|}|�|�}|s@|s@|r@t|t�r@ddlm}|�	|||�t
  40  �d||�|S)zZ
  41          :param position: Position of the last statement -> tuple of line, column
  42          Ncsr.rr/)r%�namerrrr2T��z6HelperValueMixin.py__getattribute__.<locals>.<genexpr>r��analysisz context.names_to_types: %s -> %s)rHr#r5r<rr�py__getattribute__alternativesrBrLZadd_attribute_errorrrC)	rr>rD�positionrErG�values�nrLrrr�py__getattribute__Ls
  43  
  44  �z#HelperValueMixin.py__getattribute__cCs"|�d�}|s
  45  t�d|�|��S)N�	__await__z"Tried to run __await__ on value %s)rQr�warningr')rZawait_value_setrrr�py__await__as
  46  zHelperValueMixin.py__await__cCs|jjSr)rI�string_namer)rrr�
  47  py__name__gr+zHelperValueMixin.py__name__cCsVt�d|�|r&ddlm}t||�d����d����d������g�S|�|�S)Nz
  48  iterate %sr)�LazyKnownValues�	__aiter__�	__anext__rR)	rrC�jedi.inference.lazy_valuerW�iterrQr'�py__stop_iteration_returns�
  49  py__iter__)rr7r8rWrrrr6js
  50  
  51  ��
  52  zHelperValueMixin.iteratecCs�tjd||fdd��-|��D]}|�|�r'tjddd�Wd�dSqtjddd�	Wd�dS1s;wYdS)Nzsubclass matching of %s <=> %sZBLUE)�colorzmatched subclass TrueTzmatched subclass FalseF)r�increase_indent_cmZ	py__mro__�
  53  is_same_classrC)r�class_value�clsrrr�is_sub_class_ofzs�
  54  �$�z HelperValueMixin.is_sub_class_ofcCs"t|�jtjkr
  55  |�|�S||kSr)�typer`r)rZclass2rrrr`�s
  56  zHelperValueMixin.is_same_classcOs|j|i|��Sr)�_as_context�r�args�kwargsrrrr�szHelperValueMixin.as_context�NF)NT)NNT)rrrrrr'r*r,r9r@rHrQrTrVr6rcr`rrrrrrrs&
  57  
  58  
  59  	
  60  �
  61  
  62  rc@seZdZdZdZdZdZdAdd�Zdd�Zdd	�Z	dAd
  63  d�Z
  64  dAdd
  65  �Zdd�Zdd�Z
  66  dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zefd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Z d6d7�Z!d8d9�Z"e#d:d;��Z$dBd=d>�Z%d?d@�Z&dS)C�Valuez*
  67      To be implemented by subclasses.
  68      NZnot_defined_please_report_bugcC�||_||_dSr)rr)rrrrrr�__init__��
  69  zValue.__init__cCs*ddlm}|j|jd|jd|d�tS)NrrKztype-error-not-subscriptablez+TypeError: '%s' object is not subscriptable��message)rBrLr�context�node�	NO_VALUES)rZindex_value_setr7rLrrr�
  70  py__getitem__�s�zValue.py__getitem__cC�t�rr)r�indexrrr�py__simple_getitem__��zValue.py__simple_getitem__cCs6|durddlm}|j|jd|jd|d�tg�S)NrrKztype-error-not-iterablez&TypeError: '%s' object is not iterablern)rBrLrrprqr[)rr7rLrrrr]�s�zValue.py__iter__cCs
  71  |�|�Sr)r])rr7rrr�
  72  py__next__�r-zValue.py__next__cCsgSrrr)rrr�get_signatures�rwzValue.get_signaturescC�dSrirr)rrr�is_class�rwzValue.is_classcCrzrirr)rrr�is_class_mixin�rwzValue.is_class_mixincCrzrirr)rrr�is_instance�rwzValue.is_instancecCrzrirr)rrr�is_function�rwzValue.is_functioncCrzrirr)rrr�	is_module�rwzValue.is_modulecCrzrirr)rrr�is_namespace�rwzValue.is_namespacecCrzrirr)rrr�is_compiled�rwzValue.is_compiledcCrzrirr)rrr�is_bound_method�rwzValue.is_bound_methodcCrzrirr)rrr�is_builtins_module�rwzValue.is_builtins_modulecCrz)z�
  73          Since Wrapper is a super class for classes, functions and modules,
  74          the return value will always be true.
  75          Trr)rrr�
  76  py__bool__�szValue.py__bool__cCs,z|jjWn
  77  tyYdSwt|j�S)N�)�	tree_nodeZget_doc_node�AttributeErrorrr)rrr�	py__doc__�s�
  78  zValue.py__doc__cCs|tur
  79  td|��|S)Nz'There exists no safe value for value %s)�sentinel�
  80  ValueError)r�defaultrrr�get_safe_value�szValue.get_safe_valuecCst�d|||�tS)Nz!%s not possible between %s and %s�rrSrr)r�other�operatorrrr�execute_operation�szValue.execute_operationcC�t�d|�tS)Nzno execution possible %sr�rrrr�
  81  py__call__��zValue.py__call__cCr�)Nz0Not possible to return the stop iterations of %sr�r)rrrr\�r�z Value.py__stop_iteration_returnscC�tS)zH
  82          For now a way to add values in cases like __getattr__.
  83          )rr)rr>rrrrM�sz$Value.py__getattribute__alternativescCst�d|�t|g�S)NzNo __get__ defined on %s)rrSr#)r�instancerarrr�	py__get__�s
  84  zValue.py__get__cCr�r)�NotImplemented)rZcalling_instancer�rarrr�py__get__on_classrwzValue.py__get__on_classcC�dSrrr)rrr�get_qualified_names�zValue.get_qualified_namescC�
  85  |j��Sr)rr=r)rrrr=s
  86  z
  87  Value.is_stubcCrtr)r
  88  r)rrrrerwzValue._as_contextcCrtr��NotImplementedErrorr)rrrrIr�z
  89  Value.nameTcCr�rr)r�add_class_inforrr�
  90  get_type_hintrwzValue.get_type_hintcCsiS)an
  91          When the current instance represents a type annotation, this method
  92          tries to find information about undefined type vars and returns a dict
  93          from type var name to value set.
  94  
  95          This is for example important to understand what `iter([1])` returns.
  96          According to typeshed, `iter` returns an `Iterator[_T]`:
  97  
  98              def iter(iterable: Iterable[_T]) -> Iterator[_T]: ...
  99  
 100          This functions would generate `int` for `_T` in this case, because it
 101          unpacks the `Iterable`.
 102  
 103          Parameters
 104          ----------
 105  
 106          `self`: represents the annotation of the current parameter to infer the
 107              value for. In the above example, this would initially be the
 108              `Iterable[_T]` of the `iterable` parameter and then, when recursing,
 109              just the `_T` generic parameter.
 110  
 111          `value_set`: represents the actual argument passed to the parameter
 112              we're inferred for, or (for recursive calls) their types. In the
 113              above example this would first be the representation of the list
 114              `[1]` and then, when recursing, just of `1`.
 115          r)r�	value_setrrr�infer_type_varsszValue.infer_type_varsr�T)'rrr�__doc__r�Z
 116  array_typeZapi_typerlrsrvr]rxryr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r\rMr�r�r�r=re�propertyrIr�r�rrrrrj�sH
 117  
 118  
 119  
 120  
 121  
 122  rjNFcCst�dd�|j||d�D��S)z�
 123      Calls `iterate`, on all values but ignores the ordering and just returns
 124      all values that the iterate functions yield.
 125      csr.rr/r1rrrr28r3z!iterate_values.<locals>.<genexpr>�r8r4)rOr7r8rrr�iterate_values3s
 126  �r�c@s2eZdZedd��Zee�dd���Zdd�ZdS)�_ValueWrapperBasecCsBddlm}|jj}|jdur|||j�Sddlm}|||j�S)Nr)�	ValueName)�CompiledValueName)Zjedi.inference.namesr��_wrapped_valuerIZ	tree_nameZjedi.inference.compiledr�rU)rr�Zwrapped_namer�rrrrI?s
 127  z_ValueWrapperBase.namecOs||i|��Srr)rbrrgrhrrr�
 128  create_cachedIsz_ValueWrapperBase.create_cachedcCs|dksJd��t|j|�S)Nr�zProblem with _get_wrapped_value)�getattrr�)rrIrrr�__getattr__Nsz_ValueWrapperBase.__getattr__N)	rrrr
 129  rI�classmethodrr�r�rrrrr�>s
 130  	r�c@s,eZdZeedd���Zdd�Zdd�ZdS)�LazyValueWrappercCs6t�d��|��Wd�S1swYdS)NzResolve lazy value wrapper)rr_�_get_wrapped_valuer)rrrr�Ts$�zLazyValueWrapper._wrapped_valuecCsd|jjS)Nz<%s>)�	__class__rr)rrr�__repr__Z�zLazyValueWrapper.__repr__cCrtrr�r)rrrr�]rwz#LazyValueWrapper._get_wrapped_valueN)rrrr
 131  rr�r�r�rrrrr�Ssr�c@seZdZdd�Zdd�ZdS)�ValueWrappercCs
 132  ||_dSr)r�)rZ
 133  wrapped_valuerrrrlbr-zValueWrapper.__init__cC�d|jj|jfS)Nz%s(%s))r�rr�r)rrrr�e�zValueWrapper.__repr__N)rrrrlr�rrrrr�asr�cs$eZdZ�fdd�Zdd�Z�ZS)�	TreeValuecst��||�||_dSr)�superrlr�)rrrr��r�rrrljs
 134  zTreeValue.__init__cCr�)Nz<%s: %s>)r�rr�r)rrrr�nr�zTreeValue.__repr__)rrrrlr��
 135  __classcell__rrr�rr�isr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
 136  �ContextualizedNodecCrkr)rprq)rrprqrrrrlsrmzContextualizedNode.__init__cCr�r)rprr)rrrrwr-z#ContextualizedNode.get_root_contextcCs|j�|j�Sr)rpZ
 137  infer_noderqr)rrrr0zszContextualizedNode.infercCsd|jj|j|jfS)Nz<%s: %s in %s>)r�rrqrpr)rrrr�}�zContextualizedNode.__repr__N)rrrrlrr0r�rrrrr�rs
 138  r�c	Cs�t}t�}|D]+}|jdd�}t|�tttttfvr-z	||�	|�O}Wqt
 139  y,Ynw|�|�q|s7|sA||�t
 140  |�|�O}t�d|�|S)N)r�zpy__getitem__ result: %s)rr�setr�rd�float�int�str�slice�bytesrvr	rrsr#rrC)rZindex_valuesr7�resultZ
 141  unused_valuesZindex_valuerurrr�_getitem�s&��r�c@s�eZdZdd�Zedd��Zedd��Zdd�Zd	d
 142  �Zdd�Z	d
 143  d�Z
 144  dd�Zdd�Zdd�Z
 145  dd�Zdd�Zdd�Zdd�Zdd�Zd8d!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd9d4d5�Zd6d7�ZdS):r#cCs&t|�|_|D]	}t|t�rJ�qdSr)�	frozenset�_setr<r#)r�iterablerrrrrl�s
 146  �zValueSet.__init__cCs|�|�}||_|Sr)�__new__r�)rbZ
 147  frozenset_rrrr�_from_frozen_set�s
 148  zValueSet._from_frozen_setcCs@t�}|D]}t|t�r||jO}q|t|�O}q|�t|��S)z7
 149          Used to work with an iterable of set.
 150          )r�r<r#r�r�r�)rbZsetsZ
 151  aggregated�set_rrrr5�s
 152  zValueSet.from_setscCs|�|j|jB�Sr�r�r��rr�rrr�__or__�r�zValueSet.__or__cCs|�|j|j@�Srr�r�rrr�__and__�r�zValueSet.__and__cC�
 153  t|j�Sr)r[r�r)rrr�__iter__�r-zValueSet.__iter__cCr�r)�boolr�r)rrr�__bool__�r-zValueSet.__bool__cCr�r)�lenr�r)rrr�__len__�r-zValueSet.__len__cCsdd�dd�|jD��S)NzS{%s}�, css�|]}t|�VqdSr)r�)r%�srrrr2�rJz$ValueSet.__repr__.<locals>.<genexpr>)�joinr�r)rrrr���zValueSet.__repr__cCs|�t||j��Sr)r��filterr�)rZfilter_funcrrrr��r�zValueSet.filtercs��fdd�}|S)Ncs�����fdd��jD��S)Nc3s$�|]
 154  }t|���i���VqdSr)r�r$)rgrhrIrrr2�s
 155  ��
 156  �z7ValueSet.__getattr__.<locals>.mapper.<locals>.<genexpr>)r5r��rgrh�rIrr�r�mapper�s�z$ValueSet.__getattr__.<locals>.mapperr)rrIr�rr�rr��szValueSet.__getattr__cCs|j|jkSr�r�r�rrr�__eq__�r�zValueSet.__eq__cCs|�|�Sr)r�r�rrr�__ne__�r�zValueSet.__ne__cCr�r)�hashr�r)rrr�__hash__�r-zValueSet.__hash__cCstdd�|jD��S)Ncsr.r)�py__class__�r%r?rrrr2�rJz'ValueSet.py__class__.<locals>.<genexpr>)r#r�r)rrrr��szValueSet.py__class__NFc#sJ�ddlm}��fdd�|jD�}t|�D]}|dd�|D��VqdS)Nr)�get_merged_lazy_valuecsg|]	}|j��d��qS)r�)r6r��r7r8rrr&�sz$ValueSet.iterate.<locals>.<listcomp>cSsg|]}|dur|�qSrr)r%�lrrrr&��)rZr�r�r)rr7r8r�Z
 157  type_itersZlazy_valuesrr�rr6�s���zValueSet.iteratecst��fdd�|jD��S)Nc3s�|]
 158  }|j�|��VqdSrrr�rrrr2�s�z#ValueSet.execute.<locals>.<genexpr>�r#r5r�rrrrr�r�zValueSet.executec�t���fdd�|jD��S)Nc3� �|]}|j�i���VqdSrr(r�r�rrr2���z/ValueSet.execute_with_values.<locals>.<genexpr>r�rfrr�rr'��zValueSet.execute_with_valuescstt��fdd�|jD�g�S)Ncsg|]
 159  }|j�i����qSr)rHr�r�rrr&�sz!ValueSet.goto.<locals>.<listcomp>)rrr�rfrr�rrH�sz
 160  ValueSet.gotocr�)Nc3r�r)rQr�r�rrr2�r�z.ValueSet.py__getattribute__.<locals>.<genexpr>r�rfrr�rrQ�r�zValueSet.py__getattribute__cr�)Nc3s&�|]}t|g��Ri���VqdSr)r�r�r�rrr2�s�$z$ValueSet.get_item.<locals>.<genexpr>r�rfrr�r�get_item�r�zValueSet.get_itemc	CsF|�g�}|jD]}zt||�}Wn	tyYqw||�O}q|Sr)r�r�r�r�)rZ
 161  function_namer�r?�methodrrr�	try_merge�s
 162  
 163  �zValueSet.try_mergecCst�dd�|jD��S)NcSsg|]}|���qSr)r,r�rrrr&sz6ValueSet.gather_annotation_classes.<locals>.<listcomp>r�r)rrrr,r�z"ValueSet.gather_annotation_classescCsdd�|jD�S)NcSsg|]}|��D]}|�qqSr)ry)r%r?�sigrrrr&sz+ValueSet.get_signatures.<locals>.<listcomp>r�r)rrrryr zValueSet.get_signaturesTcs��fdd�|jD�}ttd|��}t|�dkr|dSd|v}|r&|�d�t|�dkr.dSt|�dkr9|d}ndd�|�}|rFd|}|S)	Ncsg|]}|j�d��qS)�r�)r�)r%�vr�rrr&r�z*ValueSet.get_type_hint.<locals>.<listcomp>�r�Nonez	Union[%s]r�zOptional[%s])r��sortedr�r��remover�)rr��tZ
 164  type_hints�optionalr�rr�rr�s
 165  
 166  zValueSet.get_type_hintcCs0ddlm}i}|jD]
 167  }|||�|��q|S)Nr)�merge_type_var_dicts)Z!jedi.inference.gradual.annotationr�r�r�)rr�r�Z
 168  type_var_dictrrrrr�s
 169  �zValueSet.infer_type_varsrir�)rrrrlr�r�r5r�r�r�r�r�r�r�r�r�r�r�r�r6rr'rHrQr�r�r,ryr�r�rrrrr#�s:
 170  
 171  
 172  
 173  r#cs�fdd�}|S)Ncst�|i|���Srr"r���funcrr�wrapper+r�z&iterator_to_value_set.<locals>.wrapperr)r�r�rr�r�iterator_to_value_set*sr�ri)%r��	functoolsrr�r�	itertoolsrZparso.python.treerZjedirZjedi.parser_utilsrZjedi.inference.helpersr	Zjedi.inference.utilsr
 174  Zjedi.inference.cacherZ
 175  jedi.cacher�objectr��	Exceptionr
 176  rrjr�r�r�r�r�r�r�r#rrr�rrrr�<module>s6r
 177  %