
    Mh                         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 Zd Zd	 Zd
 Zedd            Z G 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              #     K   ddl m} ddlm} | j        }t          j        | j        dd          }|                                }|j        d         j	        }|j        d         j
        }|                                                    | j                  D ]}||j	        cxk    r|k     rn |j        }	|	j        dk    r|	j        d         d| j        z  k    rx ||	d	          }
|
j|                    |
          }t%          | ||          rDt'          ||
          }|                    |j        ||
j        d
         |
          }|D ]}||fV  	d 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cs                  X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/star_args.py_iter_nodes_for_paramr2      s     111111666666"1
 ()=y)TTM--//K"2&0E

 
$
,C**,,001GHH * *DN((((S((((({H}
** )!,j6K0KKK)/(I>>&/>>wGGG*:wEE 
*!.w!@!@,::-=$+*1*:1*=$+	  ;     "( * *A"#T'MMMM'* *    c                      |j         dk    rdS ddlm}  |||                                          }t	           fd|D                       S )Nr-   Fr   )TreeNameDefinitionc              3   X   K   | ]$}j         |j         k    oj        |j        k    V  %d S N)r   r   ).0pr'   s     r1   	<genexpr>z&_goes_to_param_name.<locals>.<genexpr>>   sT         (A,<< 7'1;6     r3   )r    jedi.inference.namesr5   gotoany)r'   r   potential_namer5   founds   `    r1   r#   r#   9   s~    f$$u777777w77<<>>E         r3   c                     ddl m} |j        }|j        d         dk    }|                     |j        |                   }|j        |dz   d          D ]}||k    r n || ||          }|S )Nr   )infer_trailerawaitr   )jedi.inference.syntax_treerA   r   r   
infer_node)r   r   rA   	atom_exprindexr.   trailer2s          r1   r$   r$   C   s    888888Iq!W,E	 25 9::F&uqyzz2 : :hEw99Mr3   c              #     K   d}t                      }|                                 D ]"\  }}||dz  }|                    |           #|D ]@}|r|                                r|dz  }|j        |v r|                                r<|V  Ad S )Nr   r   )setunpackaddmaybe_positional_argumentr   maybe_keyword_argument)	argumentsparam_namescount	used_keyskey_r9   s          r1   _remove_given_paramsrT   Q   s      EI""$$  Q;QJEEMM#   	Q0022 	QJE=I%%!*B*B*D*D% r3      c              #   n	  K   | r$t          | d         j                  r
| E d {V  d S t                      }g }g }g }g }g }d }d }	| D ]?}
|
                                }|t          j        k    r|dz  rt          |
          }|
}>|
                                t          j        k    r$|dz  rt          t          |
                    }|
}	|t          j	        k    r|dz  r|
                    |
           |t          j        k    r
|dz  r|
V  |dk    rt          |
t          j                  V  |dk    r/|
                    t          |
t          j	                             !|                    |
j                   |
V  Ad}d}d}|D ]l}|\  }}|}||v r|                    |           nd}|                                D ]0}d}|dk    rd}g }t#          t          t%          ||                    d                              |          D ]}
|
                                t          j        k    r|
                    |
           :|
                                t          j        k    r|
                    |
           r|
                                t          j	        k    r|
                    |
           |
                    |
           t)          |          t)          |          k    r|}2n|D ]}
|dk    r?|
                                t          j        k    rt          |
t          j                  V  G|
                                t          j        k    r|                    |
j                   |
V  |s||V  n|r
|d         V  |D ]\  }}|                                D ]}d}t#          t          t%          ||                    d                              d	          D ]q}
|
                                t          j        k    r|
                    |
           :|
                                t          j	        k    r|
                    |
           r|D ]*}
|
j        |v r|
V  |                    |
j                   +|s|	|	V  d S |r|d         V  d S d S )
Nr   r       FTrU   )resolve_stars)r!   )r   r   rI   get_kindr   VAR_POSITIONALr2   VAR_KEYWORDlistKEYWORD_ONLYappendPOSITIONAL_ONLYParamNameFixedKindrK   r   removeget_signaturesprocess_paramsrT   get_param_nameslenPOSITIONAL_OR_KEYWORD)rO   r!   
used_namesarg_callableskwarg_callableskw_only_nameskwarg_names	arg_namesoriginal_arg_nameoriginal_kwarg_namer9   kindlongest_param_namesfound_arg_signaturefound_kwarg_signaturefunc_and_argumentfuncrN   new_star_count	signatureargs_for_this_funcs                        r1   rd   rd   c   s      ";q>#@AA 	 #"""""""FJMOMKI  zz||9+++A~ & 5a 8 8$%!ZZ\\Y222A~ ("&'<Q'?'?"@"@&'#Y+++A~ ($$Q'''Y...A~ Q(I,EFFFFFFq$$%79;Q%R%RSSSSq}--- !* 9 9+i#//""#45555N,,.. 	9 	9I"&""(,%!##-!!111FF    '	( ( 1 1
 ::<<9#888&&q))))ZZ\\Y%===$$Q''''ZZ\\Y%;;;!((++++&--a0000%&&-@)A)AAA&8#'	9* !  ??qzz||y/GGG$Q	(ABBBBBBzz||y>>>q}---GGGG #4#@	 l + , ,i,,.. 
	, 
	,I$(!#-!!111FF    $%	& & & , ,
 ::<<9#888&&q))))ZZ\\Y%;;;!((+++,
	,  & &=J&&q}%%%%  %8%D!!!!!!	 !n r3   c                   $     e Zd Z fdZd Z xZS )ra   c                 X    t                                          |           || _        d S r7   )super__init__	_new_kind)selfr'   new_kind	__class__s      r1   r|   zParamNameFixedKind.__init__   s&    $$$!r3   c                     | j         S r7   )r}   )r~   s    r1   rZ   zParamNameFixedKind.get_kind   s
    ~r3   )__name__
__module____qualname__r|   rZ   __classcell__)r   s   @r1   ra   ra      sG        " " " " "      r3   ra   N)rU   )__doc__inspectr   parsor   jedi.inference.utilsr   r;   r   jedi.inference.helpersr   r2   r#   r$   rT   rd   ra   rX   r3   r1   <module>r      s                ( ( ( ( ( ( 1 1 1 1 1 1 : : : : : : *  *  *F      $ 	o o o 	od    )     r3   