o
    ˷e                     @   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 ]Q}||j	  kr=|k rn q0|j}	|	jdkr|	jd d| j kr||	d	}
|
d ur||
}t| ||rt||
}|j|j||
jd
 |
d}|D ]}||fV  qyq0d S )Nr   )search_ancestor)TreeArgumentsfuncdeflambdefargument*trailer   )contextargument_noder   )parso.python.treer   jedi.inference.argumentsr   parent_contextr   	tree_nameget_root_nodechildren	start_posend_posget_used_namesgetstring_nameparenttype
star_countcreate_context_goes_to_param_name_to_callablescreate_cachedinference_state)
param_namer   r   execution_contextfunction_nodemodule_nodestartendnamer   r   r   valuesargsc r/   O/var/www/ideatree/venv/lib/python3.10/site-packages/jedi/inference/star_args.py_iter_nodes_for_param   s8   



r1   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/   r0   	<genexpr>>   s    

z&_goes_to_param_name.<locals>.<genexpr>)r   jedi.inference.namesr2   gotoany)r%   r   potential_namer2   foundr/   r6   r0   r!   9   s   
r!   c                 C   sf   ddl m} |j}|jd dk}| |j| }|j|d d  D ]}||kr* |S || ||}q!|S )Nr   )infer_trailerawaitr   )jedi.inference.syntax_treer=   r   r   
infer_node)r   r   r=   	atom_exprindexr,   trailer2r/   r/   r0   r"   C   s   r"   c                 c   sx    d}t  }|  D ]\}}|d u r|d7 }q
|| q
|D ]}|r,| r,|d8 }q|j|v r6| r6q|V  qd S )Nr   r   )setunpackaddmaybe_positional_argumentr   maybe_keyword_argument)	argumentsparam_namescount	used_keyskey_r5   r/   r/   r0   _remove_given_paramsQ   s   
rO      c              	   c   sl   | rt | d jr| E d H  d S t }g }g }g }g }g }d }d }	| D ]i}
|
 }|tjkr:|d@ r9t|
}|
}q$|
 tjkrN|d@ rMtt|
}|
}	q$|tj	kr]|d@ r\|
|
 q$|tjkrj|d@ ri|
V  q$|dkrvt|
tjV  q$|dkr|
t|
tj	 q$||
j |
V  q$d}d}d}|D ]m}|\}}|}||v r|| nd}| D ]T}d}|dkrd}g }ttt||jdd|D ].}
|
 tjkr|
|
 q|
 tjkr|
|
 q|
 tj	kr|
|
 q|
|
 qt|t|kr|}qq|D ]*}
|dkr|
 tjkrt|
tjV  q|
 tjkr,||
j |
V  q|s=|d ur=|V  n|rE|d V  |D ]>\}}| D ]4}d}ttt||jdddd	D ]}
|
 tjkrs|
|
 qb|
 tj	kr|
|
 qbqOqG|D ]}
|
j|v rq|
V  ||
j q|s|	d ur|	V  d S |r|d V  d S d S )
Nr   r      r/   FTrP   )resolve_stars)r   )r   r   rD   get_kindr   VAR_POSITIONALr1   VAR_KEYWORDlistKEYWORD_ONLYappendPOSITIONAL_ONLYParamNameFixedKindrF   r   removeget_signaturesprocess_paramsrO   get_param_nameslenPOSITIONAL_OR_KEYWORD)rJ   r   
used_namesarg_callableskwarg_callableskw_only_nameskwarg_names	arg_namesoriginal_arg_nameoriginal_kwarg_namer5   kindlongest_param_namesfound_arg_signaturefound_kwarg_signaturefunc_and_argumentfuncrI   new_star_count	signatureargs_for_this_funcr/   r/   r0   r]   c   s   











r]   c                       s$   e Zd Z fddZdd Z  ZS )rZ   c                    s   t  | || _d S r3   )super__init__	_new_kind)selfr%   new_kind	__class__r/   r0   rs      s   
zParamNameFixedKind.__init__c                 C   s   | j S r3   )rt   )ru   r/   r/   r0   rS      s   zParamNameFixedKind.get_kind)__name__
__module____qualname__rs   rS   __classcell__r/   r/   rw   r0   rZ      s    rZ   N)rP   )__doc__inspectr   parsor   jedi.inference.utilsr   r8   r   jedi.inference.helpersr   r1   r!   r"   rO   r]   rZ   r/   r/   r/   r0   <module>   s    #
r