
    ^h                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  S rS rS	 rS
 r\SS j5       r " S S\5      rg)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              #     #    SSK Jn  SSKJn  U R                  n[
        R                  " U R                  SS5      nUR                  5       nUR                  S   R                  nUR                  S   R                  nUR                  5       R                  U R                  5       H  nXhR                  s=::  a  U:  d  M  O  M  UR                  n	U	R                  S:X  d  M=  U	R                  S   SU R                   -  :X  d  M_  U" U	S	5      n
U
c  Mm  UR#                  U
5      n[%        XU5      (       d  M  ['        X5      nUR)                  UR*                  UU
R                  S
   U
S9nU H  nX4v   M
     M     g 7f)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                  R/home/james-whalen/.local/lib/python3.13/site-packages/jedi/inference/star_args.py_iter_nodes_for_paramr2      sU    16"11
 (()=)=y)TM--/K""2&00E

 
 
$
,
,C**,001G1GHNN(S(({{H}}
* ))!,j6K6K0KK)(I>&/>>wGG*:EE!.w!@,::-==$+*1*:*:1*=$+	  ;   "(A"#'M "(% Is%   B=F F %F 
F  F 9AF c                    ^  UR                   S:w  a  gSSKJn  U" X5      R                  5       n[	        U 4S jU 5       5      $ )Nr-   Fr   )TreeNameDefinitionc              3      >#    U  H>  nTR                   UR                   :H  =(       a    TR                  UR                  :H  v   M@     g 7fN)r   r   ).0pr'   s     r1   	<genexpr>&_goes_to_param_name.<locals>.<genexpr>>   sE      1 ((A,<,<< 7''1;;67s   AA	)r    jedi.inference.namesr4   gotoany)r'   r   potential_namer4   founds   `    r1   r#   r#   9   sD    f$7w7<<>E       c                     SSK Jn  UR                  nUR                  S   S:H  nU R	                  UR                  U   5      nUR                  US-   S   H  nX:X  a    U$ U" XU5      nM     U$ )Nr   )infer_trailerawaitr   )jedi.inference.syntax_treerB   r   r   
infer_node)r   r   rB   	atom_exprindexr.   trailer2s          r1   r$   r$   C   s|    8Iq!W,E	 2 25 9:F&&uqyz2M w9 3 Mr@   c              #   :  #    Sn[        5       nU R                  5        H   u  pEUc  US-  nM  UR                  U5        M"     U HQ  nU(       a  UR                  5       (       a  US-  nM&  UR                  U;   a  UR                  5       (       a  MM  Uv   MS     g 7f)Nr   r   )setunpackaddmaybe_positional_argumentr   maybe_keyword_argument)	argumentsparam_namescount	used_keyskey_r8   s          r1   _remove_given_paramsrU   Q   s     EI""$;QJEMM#	 % Q0022QJE==I%!*B*B*D*D s   BBc              #   	  #    U (       a(  [        U S   R                  5      (       a  U  S h  vN   g [        5       n/ n/ n/ n/ n/ nS nS n	U  GHX  n
U
R                  5       nU[        R
                  :X  a  US-  (       a  [        U
5      nU
nMA  MC  U
R                  5       [        R                  :X  a$  US-  (       a  [        [        U
5      5      nU
n	M  M  U[        R                  :X  a  US-  (       a  UR                  U
5        M  M  U[        R                  :X  a  US-  (       a  U
v   M  M  US:X  a  [        U
[        R                  5      v   GM  US:X  a,  UR                  [        U
[        R                  5      5        GM9  UR                  U
R                  5        U
v   GM[     SnSnSnU GHI  nUu  nnUnX;   a  UR                  U5        OSnUR!                  5        GH  nSnUS:X  a  Sn/ n[#        [        [%        UUR'                  SS95      5      U5       H  n
U
R                  5       [        R                  :X  a  UR                  U
5        M8  U
R                  5       [        R
                  :X  a  UR                  U
5        Mm  U
R                  5       [        R                  :X  a  UR                  U
5        M  UR                  U
5        M     [)        U5      [)        U5      :  d  GM  UnGM     GML     U H  n
US:X  a@  U
R                  5       [        R
                  :w  a  [        U
[        R                  5      v   MI  U
R                  5       [        R*                  :X  a  UR                  U
R                  5        U
v   M     U(       d  Ub  Uv   OU(       a  US   v   U H  u  nnUR!                  5        H  nSn[#        [        [%        UUR'                  SS95      5      SS	9 Hm  n
U
R                  5       [        R                  :X  a  UR                  U
5        M8  U
R                  5       [        R                  :X  d  M\  UR                  U
5        Mo     M     M     U H4  n
U
R                  U;   a  M  U
v   UR                  U
R                  5        M6     U(       d  U	b  U	v   g U(       a  US   v   g g  GN7f)
Nr   r       FT   )resolve_stars)r!   )r   r   rJ   get_kindr   VAR_POSITIONALr2   VAR_KEYWORDlistKEYWORD_ONLYappendPOSITIONAL_ONLYParamNameFixedKindrL   r   removeget_signaturesprocess_paramsrU   get_param_nameslenPOSITIONAL_OR_KEYWORD)rP   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funcrO   new_star_count	signatureargs_for_this_funcs                        r1   re   re   c   s)    ";q>#@#@A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 !*+i#/""#45N,,.I"&"(,%!##-!!111F  '	(
 ::<9#8#88&&q)ZZ\Y%=%==$$Q'ZZ\Y%;%;;!((+&--a0( %&-@)AA&8#' / +: !?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 #s   *SSKS3ESA7Sc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )rb      c                 0   > [         TU ]  U5        X l        g r6   )super__init__	_new_kind)selfr'   new_kind	__class__s      r1   r~   ParamNameFixedKind.__init__   s    $!r@   c                     U R                   $ r6   r   )r   s    r1   r[   ParamNameFixedKind.get_kind   s    ~~r@   r   )__name__
__module____qualname____firstlineno__r~   r[   __static_attributes____classcell__)r   s   @r1   rb   rb      s    " r@   rb   N)rY   )__doc__inspectr   parsor   jedi.inference.utilsr   r;   r   jedi.inference.helpersr   r2   r#   r$   rU   re   rb   rX   r@   r1   <module>r      sT      ( 1 : *F$ 	o 	od) r@   