a
    lcD                     @   s  d dl mZ d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dlm
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mZ d dlmZmZmZmZmZ d dlmZm Z m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d dlm'Z' d dl(m)Z) d dl*m+Z+ d dl,m-Z- G dd deZ.G dd deZ/G dd dZ0G dd de0e/edZ1G dd deZ2G dd de1Z3G d d! d!e#e$Z4G d"d# d#e4Z5G d$d% d%e4Z6G d&d' d'e0eZ7d(d) Z8d*S )+    )tree)debug)inference_state_method_cacheCachedMetaClass)compiled)	recursion)
docstrings)flow_analysisTreeSignature)ParserTreeFilterFunctionExecutionFilter AnonymousFunctionExecutionFilter)	ValueNameAbstractNameDefinitionAnonymousParamName	ParamNameNameWrapper)ContextualizedNode	NO_VALUESValueSet	TreeValueValueWrapper)LazyKnownValuesLazyKnownValueLazyTreeValue)ValueContextTreeContextMixin)iterable)parser_utils)get_yield_exprs)values_from_qualified_namesTupleGenericManagerc                   @   s0   e Zd ZdZdZdd Zedd Zdd Zd	S )

LambdaNamez<lambda>functionc                 C   s   || _ |j| _d S N)_lambda_valueparent_context)selfZlambda_value r*   Y/var/www/html/django/DPS/env/lib/python3.9/site-packages/jedi/inference/value/function.py__init__   s    zLambdaName.__init__c                 C   s
   | j jjS r&   )r'   	tree_node	start_posr)   r*   r*   r+   r.   "   s    zLambdaName.start_posc                 C   s   t | jgS r&   )r   r'   r/   r*   r*   r+   infer&   s    zLambdaName.inferN)	__name__
__module____qualname__string_nameapi_typer,   propertyr.   r0   r*   r*   r*   r+   r$      s   
r$   c                   @   s   e Zd Zdd ZdS )FunctionAndClassBasec                 C   sJ   | j  r.| j  }|d u r d S ||  f S | j  rB|  fS d S d S r&   )r(   is_classget_qualified_names
py__name__Z	is_module)r)   nr*   r*   r+   r9   +   s    



z(FunctionAndClassBase.get_qualified_namesN)r1   r2   r3   r9   r*   r*   r*   r+   r7   *   s   r7   c                   @   sj   e Zd ZdZdddZdd Zdd Zed	d
 Zdd Z	dd Z
dddZdd ZdddZdd ZdS )FunctionMixinr%   Nc                 c   s,   |   }| D ]}|j|dE d H  qd S )N)origin_scope)py__class__Zexecute_with_valuesget_filters)r)   r=   clsinstancer*   r*   r+   r?   ;   s    zFunctionMixin.get_filtersc                 C   s4   ddl m} |d u rt| gS t||| | gS )Nr   )BoundMethod)Zjedi.inference.value.instancerB   r   
as_context)r)   rA   Zclass_valuerB   r*   r*   r+   	py__get__@   s    
zFunctionMixin.py__get__c                    s    fdd j  D S )Nc                    s   g | ]}t  |jqS r*   )r   name.0paramr/   r*   r+   
<listcomp>H   s   z1FunctionMixin.get_param_names.<locals>.<listcomp>)r-   
get_paramsr/   r*   r/   r+   get_param_namesG   s    
zFunctionMixin.get_param_namesc                 C   s"   | j jdkrt| S t| | j jS )Nlambdef)r-   typer$   r   rE   r/   r*   r*   r+   rE   K   s    zFunctionMixin.namec                 C   s   dS )NTr*   r/   r*   r*   r+   is_functionQ   s    zFunctionMixin.is_functionc                 C   s   | j jS r&   )rE   r4   r/   r*   r*   r+   r:   T   s    zFunctionMixin.py__name__Tc                    s   | j j}|d u rfdd  |  }| }| }|  dd fdd| D   }|d u r|S n(|jdd}|  | j j	d	 jdd }|d
 | S )Nc                 S   sJ   | j }|   }|d ur&|d| 7 }| jd urF|d| jjdd 7 }|S )Nz: =FZinclude_prefix)r4   r0   get_type_hintdefault_nodeget_code)r;   s
annotationr*   r*   r+   param_name_to_strZ   s    
z6FunctionMixin.get_type_hint.<locals>.param_name_to_strz(%s), c                    s   g | ]} |qS r*   r*   )rG   r;   rV   r*   r+   rI   f   s   z/FunctionMixin.get_type_hint.<locals>.<listcomp>FrP      z -> )
r-   rU   rC   r0   rQ   r:   joinrK   rS   children)r)   add_class_inforeturn_annotationfunction_executionresultZreturn_hintbodyr*   rX   r+   rQ   W   s    	zFunctionMixin.get_type_hintc                 C   s   |  |}| S r&   )rC   r0   )r)   	argumentsr^   r*   r*   r+   
py__call__r   s    
zFunctionMixin.py__call__c                 C   s   |d u rt | S t| |S r&   )AnonymousFunctionExecutionFunctionExecutionContext)r)   ra   r*   r*   r+   _as_contextv   s    zFunctionMixin._as_contextc                 C   s   dd |   D S )Nc                 S   s   g | ]}t |qS r*   r
   rG   fr*   r*   r+   rI   |       z0FunctionMixin.get_signatures.<locals>.<listcomp>)get_signature_functionsr/   r*   r*   r+   get_signatures{   s    zFunctionMixin.get_signatures)N)T)N)r1   r2   r3   r5   r?   rD   rK   r6   rE   rN   r:   rQ   rb   re   rj   r*   r*   r*   r+   r<   8   s   



r<   c                   @   s0   e Zd Zedd Zdd Zdd Zdd Zd	S )
FunctionValuec                    sj    fddt t|} s2 r:jq"|}|rft|t tfdd|D S |S )Nc                    s.     rtj| dS  j| dS d S )N)r(   r-   )r8   MethodValueinference_state)r-   )r@   contextr(   r*   r+   create   s    z*FunctionValue.from_context.<locals>.createc                    s   g | ]} |qS r*   r*   rf   )ro   r*   r+   rI      rh   z.FunctionValue.from_context.<locals>.<listcomp>)list_find_overload_functionsr8   Zis_instancer(   OverloadedFunctionValuereversed)r@   rn   r-   Zoverloaded_funcsr%   r*   )r@   rn   ro   r(   r+   from_context   s    zFunctionValue.from_contextc                 C   s   t | jdd\}|S )NtypesFunctionType)r!   rm   )r)   cr*   r*   r+   r>      s    zFunctionValue.py__class__c                 C   s   | j S r&   )r(   r/   r*   r*   r+   get_default_param_context   s    z'FunctionValue.get_default_param_contextc                 C   s   | gS r&   r*   r/   r*   r*   r+   ri      s    z%FunctionValue.get_signature_functionsN)r1   r2   r3   classmethodrt   r>   rx   ri   r*   r*   r*   r+   rk      s
   
 rk   )	metaclassc                       s$   e Zd Z fddZdd Z  ZS )FunctionNameInClassc                    s   t  | || _d S r&   )superr,   _class_context)r)   class_contextrE   	__class__r*   r+   r,      s    zFunctionNameInClass.__init__c                 C   s
   | j  S r&   )r}   	get_valuer/   r*   r*   r+   get_defining_qualified_value   s    z0FunctionNameInClass.get_defining_qualified_value)r1   r2   r3   r,   r   __classcell__r*   r*   r   r+   r{      s   r{   c                       s<   e Zd Z fddZdd Zdd Ze fddZ  ZS )	rl   c                    s$   t  j|g|R i | || _d S r&   )r|   r,   r~   )r)   rm   r~   argskwargsr   r*   r+   r,      s    zMethodValue.__init__c                 C   s   | j S r&   )r~   r/   r*   r*   r+   rx      s    z%MethodValue.get_default_param_contextc                 C   s$   | j  }|d u rd S ||  f S r&   )r~   r9   r:   )r)   namesr*   r*   r+   r9      s    
zMethodValue.get_qualified_namesc                    s   t | jt jS r&   )r{   r~   r|   rE   r/   r   r*   r+   rE      s    zMethodValue.name)	r1   r2   r3   r,   rx   r9   r6   rE   r   r*   r*   r   r+   rl      s
   rl   c                   @   sl   e Zd Zdd Zeede dddZdd Z	eje
g ddd	d
ZdddZdd Zdd ZdS )BaseFunctionExecutionContextc                 C   s   t d S r&   )NotImplementedErrorr/   r*   r*   r+   infer_annotations   s    z.BaseFunctionExecutionContext.infer_annotations)defaultFc           	   	   C   s  | j }|jdkr | |jd S |r6t}t| j|}n(|  }|rF|S |t	| j
O }| }|D ]}|r|tdd | |D O }qbt| ||}|tju rtd| nLz
|j}W n. ty   t| jd}|t|gO }Y n0 || |d O }|tju rbtd|  qqb|S )	NrL   c                 s   s   | ]}|  V  qd S r&   r0   rG   
lazy_valuer*   r*   r+   	<genexpr>   s   zABaseFunctionExecutionContext.get_return_values.<locals>.<genexpr>zReturn unreachable: %sNone   zReturn reachable: %s)r-   rM   Z
infer_noder[   r   r    rm   r   r   infer_return_types_valueZiter_return_stmtsr   	from_sets_get_yield_lazy_valuer	   Zreachability_checkZUNREACHABLEr   dbgAttributeErrorr   builtin_from_nameZ	REACHABLE)	r)   check_yieldsfuncdefZ	value_setreturnsrcheckr[   ctxr*   r*   r+   get_return_values   s:    



z.BaseFunctionExecutionContext.get_return_valuesc                 c   sp   |j dkr&t| jd}t|V  d S |jd }|j dkr`t| |jd }| |E d H  nt	| |V  d S )Nkeywordr   r   Z	yield_arg)
rM   r   r   rm   r   r[   r   r0   iterater   )r)   Z
yield_exprr   nodecnr*   r*   r+   r      s    



z2BaseFunctionExecutionContext._get_yield_lazy_valuec              
   c   s  dd t | j| jD }g }d }|D ]\}}|j}|jdkrB|j}|jdkr|| jkrt|r||kr||d d | q|||gf nF|| jkr|d |gf n*| jdd}|rt	|d	t
d
dV   d S |}q$|D ]\}}	|d u r|	D ]}| |E d H  qq| }
t| |
}| |}t|}|D ]h}t|jd j| i}| ||, |	D ]}| |E d H  qfW d    n1 s0    Y  q8qd S )Nc              
   S   s"   g | ]}|t |d dddfqS )for_stmtr   Z
while_stmtZif_stmt)r   Zsearch_ancestor)rG   yr*   r*   r+   rI   	  s   zFBaseFunctionExecutionContext.get_yield_lazy_values.<locals>.<listcomp>Zsuiter   r   r   T)r   r   inf)minmax)r    rm   r-   parentrM   r   Zfor_stmt_defines_one_nameappendr   r   floatr   Zget_testlistr   r0   r   rp   strr[   valueZpredefine_names)r)   is_asyncZfor_parentsZyields_orderZlast_for_stmtZyield_r   r   ru   ZyieldsZ
input_noder   Zorderedr   dctZyield_in_same_for_stmtr*   r*   r+   get_yield_lazy_values  sF    



z2BaseFunctionExecutionContext.get_yield_lazy_valuesc                 C   s   t dd |  D S )Nc                 s   s   | ]}|  V  qd S r&   r   r   r*   r*   r+   r   6  s   zBBaseFunctionExecutionContext.merge_yield_values.<locals>.<genexpr>)r   r   r   )r)   r   r*   r*   r+   merge_yield_values5  s    
z/BaseFunctionExecutionContext.merge_yield_valuesc                 C   s   t t| j| jS r&   )boolr    rm   r-   r/   r*   r*   r+   is_generator;  s    z)BaseFunctionExecutionContext.is_generatorc                    s   | j }| jjjdv }ddlm  |r|  rl|jd}| j	dd}|
 tft fdd|D  S |jd	}|  }|
 ttft fd
d|D  S n*|  r|  stt|| gS |  S dS )z4
        Created to be used by inheritance.
        )Z
async_stmtZasync_funcdefr   )GenericClassAsyncGeneratorT)r   c                 3   s   | ]} |t V  qd S r&   r"   rG   rw   r   Zgenericsr*   r+   r   N  s   z5BaseFunctionExecutionContext.infer.<locals>.<genexpr>	Coroutinec                 3   s   | ]} |t V  qd S r&   r"   r   r   r*   r+   r   W  s   N)rm   r-   r   rM   Zjedi.inference.gradual.baser   r   Ztyping_moduleZpy__getattribute__r   r>   r   r   Zexecute_annotationr   r   r   	Generator)r)   rm   Zis_coroutineZasync_generator_classesZyield_valuesZasync_classesZreturn_valuesr*   r   r+   r0   >  s,    z"BaseFunctionExecutionContext.inferN)F)F)F)r1   r2   r3   r   r   r   r   Zexecution_recursion_decoratorr   r   iterr   r   r   r0   r*   r*   r*   r+   r      s   (.
r   c                       s6   e Zd Z fddZd
ddZdd Zdd	 Z  ZS )rd   c                    s   t  | || _d S r&   )r|   r,   
_arguments)r)   Zfunction_valuera   r   r*   r+   r,   c  s    z!FunctionExecutionContext.__init__Nc                 c   s   t | | j||| jdV  d S )N)until_positionr=   ra   )r   r   r   r)   r   r=   r*   r*   r+   r?   g  s    z$FunctionExecutionContext.get_filtersc                 C   s   ddl m} || j| jS )Nr   )r   )Z!jedi.inference.gradual.annotationr   r   r   )r)   r   r*   r*   r+   r   o  s    z*FunctionExecutionContext.infer_annotationsc                    s    fdd j j D S )Nc                    s   g | ]}t  j|j jqS r*   )r   r   rE   r   rF   r/   r*   r+   rI   t  s   z<FunctionExecutionContext.get_param_names.<locals>.<listcomp>)r   r-   rJ   r/   r*   r/   r+   rK   s  s    

z(FunctionExecutionContext.get_param_names)NN)r1   r2   r3   r,   r?   r   rK   r   r*   r*   r   r+   rd   b  s   
rd   c                   @   s&   e Zd Zdd ZdddZdd ZdS )	rc   c                 C   s   t S r&   )r   r/   r*   r*   r+   r   {  s    z,AnonymousFunctionExecution.infer_annotationsNc                 c   s   t | | j||dV  d S )N)r   r=   )r   r   r   r*   r*   r+   r?     s
    z&AnonymousFunctionExecution.get_filtersc                 C   s
   | j  S r&   )r   rK   r/   r*   r*   r+   rK     s    z*AnonymousFunctionExecution.get_param_names)NN)r1   r2   r3   r   r?   rK   r*   r*   r*   r+   rc   z  s   
rc   c                       s6   e Zd Z fddZdd Zdd Zd
dd	Z  ZS )rr   c                    s   t  | || _d S r&   )r|   r,   _overloaded_functions)r)   r%   Zoverloaded_functionsr   r*   r+   r,     s    z OverloadedFunctionValue.__init__c                 C   sp   t jd| jdd g }|  D ]0}|j|}|| ||r|   S q| j	j
r\tS tdd |D S )NzExecute overloaded function %sZBLUE)colorc                 s   s   | ]}|  V  qd S r&   r   )rG   Zfer*   r*   r+   r     rh   z5OverloadedFunctionValue.py__call__.<locals>.<genexpr>)r   r   Z_wrapped_valuerj   r   rC   r   Zmatches_signaturer0   rm   Zis_analysisr   r   r   )r)   ra   Zfunction_executions	signaturer^   r*   r*   r+   rb     s    

z"OverloadedFunctionValue.py__call__c                 C   s   | j S r&   )r   r/   r*   r*   r+   ri     s    z/OverloadedFunctionValue.get_signature_functionsTc                 C   s   dd dd | jD  S )Nz	Union[%s]rW   c                 s   s   | ]}|  V  qd S r&   )rQ   rf   r*   r*   r+   r     rh   z8OverloadedFunctionValue.get_type_hint.<locals>.<genexpr>)rZ   r   )r)   r\   r*   r*   r+   rQ     s    z%OverloadedFunctionValue.get_type_hint)T)r1   r2   r3   r,   rb   ri   rQ   r   r*   r*   r   r+   rr     s   rr   c                 c   s   dd }|j dkrd S ||r$|V  t| |jd}||jj}t|tsNJ |sTqd}|D ],}|jj	}|j dkr\||r\|}d}|V  q\|s$qq$d S )Nc                 S   sb   | j jdkr^| j jd }|jdkr*|g}n|j}|D ](}|jd }|jdkr4|jdkr4 dS q4dS )	NZ	decoratedr   	decoratorr   rE   overloadTF)r   rM   r[   r   )r   Z
decoratorsr   Zdotted_namer*   r*   r+   _is_overload_decorated  s    

z8_find_overload_functions.<locals>._is_overload_decoratedrL   )r   Fr   T)
rM   r   r.   getrE   r   
isinstancerp   Z	tree_namer   )rn   r-   r   filterr   foundrE   r   r*   r*   r+   rq     s,    
rq   N)9Zparso.pythonr   Zjedir   Zjedi.inference.cacher   r   Zjedi.inferencer   r   r   r	   Zjedi.inference.signaturer   Zjedi.inference.filtersr   r   r   Zjedi.inference.namesr   r   r   r   r   Zjedi.inference.base_valuer   r   r   r   r   Zjedi.inference.lazy_valuer   r   r   Zjedi.inference.contextr   r   Zjedi.inference.valuer   r   Zjedi.inference.parser_cacher    Zjedi.inference.helpersr!   Zjedi.inference.gradual.genericsr#   r$   r7   r<   rk   r{   rl   r   rd   rc   rr   rq   r*   r*   r*   r+   <module>   s:   G-	 