
    ^j/                     \   d dl 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lmZ d dlmZmZmZmZ d d	lmZmZmZ d d
lmZmZmZ d dlmZ d dlmZ d dZ G d de      Z d Z!d Z"d Z# G d d      Z$ G d de$      Z%d Z& G d de%      Z' G d de%      Z( G d de$      Z)d!dZ*d Z+y)"    N)zip_longest)Any)tree)debug)PushBackIterator)analysis)LazyKnownValueLazyKnownValuesLazyTreeValueget_merged_lazy_value)	ParamNameTreeNameDefinitionAnonymousParamName)	NO_VALUESValueSetContextualizedNode)iterable)%inference_state_as_method_param_cachec                     |dkD  ry| D ]8  }	 |j                   } |       D ]  }t        |j                         |dz          ! : y# t        $ r Y Gw xY w)z"Helper method for static analysis.
   N   )
py__iter__try_iter_contentinferAttributeError)typesdepthtypf
lazy_values        Q/opt/ringagent/.cad-venv/lib/python3.12/site-packages/jedi/inference/arguments.pyr   r      sn    rz 	 @	@A  c @
 !1!1!3UQY?@@  		s   A	AAc                       e Zd Zy)
ParamIssueN)__name__
__module____qualname__     r!   r#   r#   #   s    r(   r#   c                       fd}|S )aN  
    Transforms a function or method with arguments to the signature that is
    given as an argument clinic notation.

    Argument clinic is part of CPython and used for all the functions that are
    implemented in C (Python 3.7):

        str.split.__text_signature__
        # Results in: '($self, /, sep=None, maxsplit=-1)'
    c                       fd}|S )Nc                     	 t        t        | j                  |            } | g| S # t        $ r	 t        cY S w xY wN)tupleiterate_argument_clinicinference_stater#   r   )value	argumentsargsclinic_stringfuncs      r!   wrapperz?repack_with_argument_clinic.<locals>.decorator.<locals>.wrapper3   sR    	*4))!  E)D))  !  !s    , >>r'   )r4   r5   r3   s   ` r!   	decoratorz.repack_with_argument_clinic.<locals>.decorator2   s    
	* r(   r'   )r3   r6   s   ` r!   repack_with_argument_clinicr7   '   s     r(   c              #     K   t        t        |            }t        |j                               }t	        |      D ]  \  }\  }}}}	|	dk(  rYg }
|D ]-  \  }}||j                  ||f        n|
j                  |       / t        t        j                  | |
      g       |
 j|	dk(  r
t               t        |d      \  }}|t        j                  d       t        |)|s't        j                  d|t        |      |       t        |t         n|j#                         }|s|st        j                  d|       t        |  yw)z;Uses a list with argument clinic information (see PEP 436).r   N   )NNzAKeyword arguments in argument clinic are currently not supported.z4TypeError: %s expected at least %s arguments, got %sz$argument_clinic "%s" not resolvable.)list_parse_argument_clinicr   unpack	enumerate	push_backappendr   r   	FakeTupleNotImplementedErrornextr   warningr#   lenr   r   )r/   r1   r3   clinic_argsiteratorinameoptionalallow_kwargsstarslazy_valueskeyargument	value_sets                 r!   r.   r.   C   sJ    -m<=K	 0 0 23H4=k4J 00D(L%A:K!) -X?&&X7""8,- H..LMNNaZ%''X|4X?MM]^HMMPK 0!5!)!1Ix~~7G	 MM@$G?s   E	Ec              #   P  K   d}d}| rt        j                  d|       }| t        |j                  d            d  } |j                  d      sd}I|xs t	        |j                  d            }|j                  d      }|j                  d      }||d  }||||f |rd}| ry y w)NFz%(?:(?:(\[),? ?|, ?|)(\**\w+)|, ?/)\]*r   r9   Tr   *)rematchrD   groupboolcount)stringrJ   rI   rS   wordrK   s         r!   r;   r;   j   s     LH

 A6JEKKN+,-{{1~L3tEKKN3{{1~

3EF|X|U33L! s   B!B&$B&c                       e Zd ZddZd Zy)_AbstractArgumentsMixinNc                     t         r,   rA   )selffuncdefs     r!   r<   z_AbstractArgumentsMixin.unpack       !!r(   c                     g S r,   r'   r]   s    r!   get_calling_nodesz)_AbstractArgumentsMixin.get_calling_nodes   s    	r(   r,   )r$   r%   r&   r<   rb   r'   r(   r!   rZ   rZ      s    "r(   rZ   c                   $    e Zd ZU dZdZeed<   dZy)AbstractArgumentsNargument_node)r$   r%   r&   contextre   r   __annotations__trailerr'   r(   r!   rd   rd      s    GM3Gr(   rd   c              #     K   | y | j                   dk7  r'| j                   dk(  r| j                  d   dv sd| f y t        | j                        }|D ]  }|dk(  r	|dv r*t        |d       }|J t	        |j
                        |f 7|j                   dk(  r_|j                  d   dv rNt	        |j                        dk(  sJ t	        |j                  d   j
                        |j                  d   f d|f  y w)NarglistrN   r   )rQ   z**,r9   r   )typechildreniterrB   rD   r0   )rj   rF   childcs       r!   unpack_arglistrq      s    ||y LLJ&7+;+;A+>++MjG$$%H C<k!Xt$A= =ekk"A%%ZZ:%q![0u~~&!+++ennQ'--.q0AAAU(Ns   C?Dc                   d    e Zd ZU eed<   d
dZe e       d               Zd
dZ	d Z
d Zd Zd	 Zy)TreeArgumentsrf   Nc                 <    || _         || _        || _        || _        y)zS
        :param argument_node: May be an argument_node or a list of nodes.
        N)re   rf   _inference_staterh   )r]   r/   rf   re   rh   s        r!   __init__zTreeArguments.__init__   s"     + /r(   c                      | |i |S r,   r'   )clsr2   kwargss      r!   create_cachedzTreeArguments.create_cached   s     D#F##r(   c           
   #     K   g }t        | j                        D ]  \  }}|dk(  rw| j                  j                  |      }|D cg c]  }t	        | j                  |||       }}t        t        |       D ]"  }d t        |D 	cg c]  }	|	|		 c}	      f $ |dk(  rC| j                  j                  |      }|D ]"  }
t        | j                  |
||      E d {    $ |j                  dk(  r|j                  }t        |      dk(  r9|j                  |d   j                  t        | j                  |d         f       -|j                  d   }|j                  dk(  r|j                  d   }t        j                   | j"                  | j                  ||j                  d         }d t%        |      f d t        | j                  |      f  |E d {    y c c}w c c}	w 7 7 w)Nr   r9   rN      r   comp_for)defining_contextsync_comp_for_node
entry_node)rq   re   rf   
infer_node_iterate_star_argsr:   r   r   _star_star_dictrl   rm   rD   r?   r0   r   r   GeneratorComprehensionru   r	   )r]   r^   
named_args
star_countelarraysa	iteratorsvaluesvdctrp   sync_comp_forcomps                 r!   r<   zTreeArguments.unpack   s    
,T-?-?@ 	@NJQ004&,.!" 0aWM .	 .";	#:; F 5$*<qam<!   q004! OC.t||S"gNNNO 77j(A1v{"))1Q4::}T\\STUVSW7X*Z[ )+A(--;,9,B,B1,EM'>> 11-1\\/<'){{1~	  #N4$888dllB ????	@F A. =
 O. 	sD   AG6G'$ G6G,G,AG6G1DG6!G4"G64G6c              #      K   t        | j                        D ]J  \  }}d }|j                  dk(  r-t        |j                        dk(  r|j                  d d d   \  }}|||f L y w)NrN   r|   r9   )rq   re   rl   rD   rm   )r]   r   rN   defaults       r!   _as_tree_tuple_objectsz$TreeArguments._as_tree_tuple_objects   so     $243E3E$F 	0 JG}}
*x(()Q.(0(9(9#A#(>%HgGZ//	0s   A$A&c              #      K   | j                         D ];  \  }}}|rt        |t        j                        s$t	        | j
                  |       = y wr,   )r   
isinstancer   Namer   rf   )r]   rH   r   r   s       r!   iter_calling_names_with_starz*TreeArguments.iter_calling_names_with_star   sI     )-)D)D)F 	9%D':Zdii%@$T\\488	9s   AAc                 P    d| j                   j                  d| j                  dS N<z: >)	__class__r$   re   ra   s    r!   __repr__zTreeArguments.__repr__   s    !^^44d6H6HIIr(   c                 >   g }| }||vrt        |t              sn|j                  |       t        t	        |j                                     D ]n  }|j                         }t        |      dk7  r nNt        |d   t              rg c S t        |d   t              s n"|d   j                         }|j                  } n ||vr|j                  !t        |j                  |j                        gS |j                  !t        |j                  |j                        gS g S )Nr   r   )r   rs   r?   reversedr:   r   gotorD   r   r   get_executed_param_namer1   re   r   rf   rh   )r]   old_arguments_listr1   calling_namenamesexecuted_param_names         r!   rb   zTreeArguments.get_calling_nodes   s   	11i7%%i0 (i.T.T.V)W X $))+u:?eAh(:; I!%(I6&+Ah&F&F&H#/99	 11& "".&y'8'8):Q:QRSS(&y'8'8):K:KLMM	r(   r,   )r$   r%   r&   r   rg   rv   classmethodr   rz   r<   r   r   r   rb   r'   r(   r!   rs   rs      sF    L *,$ - $%N09Jr(   rs   c                        e Zd Zd ZddZd Zy)ValuesArgumentsc                     || _         y r,   )_values_list)r]   values_lists     r!   rv   zValuesArguments.__init__  s
    'r(   Nc              #   L   K   | j                   D ]  }d t        |      f  y wr,   )r   r
   )r]   r^   r   s      r!   r<   zValuesArguments.unpack  s+     '' 	0F///	0s   "$c                 P    d| j                   j                  d| j                  dS r   )r   r$   r   ra   s    r!   r   zValuesArguments.__repr__  s    !^^44d6G6GHHr(   r,   )r$   r%   r&   rv   r<   r   r'   r(   r!   r   r     s    (0Ir(   r   c                   V    e Zd Zd Zed        Zed        Zed        Zd	dZd Z	d Z
y)
TreeArgumentsWrapperc                     || _         y r,   )_wrapped_arguments)r]   r1   s     r!   rv   zTreeArgumentsWrapper.__init__  s
    "+r(   c                 .    | j                   j                  S r,   )r   rf   ra   s    r!   rf   zTreeArgumentsWrapper.context       &&...r(   c                 .    | j                   j                  S r,   )r   re   ra   s    r!   re   z"TreeArgumentsWrapper.argument_node$  s    &&444r(   c                 .    | j                   j                  S r,   )r   rh   ra   s    r!   rh   zTreeArgumentsWrapper.trailer(  r   r(   Nc                     t         r,   r\   )r]   r4   s     r!   r<   zTreeArgumentsWrapper.unpack,  r_   r(   c                 6    | j                   j                         S r,   )r   rb   ra   s    r!   rb   z&TreeArgumentsWrapper.get_calling_nodes/  s    &&88::r(   c                 P    d| j                   j                  d| j                  dS r   )r   r$   r   ra   s    r!   r   zTreeArgumentsWrapper.__repr__2  s    !^^44d6M6MNNr(   r,   )r$   r%   r&   rv   propertyrf   re   rh   r<   rb   r   r'   r(   r!   r   r     sS    , / / 5 5 / /";Or(   r   c              #      K   |j                  d      s7|5d|j                  j                  d|}t        j                  | d||       	 |j
                  } |       E d {    y 7 # t        $ r Y y w xY ww)N__iter__TypeError: z,() argument after * must be a sequence, not ztype-error-starmessage)py__getattribute__rH   r0   r   addr   r   )rf   array
input_noder^   miter_s         r!   r   r   6  su     ##J/ <<%%u.ALL"3ZK   7  s6   A	A9A* 
A9"A(#A9*	A63A95A66A9c                 @   ddl m} t        ||      r|j                  j                  dk(  ri S t        |t
        j                        r|j                  dk(  r|j                         S |5d|j                  j                  d|}t        j                  | d||       i S )Nr   )CompiledInstancedictr   z* argument after ** must be a mapping, not ztype-error-star-starr   )jedi.inference.value.instancer   r   rH   string_namer   Sequence
array_typeexact_key_itemsr0   r   r   )rf   r   r   r^   r   r   s         r!   r   r   E  s    >%)*uzz/E/E/O 		E8,,	-%2B2Bf2L$$&&<<%%u.ALL"8*aP	r(   )r   r,   ),rR   	itertoolsr   typingr   parso.pythonr   jedir   jedi.inference.utilsr   jedi.inferencer   jedi.inference.lazy_valuer	   r
   r   r   jedi.inference.namesr   r   r   jedi.inference.base_valuer   r   r   jedi.inference.valuer   jedi.inference.cacher   r   	Exceptionr#   r7   r.   r;   rZ   rd   rq   rs   r   r   r   r   r'   r(   r!   <module>r      s    	 !    1 #) ) R R M M ) F@"	 	8$N , / 2f% fR	I' 	IO2 O4r(   