a
    lc                     @   s   d 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 Zd	d
 Zdd Zdd ZedddZG dd deZdS )a
  
This module is responsible for inferring *args and **kwargs for signatures.

This means for example in this case::

    def foo(a, b, c): ...

    def bar(*args):
        return foo(1, *args)

The signature here for bar should be `bar(b, c)` instead of bar(*args).
    )	Parameter)tree)to_list)ParamNameWrapper)is_big_annoying_libraryc                 c   s  ddl m} ddlm} | j}t| jdd}| }|jd j	}|jd j
}| | jD ]}||j	  krx|k r^n q^|j}	|	jdkr^|	jd d| j kr^||	d	}
|
d ur^||
}t| ||r^t||
}|j|j||
jd
 |
d}|D ]}||fV  qq^d S )Nr   )search_ancestor)TreeArgumentsZfuncdefZlambdefargument*trailer   )contextZargument_noder   )Zparso.python.treer   Zjedi.inference.argumentsr   parent_contextr   Z	tree_nameZget_root_nodechildren	start_posend_posZget_used_namesgetstring_nameparenttype
star_countZcreate_context_goes_to_param_name_to_callablesZcreate_cachedZinference_state)
param_namer   r   Zexecution_contextZfunction_nodeZmodule_nodestartendnamer
   r   r   valuesargsc r!   T/var/www/html/django/DPS/env/lib/python3.9/site-packages/jedi/inference/star_args.py_iter_nodes_for_param   s4    



r#   c                    s>   |j dkrdS ddlm} ||| }t fdd|D S )Nr   Fr   )TreeNameDefinitionc                 3   s&   | ]} j |j ko j|jkV  qd S N)r   r   ).0pr   r!   r"   	<genexpr>>   s   z&_goes_to_param_name.<locals>.<genexpr>)r   jedi.inference.namesr$   Zgotoany)r   r   Zpotential_namer$   foundr!   r(   r"   r   9   s    
r   c                 C   sd   ddl m} |j}|jd dk}| |j| }|j|d d  D ]}||krR q`|| ||}qB|S )Nr   )infer_trailerawaitr   )Zjedi.inference.syntax_treer-   r   r   Z
infer_node)r   r   r-   Z	atom_exprindexr   Ztrailer2r!   r!   r"   r   C   s    r   c                 c   sv   d}t  }|  D ]$\}}|d u r,|d7 }q|| q|D ]4}|rV| rV|d8 }q<|j|v rj| rjq<|V  q<d S )Nr   r   )setunpackaddZmaybe_positional_argumentr   Zmaybe_keyword_argument)	argumentsparam_namescountZ	used_keyskey_r'   r!   r!   r"   _remove_given_paramsQ   s    
r8      c              	   c   sr  | r t | d jr | E d H  d S t }g }g }g }g }g }d }d }	| D ]}
|
 }|tjkrr|d@ rpt|
}|
}qF|
 tjkr|d@ rtt|
}|
}	qF|tj	kr|d@ r|
|
 qF|tjkr|d@ r|
V  qF|dkrt|
tjV  qF|dkr|
t|
tj	 qF||
j |
V  qFd}d}d}|D ]}|\}}|}||v rR|| nd}| D ]}d}|dkrtd}g }ttt||jdd|D ]d}
|
 tjkr|
|
 nB|
 tjkr|
|
 n&|
 tj	kr|
|
 n
|
|
 qt|t|kr^|}q^q,|D ]R}
|dkrJ|
 tjkrJt|
tjV  n"|
 tjkrf||
j |
V  q|s|d ur|V  n|r|d V  |D ]z\}}| D ]f}d}ttt||jdddd	D ]<}
|
 tjkr|
|
 n|
 tj	kr|
|
 qҐqq|D ](}
|
j|v r0q|
V  ||
j q|s^|	d ur^|	V  n|rn|d V  d S )
Nr   r      r!   FTr9   )Zresolve_stars)r   )r   r   r0   get_kindr   VAR_POSITIONALr#   VAR_KEYWORDlistKEYWORD_ONLYappendPOSITIONAL_ONLYParamNameFixedKindr2   r   removeZget_signaturesprocess_paramsr8   Zget_param_nameslenPOSITIONAL_OR_KEYWORD)r4   r   Z
used_namesZarg_callablesZkwarg_callablesZkw_only_namesZkwarg_names	arg_namesZoriginal_arg_nameZoriginal_kwarg_namer'   kindZlongest_param_namesZfound_arg_signatureZfound_kwarg_signatureZfunc_and_argumentfuncr3   Znew_star_count	signatureZargs_for_this_funcr!   r!   r"   rD   c   s    











rD   c                       s$   e Zd Z fddZdd Z  ZS )rB   c                    s   t  | || _d S r%   )super__init__	_new_kind)selfr   Znew_kind	__class__r!   r"   rL      s    zParamNameFixedKind.__init__c                 C   s   | j S r%   )rM   )rN   r!   r!   r"   r;      s    zParamNameFixedKind.get_kind)__name__
__module____qualname__rL   r;   __classcell__r!   r!   rO   r"   rB      s   rB   N)r9   )__doc__inspectr   Zparsor   Zjedi.inference.utilsr   r*   r   Zjedi.inference.helpersr   r#   r   r   r8   rD   rB   r!   r!   r!   r"   <module>   s   #
r