o
    tdf                     @   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)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!   a/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/jedi/inference/star_args.py_iter_nodes_for_param   s8   



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   sf   ddl m} |j}|jd dk}| |j| }|j|d d  D ]}||kr* |S || ||}q!|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   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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   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!   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