Format: application/x-python-code
⬇ Download File (16.8 KB)
   1  o
   2  
   3  �hD�@s�ddlmZddlmZddlmZmZddlmZddlm	Z	ddlm
   4  Z
   5  ddlmZddlm
   6  Z
   7  dd	lmZmZmZdd
   8  lmZmZmZmZmZddlmZmZmZmZmZddlmZm Z m!Z!dd
   9  l"m#Z#m$Z$ddl%m&Z&ddlm'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-Gdd�de�Z.Gdd�de�Z/Gdd�d�Z0Gdd�de0e/ed�Z1Gdd�de�Z2Gdd�de1�Z3Gd d!�d!e#e$�Z4Gd"d#�d#e4�Z5Gd$d%�d%e4�Z6Gd&d'�d'e0e�Z7d(d)�Z8d*S)+�)�tree)�debug)�inference_state_method_cache�CachedMetaClass)�compiled)�	recursion)�
  10  docstrings)�
  11  flow_analysis��
  12  TreeSignature)�ParserTreeFilter�FunctionExecutionFilter� AnonymousFunctionExecutionFilter)�	ValueName�AbstractNameDefinition�AnonymousParamName�	ParamName�NameWrapper)�ContextualizedNode�	NO_VALUES�ValueSet�	TreeValue�ValueWrapper)�LazyKnownValues�LazyKnownValue�
  13  LazyTreeValue)�ValueContext�TreeContextMixin)�iterable)�parser_utils)�get_yield_exprs)�values_from_qualified_names��TupleGenericManagerc@s0eZdZdZdZdd�Zedd��Zdd�Zd	S)
  14  �
  15  LambdaNamez<lambda>�functioncCs||_|j|_dS�N)�
  16  _lambda_value�parent_context)�selfZlambda_value�r*�Sc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/inference/value/function.py�__init__szLambdaName.__init__cCs
  17  |jjjSr&)r'�	tree_node�	start_pos�r)r*r*r+r."s
  18  zLambdaName.start_poscCst|jg�Sr&)rr'r/r*r*r+�infer&szLambdaName.inferN)	�__name__�
  19  __module__�__qualname__�string_name�api_typer,�propertyr.r0r*r*r*r+r$s
  20  r$c@seZdZdd�ZdS)�FunctionAndClassBasecCsF|j��r|j��}|durdS||��fS|j��r!|��fSdSr&)r(�is_class�get_qualified_names�
  21  py__name__Z	is_module)r)�nr*r*r+r9+s
  22  
  23  
  24  
  25  z(FunctionAndClassBase.get_qualified_namesN)r1r2r3r9r*r*r*r+r7*sr7c@sjeZdZdZddd�Zdd�Zdd�Zed	d
  26  ��Zdd�Z	d
  27  d�Z
  28  ddd�Zdd�Zddd�Z
  29  dd�ZdS)�
  30  FunctionMixinr%Nccs.�|��}|��D]}|j|d�EdHq	dS)N)�origin_scope)�py__class__Zexecute_with_values�get_filters)r)r=�cls�instancer*r*r+r?;s
  31  ��zFunctionMixin.get_filterscCs4ddlm}|durt|g�St|||��|�g�S)Nr)�BoundMethod)Zjedi.inference.value.instancerBr�
  32  as_context)r)rAZclass_valuerBr*r*r+�	py__get__@s
  33  zFunctionMixin.py__get__cs�fdd��j��D�S)Ncsg|]}t�|j��qSr*)r�name��.0�paramr/r*r+�
  34  <listcomp>Hs�z1FunctionMixin.get_param_names.<locals>.<listcomp>)r-�
  35  get_paramsr/r*r/r+�get_param_namesGs
  36  �zFunctionMixin.get_param_namescCs"|jjdkr
  37  t|�St||jj�S)N�lambdef)r-�typer$rrEr/r*r*r+rEKszFunctionMixin.namecCsdS)NTr*r/r*r*r+�is_functionQ�zFunctionMixin.is_functioncCs|jjSr&)rEr4r/r*r*r+r:TszFunctionMixin.py__name__Tcs�|jj}|dur3dd��|��}|��}|��}|��dd��fdd�|��D��}|dur2|Sn|jdd�}|��|jj	d	jdd�}|d
  38  |S)NcSsJ|j}|����}|dur|d|7}|jdur#|d|jjdd�7}|S)Nz: �=F�Zinclude_prefix)r4r0�
  39  get_type_hint�default_node�get_code)r;�s�
  40  annotationr*r*r+�param_name_to_strZs
  41  z6FunctionMixin.get_type_hint.<locals>.param_name_to_strz(%s)�, c�g|]}�|��qSr*r*)rGr;�rWr*r+rIfs��z/FunctionMixin.get_type_hint.<locals>.<listcomp>FrQ�z -> )
  42  r-rVrCr0rRr:�joinrKrT�children)r)�add_class_info�return_annotation�function_execution�resultZreturn_hint�bodyr*rZr+rRWs	��zFunctionMixin.get_type_hintcCs|�|�}|��Sr&)rCr0)r)�	argumentsr`r*r*r+�
  43  py__call__rs
  44  zFunctionMixin.py__call__cCs|durt|�St||�Sr&)�AnonymousFunctionExecution�FunctionExecutionContext)r)rcr*r*r+�_as_contextvs
  45  zFunctionMixin._as_contextcCsdd�|��D�S)NcSsg|]}t|��qSr*r
  46  �rG�fr*r*r+rI|�z0FunctionMixin.get_signatures.<locals>.<listcomp>)�get_signature_functionsr/r*r*r+�get_signatures{�zFunctionMixin.get_signaturesr&�T)r1r2r3r5r?rDrKr6rErNr:rRrdrgrlr*r*r*r+r<8s
  47  
  48  
  49  
  50  r<c@s0eZdZedd��Zdd�Zdd�Zdd�Zd	S)
  51  �
  52  FunctionValuecsx���fdd��tt�|��}�����s���r$�j����s���s�|�}|r:t|tt�fdd�|D����S|S)Ncs*���r
  53  t�j��|d�S��j�|d�S)N)r(r-)r8�MethodValue�inference_state)r-)r@�contextr(r*r+�create�s��z*FunctionValue.from_context.<locals>.createcrYr*r*rh)rsr*r+rI�rjz.FunctionValue.from_context.<locals>.<listcomp>)�list�_find_overload_functionsr8Zis_instancer(�OverloadedFunctionValue�reversed)r@rrr-Zoverloaded_funcsr%r*)r@rrrsr(r+�from_context�s��zFunctionValue.from_contextcCst|jdd�\}|S)N�types�FunctionType)r!rq)r)�cr*r*r+r>�szFunctionValue.py__class__cC�|jSr&)r(r/r*r*r+�get_default_param_context��z'FunctionValue.get_default_param_contextcCs|gSr&r*r/r*r*r+rk�r~z%FunctionValue.get_signature_functionsN)r1r2r3�classmethodrxr>r}rkr*r*r*r+ros
  54   ro)�	metaclasscs$eZdZ�fdd�Zdd�Z�ZS)�FunctionNameInClasscst��|�||_dSr&)�superr,�_class_context)r)�
  55  class_contextrE��	__class__r*r+r,��
  56  zFunctionNameInClass.__init__cC�
  57  |j��Sr&)r��	get_valuer/r*r*r+�get_defining_qualified_value��
  58  z0FunctionNameInClass.get_defining_qualified_value)r1r2r3r,r��
  59  __classcell__r*r*r�r+r��sr�cs<eZdZ�fdd�Zdd�Zdd�Ze�fdd��Z�ZS)	rpcs$t�j|g|�Ri|��||_dSr&)r�r,r�)r)rqr��args�kwargsr�r*r+r,�s
  60  zMethodValue.__init__cCr|r&)r�r/r*r*r+r}�r~z%MethodValue.get_default_param_contextcCs$|j��}|durdS||��fSr&)r�r9r:)r)�namesr*r*r+r9�s
  61  zMethodValue.get_qualified_namescst|jt�j�Sr&)r�r�r�rEr/r�r*r+rE�szMethodValue.name)	r1r2r3r,r}r9r6rEr�r*r*r�r+rp�srpc@sleZdZdd�Zeed�e��ddd���Zdd�Z	eje
  62  g�d�dd	d
  63  ��Zddd�Zd
  64  d�Z
  65  dd�ZdS)�BaseFunctionExecutionContextcCst�r&)�NotImplementedErrorr/r*r*r+�infer_annotations�rOz.BaseFunctionExecutionContext.infer_annotations)�defaultFc		Cs|j}|jdkr|�|jd�S|rt}t|j|�}n|��}|r#|S|t�	|j
  66  �O}|��}|D][}|rE|t�
  67  dd�|�|�D��O}q1t�|||�}|tjurXt�d|�n&z|j}Wntytt�|jd�}|t|g�O}Yn
  68  w||�|d�O}|tjur�t�d|�|Sq1|S)	NrL�����cs��|]}|��VqdSr&�r0�rG�
  69  lazy_valuer*r*r+�	<genexpr>��
  70  ��
  71  �zABaseFunctionExecutionContext.get_return_values.<locals>.<genexpr>zReturn unreachable: %s�None�zReturn reachable: %s)r-rMZ
  72  infer_noder]rr rqr�r�infer_return_types�_valueZiter_return_stmtsr�	from_sets�_get_yield_lazy_valuer	Zreachability_checkZUNREACHABLEr�dbg�AttributeErrorr�builtin_from_nameZ	REACHABLE)	r)�check_yields�funcdefZ	value_set�returns�r�checkr]�ctxr*r*r+�get_return_values�s@
  73  �
  74  
  75  �
  76  �z.BaseFunctionExecutionContext.get_return_valuesccst�|jdkrt�|jd�}t|�VdS|jd}|jdkr2t||jd�}|���|�EdHdSt	||�VdS)N�keywordr�r�Z	yield_arg)
  77  rMrr�rqrr]rr0�iterater)r)Z
  78  yield_exprr��node�cnr*r*r+r��s�
  79  
  80  
  81  
  82  z2BaseFunctionExecutionContext._get_yield_lazy_valuec
  83  cs��dd�t|j|j�D�}g}d}|D]Z\}}|j}|jdkr"|j}|jdkrH||jkrHt�|�rH||kr?|dd�|�n,|�||gf�n#||jkrV|�d|gf�n|jdd�}|rht	|d	t
  84  d
  85  �d�VdS|}q|D]^\}}	|dur�|	D]
  86  }|�|�EdHqzqp|��}
  87  t
  88  ||
  89  �}|���|�}t|�}|D]1}
  90  t|jdj�|
  91  ��i}|�||��|	D]
  92  }|�|�EdHq�Wd�n1s�wYq�qpdS)Nc
  93  Ss"g|]
  94  }|t�|dddd�f�qS)�for_stmtr�Z
  95  while_stmtZif_stmt)rZsearch_ancestor)rG�yr*r*r+rI	s
  96  �
  97  �zFBaseFunctionExecutionContext.get_yield_lazy_values.<locals>.<listcomp>Zsuiter�r�r�T)r�r�inf)�min�max)r rqr-�parentrMrZfor_stmt_defines_one_name�appendr�r�floatr�Zget_testlistrr0r�rt�strr]�valueZpredefine_names)r)�is_asyncZfor_parentsZyields_orderZ
  98  last_for_stmtZyield_r�r�ryZyieldsZ
  99  input_noder�Zorderedr��dctZyield_in_same_for_stmtr*r*r+�get_yield_lazy_valuessT��
 100  �
 101  �
 102  �����z2BaseFunctionExecutionContext.get_yield_lazy_valuescCst�dd�|��D��S)Ncsr�r&r�r�r*r*r+r�6r�zBBaseFunctionExecutionContext.merge_yield_values.<locals>.<genexpr>)rr�r�)r)r�r*r*r+�merge_yield_values5s
 103  �z/BaseFunctionExecutionContext.merge_yield_valuescCstt|j|j��Sr&)�boolr rqr-r/r*r*r+�is_generator;rmz)BaseFunctionExecutionContext.is_generatorcs�|j}|jjjdv}ddlm�|rU|��r6|j�d�}|j	dd�}|�
 104  �tf�t��fdd�|D���
 105  �S|j�d	�}|��}|�
 106  �ttf�t��fd
 107  d�|D���
 108  �S|��rf|��sftt�||�g�S|��S)z4
 109          Created to be used by inheritance.
 110          )Z
 111  async_stmtZ
 112  async_funcdefr)�GenericClass�AsyncGeneratorT)r�c3��|]
 113  }�|t���VqdSr&r"�rGr{�r�Zgenericsr*r+r�Ns
 114  ��
 115  �z5BaseFunctionExecutionContext.infer.<locals>.<genexpr>�	Coroutinec3r�r&r"r�r�r*r+r�Ws�
 116  �)rqr-r�rMZjedi.inference.gradual.baser�r�Z
 117  typing_moduleZpy__getattribute__r�r>rrZexecute_annotationr�r�r�	Generator)r)rqZis_coroutineZasync_generator_classesZyield_valuesZ
 118  async_classesZ
 119  return_valuesr*r�r+r0>s4�����z"BaseFunctionExecutionContext.inferN)F)r1r2r3r�rrrZexecution_recursion_decoratorr�r��iterr�r�r�r0r*r*r*r+r��s(
 120  .r�cs6eZdZ�fdd�Zd
 121  dd�Zdd�Zdd	�Z�ZS)rfc�t��|�||_dSr&)r�r,�
 122  _arguments)r)Zfunction_valuercr�r*r+r,cr�z!FunctionExecutionContext.__init__Nccs�t||j|||jd�VdS)N)�until_positionr=rc)r
 123  r�r��r)r�r=r*r*r+r?gs��z$FunctionExecutionContext.get_filterscCsddlm}||j|j�S)Nr)r�)Z!jedi.inference.gradual.annotationr�r�r�)r)r�r*r*r+r�osz*FunctionExecutionContext.infer_annotationscs�fdd��jj��D�S)Ncsg|]}t�j|j�j��qSr*)rr�rEr�rFr/r*r+rIts��z<FunctionExecutionContext.get_param_names.<locals>.<listcomp>)r�r-rJr/r*r/r+rKss
 124  
 125  �z(FunctionExecutionContext.get_param_names�NN)r1r2r3r,r?r�rKr�r*r*r�r+rfbs
 126  
 127  rfc@s&eZdZdd�Zddd�Zdd�ZdS)	recCstSr&)rr/r*r*r+r�{sz,AnonymousFunctionExecution.infer_annotationsNccs�t||j||d�VdS)N)r�r=)rr�r�r*r*r+r?�s��z&AnonymousFunctionExecution.get_filterscCr�r&)r�rKr/r*r*r+rK�r�z*AnonymousFunctionExecution.get_param_namesr�)r1r2r3r�r?rKr*r*r*r+rezs
 128  recs6eZdZ�fdd�Zdd�Zdd�Zd
 129  dd	�Z�ZS)rvcr�r&)r�r,�_overloaded_functions)r)r%Zoverloaded_functionsr�r*r+r,�r�z OverloadedFunctionValue.__init__cCsptjd|jdd�g}|��D]}|j�|�}|�|�|�|�r'|��Sq|j	j
 130  r.tSt�
 131  dd�|D��S)NzExecute overloaded function %sZBLUE)�colorcsr�r&r�)rGZfer*r*r+r����z5OverloadedFunctionValue.py__call__.<locals>.<genexpr>)rr�Z_wrapped_valuerlr�rCr�Zmatches_signaturer0rqZis_analysisrrr�)r)rcZfunction_executions�	signaturer`r*r*r+rd�s
 132  
 133  �z"OverloadedFunctionValue.py__call__cCr|r&)r�r/r*r*r+rk�r~z/OverloadedFunctionValue.get_signature_functionsTcCsdd�dd�|jD��S)Nz	Union[%s]rXcsr�r&)rRrhr*r*r+r��r�z8OverloadedFunctionValue.get_type_hint.<locals>.<genexpr>)r\r�)r)r^r*r*r+rR�sz%OverloadedFunctionValue.get_type_hintrn)r1r2r3r,rdrkrRr�r*r*r�r+rv�s
 134  rvccs��dd�}|jdkrdS||�r|V	t||jd�}|�|jj�}t|t�s)J�|s-dSd}|D]}|jj	}|jdkrG||�rG|}d}|Vq1|sLdSq)NcSsb|jjdkr/|jjd}|jdkr|g}n|j}|D]}|jd}|jdkr.|jdkr.dSqdS)	NZ	decoratedr�	decoratorr�rE�overloadTF)r�rMr]r�)r�Z
 135  decoratorsr�Zdotted_namer*r*r+�_is_overload_decorated�s
 136  
 137  �z8_find_overload_functions.<locals>._is_overload_decoratedrLT)r�Fr�)
 138  rMrr.�getrEr��
 139  isinstancertZ	tree_namer�)rrr-r��filterr��foundrEr�r*r*r+ru�s4�
 140  ���ruN)9Zparso.pythonrZjedirZjedi.inference.cacherrZjedi.inferencerrrr	Zjedi.inference.signaturerZjedi.inference.filtersrr
 141  rZjedi.inference.namesrrrrrZjedi.inference.base_valuerrrrrZjedi.inference.lazy_valuerrrZjedi.inference.contextrrZjedi.inference.valuerrZjedi.inference.parser_cacher Zjedi.inference.helpersr!Zjedi.inference.gradual.genericsr#r$r7r<ror�rpr�rfrervrur*r*r*r+�<module>s<G-