
    jKj                     x    d 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)to_list)ParamNameWrapper)is_big_annoying_libraryc              #     K   ddl m} | j                  }| 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|j	                  d      }	|	l|j                  |	      }
t!        | |
|      st#        |
|	      }|j%                  |j&                  |
|	j                  d	   |	
      }|D ]  }||f 
  y w)Nr   )TreeArgumentsfuncdeflambdefargument*trailer   )contextargument_noder   )jedi.inference.argumentsr   parent_context	tree_namesearch_ancestor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   execution_contextfunction_nodemodule_nodestartendnamer   r   r   valuesargscs                 i/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/jedi/inference/star_args.py_iter_nodes_for_paramr0      sW    6"11
 ((88INM--/K""2&00E

 
 
$
,
,C**,001G1GHDNN(S({{H}}
* ))!,j6K6K0KK"229=&/>>wGG*:wE!.w!@,::-==$+*1*:*:1*=$+	  ;   "(A"#T'M "(% Is%   B2E/5E/E/4E/E/'AE/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     r/   	<genexpr>z&_goes_to_param_name.<locals>.<genexpr>;   sF      1 ((A,<,<< 7''1;;67s   >A)r   jedi.inference.namesr2   gotoany)r%   r   potential_namer2   founds   `    r/   r!   r!   6   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_treer?   r   r   
infer_node)r   r   r?   	atom_exprindexr,   trailer2s          r/   r"   r"   @   s    8Iq!W,E	 2 25 9:F&&uqyz2hM w9 3 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_r6   s          r/   _remove_given_paramsrR   N   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   rG   get_kindr   VAR_POSITIONALr0   VAR_KEYWORDlistKEYWORD_ONLYappendPOSITIONAL_ONLYParamNameFixedKindrI   r   removeget_signaturesprocess_paramsrR   get_param_nameslenPOSITIONAL_OR_KEYWORD)rM   r   
used_namesarg_callableskwarg_callableskw_only_nameskwarg_names	arg_namesoriginal_arg_nameoriginal_kwarg_namer6   kindlongest_param_namesfound_arg_signaturefound_kwarg_signaturefunc_and_argumentfuncrL   new_star_count	signatureargs_for_this_funcs                        r/   rb   rb   `   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 !*+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 #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 )r_   c                 2    t         |   |       || _        y r4   )super__init__	_new_kind)selfr%   new_kind	__class__s      r/   rz   zParamNameFixedKind.__init__   s    $!r=   c                     | j                   S r4   )r{   )r|   s    r/   rX   zParamNameFixedKind.get_kind   s    ~~r=   )__name__
__module____qualname__rz   rX   __classcell__)r~   s   @r/   r_   r_      s    "r=   r_   N)rV   )__doc__inspectr   jedi.inference.utilsr   r8   r   jedi.inference.helpersr   r0   r!   r"   rR   rb   r_   rU   r=   r/   <module>r      sQ     ( 1 :*D$ 	o 	od) r=   