
    f/                     P   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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)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        S/var/www/cvtools/html/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>.wrapper2   sR    	*4))!  E)D))  !  !s    , >>r&   )r3   r4   r2   s   ` r    	decoratorz.repack_with_argument_clinic.<locals>.decorator1   s    
	* r'   r&   )r2   r5   s   ` r    repack_with_argument_clinicr6   &   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.   r0   r2   clinic_argsiteratorinameoptionalallow_kwargsstarslazy_valueskeyargument	value_sets                 r    r-   r-   B   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   r8   Tr   *)rematchrC   groupboolcount)stringrI   rH   rR   wordrJ   s         r    r:   r:   i   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+   r@   )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;   ra   r&   r'   r    rY   rY      s    "r'   rY   c                       e Zd ZdZdZdZy)AbstractArgumentsN)r#   r$   r%   contextargument_nodetrailerr&   r'   r    rc   rc      s    GMGr'   rc   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arglistrM   r   )rP   z**,r8   r   )typechildreniterrA   rC   r/   )rh   rE   childcs       r    unpack_arglistro      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                   X    e Zd Zd	dZe e       d               Zd	dZd Zd Z	d Z
d Zy)
TreeArgumentsNc                 <    || _         || _        || _        || _        y)zS
        :param argument_node: May be an argument_node or a list of nodes.
        N)re   rd   _inference_staterf   )r\   r.   rd   re   rf   s        r    __init__zTreeArguments.__init__   s"     + /r'   c                      | |i |S r+   r&   )clsr1   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   r8   rM      r   comp_for)defining_contextsync_comp_for_node
entry_node)ro   re   rd   
infer_node_iterate_star_argsr9   r   r   _star_star_dictrj   rk   rC   r>   r/   r
   r   GeneratorComprehensionrs   r   )r\   r]   
named_args
star_countelarraysa	iteratorsvaluesvdctrn   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)NrM   rz   r8   )ro   re   rj   rC   rk   )r\   r   rM   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   rd   )r\   rG   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   r`   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   rq   r>   reversedr9   r   gotorC   r   r   get_executed_param_namer0   re   r   rd   rf   )r\   old_arguments_listr0   calling_namenamesexecuted_param_names         r    ra   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%   rt   classmethodr   rx   r;   r   r   r   ra   r&   r'   r    rq   rq      sA     *,$ - $%N09Jr'   rq   c                        e Zd Zd ZddZd Zy)ValuesArgumentsc                     || _         y r+   )_values_list)r\   values_lists     r    rt   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   r`   s    r    r   zValuesArguments.__repr__  s    !^^44d6G6GHHr'   r+   )r#   r$   r%   rt   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\   r0   s     r    rt   zTreeArgumentsWrapper.__init__  s
    "+r'   c                 .    | j                   j                  S r+   )r   rd   r`   s    r    rd   zTreeArgumentsWrapper.context      &&...r'   c                 .    | j                   j                  S r+   )r   re   r`   s    r    re   z"TreeArgumentsWrapper.argument_node!  s    &&444r'   c                 .    | j                   j                  S r+   )r   rf   r`   s    r    rf   zTreeArgumentsWrapper.trailer%  r   r'   Nc                     t         r+   r[   )r\   r3   s     r    r;   zTreeArgumentsWrapper.unpack)  r^   r'   c                 6    | j                   j                         S r+   )r   ra   r`   s    r    ra   z&TreeArgumentsWrapper.get_calling_nodes,  s    &&88::r'   c                 P    d| j                   j                  d| j                  dS r   )r   r#   r   r`   s    r    r   zTreeArgumentsWrapper.__repr__/  s    !^^44d6M6MNNr'   r+   )r#   r$   r%   rt   propertyrd   re   rf   r;   ra   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__rG   r/   r   addr   r   )rd   array
input_noder]   miter_s         r    r   r   3  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   rG   string_namer   Sequence
array_typeexact_key_itemsr/   r   r   )rd   r   r   r]   r   r   s         r    r   r   B  s    >%)*uzz/E/E/O 		E8,,	-%2B2Bf2L$$&&<<%%u.ALL"8*aP	r'   )r   r+   )*rQ   	itertoolsr   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"   r6   r-   r:   rY   rc   ro   rq   r   r   r   r   r&   r'   r    <module>r      s    	 !   1 #) ) R R M M ) F@"	 	8$N , / 2d% dN	I' 	IO2 O4r'   