
    ^j                         d 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 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.
    )abstractmethod)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         X/opt/ringagent/.cad-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                   8    e Zd Zed        Zed        Zd Zd Zy)_AbstractGenericManagerc                     t         NNotImplementedErrorselfindexs     r   __getitem__z#_AbstractGenericManager.__getitem__       !!    c                     t         r   r   r   s    r   r   z _AbstractGenericManager.to_tuple    r!   r"   c                     	 | |   j                  d       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   r   s     r   get_index_and_executez-_AbstractGenericManager.get_index_and_execute$   sB    	;11$77 	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ar"   N)__name__
__module____qualname__r   r    r   r)   r.    r"   r   r   r      s3    " " " "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 r   )_context_of_index_index_value)r   context_of_indexindex_values      r   __init__zLazyGenericManager.__init__0   s    !1'r"   c                 2     | j                         |          S r   _tupler   s     r   r    zLazyGenericManager.__getitem__4   s    #t{{}U#%%r"   c                 4    t        | j                               S r   lenrB   r$   s    r   __len__zLazyGenericManager.__len__8   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 r   )r   r   r;   infer
lazy_valuer   s   r   <lambda>zULazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks.<locals>.<lambda>?   s)    8$?&&  "%  r"   r7   rK   s   `r    lambda_scoping_in_for_loop_suckszCLazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks>   s     r"   )contextualized_nodec                  j    t        t         j                  t         j                  g                  S r   )r   r   r;   r<   r$   s   r   rM   z+LazyGenericManager._tuple.<locals>.<lambda>H   s.    (#>&&$++,-$  r"   )
isinstancer<   r	   
py__iter__)r   rN   rL   s   `  r   rB   zLazyGenericManager._tuple;   sY     	 d'')=>"//::t:T C
6zBBC s   AAc              #   H   K   | j                         D ]  } |         y wr   rA   )r   	callable_s     r   r   zLazyGenericManager.to_tupleM   s#      	I+	s    "c                     t        | j                  t              r1| j                  j                         }t	        |      dk(  r	|d   dk(  ryy)N      z...TF)rQ   r<   r	   get_tree_entriesrE   )r   entriess     r   is_homogenous_tuplez&LazyGenericManager.is_homogenous_tupleR   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r   reprr/   xs     r   r1   z.LazyGenericManager.__repr__.<locals>.<genexpr>Z   s     )Ka$q')K   r2   r$   s    r   __repr__zLazyGenericManager.__repr__Y   s"    		)K4==?)K KLLr"   N)r4   r5   r6   r?   r   r    rF   r   rB   rZ   rb   r7   r"   r   r9   r9   /   s[    ( & &"      Mr"   r9   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TupleGenericManagerc                     || _         y r   rA   )r   tups     r   r?   zTupleGenericManager.__init__^   s	    r"   c                      | j                   |   S r   rA   r   s     r   r    zTupleGenericManager.__getitem__a   s    {{5!!r"   c                 ,    t        | j                        S r   rD   r$   s    r   rF   zTupleGenericManager.__len__d   s    4;;r"   c                     | j                   S r   rA   r$   s    r   r   zTupleGenericManager.to_tupleg   s    {{r"   c                      y)NFr7   r$   s    r   rZ   z'TupleGenericManager.is_homogenous_tuplej   s    r"   c                 T    ddj                  d | j                         D              z  S )Nz
<TupG>[%s]r+   c              3   2   K   | ]  }t        |        y wr   r]   r_   s     r   r1   z/TupleGenericManager.__repr__.<locals>.<genexpr>n   s     (JQa(Jra   r2   r$   s    r   rb   zTupleGenericManager.__repr__m   s"    tyy(J$--/(JJKKr"   N)	r4   r5   r6   r?   r    rF   r   rZ   rb   r7   r"   r   rd   rd   ]   s!    " Lr"   rd   N)__doc__abcr   jedir   
jedi.cacher   jedi.inference.utilsr   jedi.inference.base_valuer   r   jedi.inference.value.iterabler	   jedi.inference.helpersr
   r   r   r9   rd   r7   r"   r   <module>ru      sQ      % ) 9 > ,	b b(+M0 +M\L1 Lr"   