a
    lc/                     @   s:  d dl 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mZ d dlmZmZmZ d d	lmZmZmZ d d
lmZ d dlmZ d&ddZG dd deZdd Zdd Z dd Z!G dd dZ"G dd de"Z#dd Z$G dd de#Z%G dd de#Z&G d d! d!e"Z'd'd"d#Z(d$d% Z)dS )(    N)zip_longest)tree)debug)PushBackIterator)analysis)LazyKnownValueLazyKnownValuesLazyTreeValueget_merged_lazy_value)	ParamNameTreeNameDefinitionAnonymousParamName)	NO_VALUESValueSetContextualizedNode)iterable)%inference_state_as_method_param_cachec              	   C   sV   |dkrdS | D ]@}z
|j }W n ty0   Y q0 | D ]}t| |d  q8qdS )z"Helper method for static analysis.
   N   )
py__iter__AttributeErrortry_iter_contentinfer)typesdepthtypfZ
lazy_value r   T/var/www/html/django/DPS/env/lib/python3.9/site-packages/jedi/inference/arguments.pyr      s    

r   c                   @   s   e Zd ZdS )
ParamIssueN)__name__
__module____qualname__r   r   r   r   r   "   s   r   c                    s    fdd}|S )aN  
    Transforms a function or method with arguments to the signature that is
    given as an argument clinic notation.

    Argument clinic is part of CPython and used for all the functions that are
    implemented in C (Python 3.7):

        str.split.__text_signature__
        # Results in: '($self, /, sep=None, maxsplit=-1)'
    c                    s    fdd}|S )Nc                    sB   zt t| j| }W n ty,   t Y S 0 | g|R  S d S N)tupleiterate_argument_clinicinference_stater   r   )value	argumentsargs)clinic_stringfuncr   r   wrapper2   s    

z?repack_with_argument_clinic.<locals>.decorator.<locals>.wrapperr   )r+   r,   r*   )r+   r   	decorator1   s    z.repack_with_argument_clinic.<locals>.decoratorr   )r*   r.   r   r-   r   repack_with_argument_clinic&   s    r/   c                 c   s  t t|}t| }t|D ]\}\}}}}	|	dkrg }
|D ],\}}|durb|||f  qn|
| q@tt	| |
gV  |
 q n|	dkrt
 t|d\}}|durtd t|du r|std|t|| t|du rtn| }|s|std| t|V  q dS )z;Uses a list with argument clinic information (see PEP 436).r   N   )NNzAKeyword arguments in argument clinic are currently not supported.z4TypeError: %s expected at least %s arguments, got %sz$argument_clinic "%s" not resolvable.)list_parse_argument_clinicr   unpack	enumerateZ	push_backappendr   r   Z	FakeTupleNotImplementedErrornextr   warningr   lenr   r   )r&   r(   r*   Zclinic_argsiteratorinameoptionalallow_kwargsstarsZlazy_valueskeyargumentZ	value_setr   r   r   r%   B   s:    

r%   c                 c   s   d}d}| rt d| }| t|dd  } |ds>d}q|pNt|d}|d}|d}||d  }||||fV  |rd}qd S )NFz%(?:(?:(\[),? ?|, ?|)(\**\w+)|, ?/)\]*r   r0   Tr   *)rematchr9   groupboolcount)stringr>   r=   rD   wordr?   r   r   r   r2   i   s    


r2   c                   @   s   e Zd ZdddZdd ZdS )_AbstractArgumentsMixinNc                 C   s   t d S r#   r6   )selffuncdefr   r   r   r3      s    z_AbstractArgumentsMixin.unpackc                 C   s   g S r#   r   rL   r   r   r   get_calling_nodes   s    z)_AbstractArgumentsMixin.get_calling_nodes)N)r    r!   r"   r3   rO   r   r   r   r   rJ      s   
rJ   c                   @   s   e Zd ZdZdZdZdS )AbstractArgumentsN)r    r!   r"   contextargument_nodetrailerr   r   r   r   rP      s   rP   c                 c   s   | d u rd S | j dkr<| j dkr.| jd dv s<d| fV  d S t| j}|D ]}|dkrZqJqJ|dv rt|d }|d usxJ t|j|fV  qJ|j dkr|jd dv rt|jdksJ t|jd j|jd fV  qJd|fV  qJd S )NarglistrA   r   )rB   z**,r0   r   )typechildreniterr7   r9   r'   )rT   r:   childcr   r   r   unpack_arglist   s.    




r[   c                   @   sR   e Zd ZdddZee dd ZdddZdd	 Zd
d Z	dd Z
dd ZdS )TreeArgumentsNc                 C   s   || _ || _|| _|| _dS )zS
        :param argument_node: May be an argument_node or a list of nodes.
        N)rR   rQ   _inference_staterS   )rL   r&   rQ   rR   rS   r   r   r   __init__   s    zTreeArguments.__init__c                 O   s   | |i |S r#   r   )clsr)   kwargsr   r   r   create_cached   s    zTreeArguments.create_cachedc                 #   sR  g }t jD ]2\} |dkrnj } fdd|D }tt| D ]}d tdd |D fV  qNq|dkrj }|D ]}tj| E d H  qq jdkr0 j	}t
|dkr||d jtj|d f nJ j	d }	|	jd	kr|	j	d }	tjjj|	 j	d d
}
d t|
fV  qd tj fV  q|E d H  d S )Nr   c                    s   g | ]}t j| qS r   )_iterate_star_argsrQ   ).0aelrM   rL   r   r   
<listcomp>   s   z(TreeArguments.unpack.<locals>.<listcomp>c                 S   s   g | ]}|d ur|qS r#   r   )rc   vr   r   r   rg          r0   rA      r   Zcomp_for)Zdefining_contextZsync_comp_for_nodeZ
entry_node)r[   rR   rQ   Z
infer_noder1   r   r
   _star_star_dictrV   rW   r9   r5   r'   r	   r   ZGeneratorComprehensionr]   r   )rL   rM   Z
named_args
star_countZarrays	iteratorsvaluesdctrZ   Zsync_comp_forcompr   re   r   r3      s>    "

zTreeArguments.unpackc                 c   sT   t | jD ]D\}}d }|jdkrBt|jdkrB|jd d d \}}|||fV  q
d S )NrA   rj   r0   )r[   rR   rV   r9   rW   )rL   rl   rA   defaultr   r   r   _as_tree_tuple_objects   s    
z$TreeArguments._as_tree_tuple_objectsc                 c   s8   |   D ]*\}}}|rt|tjs$qt| j|V  qd S r#   )rr   
isinstancer   Namer   rQ   )rL   r<   rq   rl   r   r   r   iter_calling_names_with_star   s    z*TreeArguments.iter_calling_names_with_starc                 C   s   d| j j| jf S Nz<%s: %s>)	__class__r    rR   rN   r   r   r   __repr__   s    zTreeArguments.__repr__c                 C   s   g }| }||vrt |tsq|| tt| D ]Z}| }t|dkrR qt |d trhg   S t |d t	sz q|d 
 }|j} qq6q|jd urt|j|jgS |jd urt|j|jgS g S )Nr   r   )rs   r\   r5   reversedr1   ru   Zgotor9   r   r   Zget_executed_param_namer(   rR   r   rQ   rS   )rL   Zold_arguments_listr(   Zcalling_namenamesZexecuted_param_namer   r   r   rO      s,    



zTreeArguments.get_calling_nodes)N)N)r    r!   r"   r^   classmethodr   ra   r3   rr   ru   rx   rO   r   r   r   r   r\      s   
	
'r\   c                   @   s&   e Zd Zdd ZdddZdd ZdS )	ValuesArgumentsc                 C   s
   || _ d S r#   )_values_list)rL   Zvalues_listr   r   r   r^     s    zValuesArguments.__init__Nc                 c   s   | j D ]}d t|fV  qd S r#   )r}   r   )rL   rM   rn   r   r   r   r3     s    
zValuesArguments.unpackc                 C   s   d| j j| jf S rv   )rw   r    r}   rN   r   r   r   rx     s    zValuesArguments.__repr__)N)r    r!   r"   r^   r3   rx   r   r   r   r   r|     s   
r|   c                   @   sR   e Zd Zdd Zedd Zedd Zedd Zdd
dZdd Z	dd Z
d	S )TreeArgumentsWrapperc                 C   s
   || _ d S r#   )_wrapped_arguments)rL   r(   r   r   r   r^     s    zTreeArgumentsWrapper.__init__c                 C   s   | j jS r#   )r   rQ   rN   r   r   r   rQ     s    zTreeArgumentsWrapper.contextc                 C   s   | j jS r#   )r   rR   rN   r   r   r   rR   !  s    z"TreeArgumentsWrapper.argument_nodec                 C   s   | j jS r#   )r   rS   rN   r   r   r   rS   %  s    zTreeArgumentsWrapper.trailerNc                 C   s   t d S r#   rK   )rL   r+   r   r   r   r3   )  s    zTreeArgumentsWrapper.unpackc                 C   s
   | j  S r#   )r   rO   rN   r   r   r   rO   ,  s    z&TreeArgumentsWrapper.get_calling_nodesc                 C   s   d| j j| jf S rv   )rw   r    r   rN   r   r   r   rx   /  s    zTreeArgumentsWrapper.__repr__)N)r    r!   r"   r^   propertyrQ   rR   rS   r3   rO   rx   r   r   r   r   r~     s   



r~   c                 c   sb   | ds4|d ur4d|jj|f }tj| d||d z
|j}W n tyP   Y n0 | E d H  d S )N__iter__z;TypeError: %s() argument after * must be a sequence, not %sztype-error-starmessage)Zpy__getattribute__r<   r'   r   addr   r   )rQ   array
input_noderM   mZiter_r   r   r   rb   3  s    


rb   c                 C   sv   ddl m} t||r&|jjdkr&i S t|tjrD|jdkrD| S |d urnd|jj	|f }t
j| d||d i S d S )Nr   )CompiledInstancedictz9TypeError: %s argument after ** must be a mapping, not %sztype-error-star-starr   )Zjedi.inference.value.instancer   rs   r<   Zstring_namer   SequenceZ
array_typeZexact_key_itemsr'   r   r   )rQ   r   r   rM   r   r   r   r   r   rk   B  s    
rk   )r   )N)*rC   	itertoolsr   Zparso.pythonr   Zjedir   Zjedi.inference.utilsr   Zjedi.inferencer   Zjedi.inference.lazy_valuer   r   r	   r
   Zjedi.inference.namesr   r   r   Zjedi.inference.base_valuer   r   r   Zjedi.inference.valuer   Zjedi.inference.cacher   r   	Exceptionr   r/   r%   r2   rJ   rP   r[   r\   r|   r~   rb   rk   r   r   r   r   <module>   s.   
'g
