
    Mh/                     v   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)dS )!    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k    rdS | D ]L}	 |j         } |            D ]'}t          |                                |dz              (=# t          $ r Y Iw xY wdS )z"Helper method for static analysis.
   N   )
py__iter__try_iter_contentinferAttributeError)typesdepthtypf
lazy_values        X/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/arguments.pyr   r      s    rzz 	 @ @	@A  acc @ @
 !1!1!3!3UQY????@  	 	 	D	@ @s   A
AAc                       e Zd ZdS )
ParamIssueN)__name__
__module____qualname__     r    r"   r"   "   s        Dr'   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|R  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   ss    	*4)!    tE)D))))  ! ! !    !s   #/ AA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          |                                          }t	          |          D ]'\  }\  }}}}	|	dk    rbg }
|D ]5\  }}||                    ||f            n|
                    |           6t          t          j	        | |
          g          V  |
 s|	dk    rt                      t          |d          \  }}|t          j        d           t          |-|s+t          j        d|t          |          |           t          |t           n|                                }|s|st          j        d|           t          |V  )dS )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   s     -m<<==K	 0 0 2 233H4=k4J4J  00D(L%A::K!) - -X?&&X777E""8,,,,H.LLMNNNNNKaZZ%'''X|44X?M]^^^HMPK 0 0!5 5 5!)!1IIx~~7G7G	 	 	 M@$GGG? r'   c              #     K   d}d}| rt          j        d|           }| t          |                    d                    d          } |                    d          sd}Y|p!t	          |                    d                    }|                    d          }|                    d          }||d          }||||fV  |rd}| d S d S )NFz%(?:(?:(\[),? ?|, ?|)(\**\w+)|, ?/)\]*r   r8   Tr   *)rematchrC   groupboolcount)stringrI   rH   rR   wordrJ   s         r    r:   r:   i   s      LH
  
 A6JJEKKNN++,,-{{1~~ 	L3tEKKNN33{{1~~

3EFF|X|U3333 	 L!           r'   c                       e Zd ZddZd ZdS )_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      s7        " " " "    r'   rY   c                       e Zd ZdZdZdZdS )AbstractArgumentsN)r#   r$   r%   contextargument_nodetrailerr&   r'   r    rc   rc      s        GMGGGr'   rc   c              #     K   | d S | j         dk    r"| j         dk    r| j        d         dv sd| fV  d S t          | j                  }|D ]}|dk    r	|dv r-t          |d           }|J t	          |j                  |fV  :|j         dk    rX|j        d         dv rIt	          |j                  dk    sJ t	          |j        d         j                  |j        d         fV  d|fV  d S )NarglistrM   r   )rP   z**,r8   r   )typechildreniterrA   rC   r/   )rh   rE   childcs       r    unpack_arglistro      s=     |y  LJ&&7+;A+>++M+MjG$%%H  C<<k!!Xt$$A===ek""A%%%%%Z:%%q![00u~&&!++++enQ'-..q0AAAAAAU(NNNN r'   c                   l    e Zd Zd	dZe e            d                         Zd	dZd Zd Z	d Z
d ZdS )
TreeArgumentsNc                 >    || _         || _        || _        || _        dS )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     sD#F###r'   c           	   #   t   K   g }t           j                  D ]\  }|dk    ra j                                      } fd|D             }t	          t          |           D ]}d t          d |D                       fV   m|dk    r= j                                      }|D ]}t           j        |          E d {V   j        dk    rj	        }t          |          dk    r=|                    |d         j        t           j        |d                   f           j	        d         }	|	j        dk    r|	j	        d         }	t          j         j         j        |	j	        d         	          }
d t#          |
          fV  yd t           j                  fV  |E d {V  d S )
Nr   c                 >    g | ]}t          j        |          S r&   )_iterate_star_argsrd   ).0aelr]   r\   s     r    
<listcomp>z(TreeArguments.unpack.<locals>.<listcomp>   s9     . . .!" 0aWMM . . .r'   c                     g | ]}||S r+   r&   )r|   vs     r    r   z(TreeArguments.unpack.<locals>.<listcomp>   s    <<<qammmmr'   r8   rM      r   comp_for)defining_contextsync_comp_for_node
entry_node)ro   re   rd   
infer_noder9   r   r   _star_star_dictrj   rk   rC   r>   r/   r
   r   GeneratorComprehensionrs   r   )r\   r]   
named_args
star_countarrays	iteratorsvaluesdctrn   sync_comp_forcompr~   s   ``         @r    r;   zTreeArguments.unpack   sI     
,T-?@@ 	@ 	@NJQ0044. . . . . .&,. . .	";	#:;;  F 5<<F<<<! !      q0044! O OC.t|S"gNNNNNNNNNNO 7j((A1vv{{"))1Q4:}T\STUVSW7X7X*Z[[[[ )+A(-;;,9,B1,EM'> 1-1\/<'){1~	      #N4$8$888888dlB ? ?????? r'   c              #      K   t          | j                  D ]D\  }}d }|j        dk    r+t          |j                  dk    r|j        d d d         \  }}|||fV  Ed S )NrM   r   r8   )ro   re   rj   rC   rk   )r\   r   rM   defaults       r    _as_tree_tuple_objectsz$TreeArguments._as_tree_tuple_objects   s      $243E$F$F 	0 	0 JG}
**x())Q..(0(9##A#(>%HgGZ/////	0 	0r'   c              #      K   |                                  D ]:\  }}}|rt          |t          j                  s#t	          | j        |          V  ;d S r+   )r   
isinstancer   Namer   rd   )r\   rG   r   r   s       r    iter_calling_names_with_starz*TreeArguments.iter_calling_names_with_star   sk      )-)D)D)F)F 	9 	9%D': Zdi%@%@ $T\4888888	9 	9r'   c                 2    d| j         j        d| j        dS N<z: >)	__class__r#   re   r`   s    r    __repr__zTreeArguments.__repr__   s#     !^444d6H6H6HIIr'   c                 j   g }| }||vrt          |t                    sn|                    |           t          t	          |                                                    D ]}|                                }t          |          dk    r n^t          |d         t                    rg c S t          |d         t                    s n"|d         
                                }|j        } ||v|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   sI   	111i77 %%i000 (i.T.T.V.V)W)W X X  $))++u::??EeAh(:;;  III!%(I66 E&+Ah&F&F&H&H#/9	# 111& ".&y'8):QRRSS(&y'8):KLLMM	r'   r+   )r#   r$   r%   rt   classmethodr   rx   r;   r   r   r   ra   r&   r'   r    rq   rq      s            **,,$ $ -, [$% % % %N0 0 09 9 9J J J    r'   rq   c                   "    e Zd Zd ZddZd ZdS )ValuesArgumentsc                     || _         d S r+   )_values_list)r\   values_lists     r    rt   zValuesArguments.__init__  s    'r'   Nc              #   D   K   | j         D ]}d t          |          fV  d S r+   )r   r	   )r\   r]   r   s      r    r;   zValuesArguments.unpack  s>      ' 	0 	0F///////	0 	0r'   c                 2    d| j         j        d| j        dS r   )r   r#   r   r`   s    r    r   zValuesArguments.__repr__  s#     !^444d6G6G6GHHr'   r+   )r#   r$   r%   rt   r;   r   r&   r'   r    r   r     sK        ( ( (0 0 0 0I I I I Ir'   r   c                   j    e Zd Zd Zed             Zed             Zed             Zd	dZd Z	d Z
dS )
TreeArgumentsWrapperc                     || _         d S 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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                 4    | j                                         S r+   )r   ra   r`   s    r    ra   z&TreeArgumentsWrapper.get_calling_nodes,  s    &88:::r'   c                 2    d| j         j        d| j        dS r   )r   r#   r   r`   s    r    r   zTreeArgumentsWrapper.__repr__/  s#     !^444d6M6M6MNNr'   r+   )r#   r$   r%   rt   propertyrd   re   rf   r;   ra   r   r&   r'   r    r   r     s        , , , / / X/ 5 5 X5 / / X/" " " "; ; ;O O O O Or'   r   c              #      K   |                     d          s,|*d|j        j        d|}t          j        | d||           	 |j        } |            E d {V  d S # t          $ r Y d S w xY 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  s      ##J// L <%%%uu.AL"3ZKKKK  577    s   A 
A,+A,c                     ddl m} t          ||          r|j        j        dk    ri S t          |t
          j                  r|j        dk    r|                                S |*d|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    >>>>>>%)** uz/E/O/O 		E8,	-	- %2Bf2L2L$$&&&<%%%uu.AL"8*aPPP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 1 1 1 1 1 # # # # # #) ) ) ) ) ) ) ) ) ) ) ) R R R R R R R R R R M M M M M M M M M M ) ) ) ) ) ) F F F F F F@ @ @ @"	 	 	 	 	 	 	 	  8$ $ $N     ,           /     2d d d d d% d d dN	I 	I 	I 	I 	I' 	I 	I 	IO O O O O2 O O O4       r'   