
    f                         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y)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                         }|j                  d   j                  }|j                  d   j                  }|j                         j                  | j                        D ]  }||j                  cxk  r|k  sn |j                  }	|	j                  dk(  s8|	j                  d   d| j                   z  k(  sX ||	d	      }
|
d|j#                  |
      }t%        | ||      st'        ||
      }|j)                  |j*                  ||
j                  d
   |
      }|D ]  }||f 
  y w)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                  S/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/star_args.py_iter_nodes_for_paramr2      sa    16"11
 (()=)=y)TM--/K""2&00E

 
 
$
,
,C**,001G1GH *DNN(S({{H}}
* ))!,j6K6K0KK)(I>&/>>wGG*:wE!.w!@,::-==$+*1*:*:1*=$+	  ;   "( *A"#T'M*%*s%   B=E2 E2E2?E2E2*AE2c                      |j                   dk7  ryddlm}  |||      j                         }t	         fd|D              S )Nr-   Fr   )TreeNameDefinitionc              3      K   | ]8  }j                   |j                   k(  xr j                  |j                  k(   : y wN)r   r   ).0pr'   s     r1   	<genexpr>z&_goes_to_param_name.<locals>.<genexpr>>   sF       ((A,<,<< 7''1;;67 s   >A)r    jedi.inference.namesr4   gotoany)r'   r   potential_namer4   founds   `    r1   r#   r#   9   sF    f$7w7<<>E       c                     ddl m} |j                  }|j                  d   dk(  }| j	                  |j                  |         }|j                  |dz   d  D ]  }||k(  r |S  || ||      } |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Iq!W,E	 2 25 9:F&&uqyz2 :hM w9: Mr?   c              #   
  K   d}t               }| j                         D ]  \  }}||dz  }|j                  |         |D ]=  }|r|j                         r|dz  }|j                  |v r|j                         r:| ? y w)Nr   r   )setunpackaddmaybe_positional_argumentr   maybe_keyword_argument)	argumentsparam_namescount	used_keyskey_r8   s          r1   _remove_given_paramsrT   Q   s     EI""$ Q;QJEMM#	  Q002QJE==I%!*B*B*Ds   BBc              #     K   | r#t        | d   j                        r| E d {    y t               }g }g }g }g }g }d }d }	| D ]2  }
|
j                         }|t        j
                  k(  r|dz  s-t        |
      }|
};|
j                         t        j                  k(  r|dz  sbt        t        |
            }|
}	y|t        j                  k(  r|dz  s|j                  |
       |t        j                  k(  r|dz  s|
 |dk(  rt        |
t        j                         |dk(  r+|j                  t        |
t        j                               |j                  |
j                         |
 5 d}d}d}|D ]=  }|\  }}|}||v r|j                  |       nd}|j!                         D ]  }d}|dk(  rd}g }t#        t        t%        ||j'                  d                  |      D ]  }
|
j                         t        j                  k(  r|j                  |
       6|
j                         t        j
                  k(  r|j                  |
       i|
j                         t        j                  k(  r|j                  |
       |j                  |
        t)        |      t)        |      kD  s|}
 @ |D ]  }
|dk(  r>|
j                         t        j
                  k7  rt        |
t        j                         F|
j                         t        j*                  k(  r|j                  |
j                         |
  |s|| n	|r|d    |D ]  \  }}|j!                         D ]  }d}t#        t        t%        ||j'                  d                  d	      D ]h  }
|
j                         t        j                  k(  r|j                  |
       6|
j                         t        j                  k(  sX|j                  |
       j   |D ]0  }
|
j                  |v r|
 |j                  |
j                         2 |s|	|	 y |r|d    y y 7 @w)
Nr   r       FT   )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_namer8   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 #""JMOMKI zz|9+++A~ 5a 8$%!ZZ\Y222A~"&'<Q'?"@&'#Y+++A~$$Q'Y...A~Q(I,E,EFFq$$%79;Q;Q%RSq}}-/4 !* 9+i#/""#45N,,. 	9I"&"(,%!##-!!111F  '	( 1
 ::<9#8#88&&q)ZZ\Y%=%==$$Q'ZZ\Y%;%;;!((+&--a01 %&-@)AA&8#'	99: ! ?qzz|y/G/GG$Q	(A(ABBzz|y>>>q}}-G #4#@	l + ,i,,. 
	,I$(!#-!!111F  $%	& ,
 ::<9#8#88&&q)ZZ\Y%;%;;!((+,
	,,  &==J&q}}%	& !%8%D!!	!n 
S #s7    Q%Q"AQ%/4Q%$/Q%*Q%?F8Q%9EQ%A!Q%c                   $     e Zd Z fdZd Z xZS )ra   c                 2    t         |   |       || _        y r6   )super__init__	_new_kind)selfr'   new_kind	__class__s      r1   r|   zParamNameFixedKind.__init__   s    $!r?   c                     | j                   S r6   )r}   )r~   s    r1   rZ   zParamNameFixedKind.get_kind   s    ~~r?   )__name__
__module____qualname__r|   rZ   __classcell__)r   s   @r1   ra   ra      s    "r?   ra   N)rX   )__doc__inspectr   parsor   jedi.inference.utilsr   r:   r   jedi.inference.helpersr   r2   r#   r$   rT   rd   ra   rW   r?   r1   <module>r      sT      ( 1 : *F$ 	o 	od) r?   