
    fH                         d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ d Z G d	 d
      Z G d de      Z G d de      Zy)za
This module is about generics, like the `int` in `List[int]`. It's not about
the Generic class.
    )debug)memoize_method)to_tuple)ValueSet	NO_VALUES)SequenceLiteralValue)	is_stringc              #      K   |D ]L  }t        |      r;ddlm}  || |j                               }|.| j	                  |      D ]  }|  I| N y w)Nr   )_get_forward_reference_node)r	   !jedi.inference.gradual.annotationr   get_safe_value
infer_node)context	value_setvaluer   nodecs         Z/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/gradual/generics.py_resolve_forward_referencesr      sa      UU.w8L8L8NOD ++D1 AG Ks
   0A"Ac                       e Zd Zd Zd Zy)_AbstractGenericManagerc                     	 | |   j                         S # t        $ r  t        j                  d||        t        cY S w xY w)Nz$No param #%s found for annotation %s)execute_annotation
IndexErrorr   warningr   selfindexs     r   get_index_and_executez-_AbstractGenericManager.get_index_and_execute   s@    	;1133 	MM@%N	s    &>>c                 T    ddj                  d | j                         D              z  S )Nz[%s], c              3   @   K   | ]  }|j                  d         yw)F)add_class_infoN)get_type_hint).0ts     r   	<genexpr>z8_AbstractGenericManager.get_type_hint.<locals>.<genexpr>#   s     !aA!///"G!as   joinr   r   s    r   r$   z%_AbstractGenericManager.get_type_hint"   s&    		!aQUQ^Q^Q`!aaaa    N)__name__
__module____qualname__r   r$    r+   r   r   r      s    br+   r   c                   ^    e Zd Zd Zed        Zd Zeed               Zed        Zd Z	d Z
y)	LazyGenericManagerc                      || _         || _        y N)_context_of_index_index_value)r   context_of_indexindex_values      r   __init__zLazyGenericManager.__init__'   s    !1'r+   c                 2     | j                         |          S r3   _tupler   s     r   __getitem__zLazyGenericManager.__getitem__+   s    #t{{}U#%%r+   c                 4    t        | j                               S r3   lenr;   r*   s    r   __len__zLazyGenericManager.__len__/   s    4;;=!!r+   c              #       K    fd}t         j                  t              r, j                  j                  d       D ]  } ||        y  fd y w)Nc                       fdS )Nc                  ^    t        t        j                   j                                     S r3   )r   r   r4   infer
lazy_valuer   s   r   <lambda>zULazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks.<locals>.<lambda>6   s)    8$?&&  "%  r+   r/   rE   s   `r    lambda_scoping_in_for_loop_suckszCLazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks5   s     r+   )contextualized_nodec                  j    t        t         j                  t         j                  g                  S r3   )r   r   r4   r5   r*   s   r   rG   z+LazyGenericManager._tuple.<locals>.<lambda>?   s.    (#>&&$++,-$  r+   )
isinstancer5   r   
py__iter__)r   rH   rF   s   `  r   r;   zLazyGenericManager._tuple2   sY     	 d'')=>"//::t:T C
6zBBC s   AAc              #   H   K   | j                         D ]  } |         y wr3   r:   )r   	callable_s     r   r   zLazyGenericManager.to_tupleD   s#      	I+	s    "c                     t        | j                  t              r1| j                  j                         }t	        |      dk(  r	|d   dk(  ryy)N      z...TF)rK   r5   r   get_tree_entriesr?   )r   entriess     r   is_homogenous_tuplez&LazyGenericManager.is_homogenous_tupleI   sD    d'')=>''88:G7|q WQZ5%8r+   c                 T    ddj                  d | j                         D              z  S )Nz<LazyG>[%s]r!   c              3   2   K   | ]  }t        |        y wr3   reprr%   xs     r   r'   z.LazyGenericManager.__repr__.<locals>.<genexpr>Q   s     )Ka$q')K   r(   r*   s    r   __repr__zLazyGenericManager.__repr__P   s"    		)K4==?)K KLLr+   N)r,   r-   r.   r8   r   r<   r@   r   r;   rT   r\   r/   r+   r   r1   r1   &   s[    ( & &"      Mr+   r1   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TupleGenericManagerc                     || _         y r3   r:   )r   tups     r   r8   zTupleGenericManager.__init__U   s	    r+   c                      | j                   |   S r3   r:   r   s     r   r<   zTupleGenericManager.__getitem__X   s    {{5!!r+   c                 ,    t        | j                        S r3   r>   r*   s    r   r@   zTupleGenericManager.__len__[   s    4;;r+   c                     | j                   S r3   r:   r*   s    r   r   zTupleGenericManager.to_tuple^   s    {{r+   c                      y)NFr/   r*   s    r   rT   z'TupleGenericManager.is_homogenous_tuplea   s    r+   c                 T    ddj                  d | j                         D              z  S )Nz
<TupG>[%s]r!   c              3   2   K   | ]  }t        |        y wr3   rW   rY   s     r   r'   z/TupleGenericManager.__repr__.<locals>.<genexpr>e   s     (JQa(Jr[   r(   r*   s    r   r\   zTupleGenericManager.__repr__d   s"    tyy(J$--/(JJKKr+   N)	r,   r-   r.   r8   r<   r@   r   rT   r\   r/   r+   r   r^   r^   T   s!    " Lr+   r^   N)__doc__jedir   
jedi.cacher   jedi.inference.utilsr   jedi.inference.base_valuer   r   jedi.inference.value.iterabler   jedi.inference.helpersr	   r   r   r1   r^   r/   r+   r   <module>rn      sN   
  % ) 9 > ,		b 	b+M0 +M\L1 Lr+   