o
    ˷eH                     @   s   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d	 ZG d
d dZG dd deZG dd deZdS )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                 c   sX    |D ]&}t |r&ddlm} || | }|d ur%| |D ]}|V  qq|V  qd S )Nr   )_get_forward_reference_node)r   !jedi.inference.gradual.annotationr	   get_safe_value
infer_node)context	value_setvaluer	   nodec r   V/var/www/ideatree/venv/lib/python3.10/site-packages/jedi/inference/gradual/generics.py_resolve_forward_references   s   r   c                   @   s   e Zd Zdd Zdd ZdS )_AbstractGenericManagerc                 C   s4   z| |   W S  ty   td||  t Y S w )Nz$No param #%s found for annotation %s)execute_annotation
IndexErrorr   warningr   selfindexr   r   r   get_index_and_execute   s   z-_AbstractGenericManager.get_index_and_executec                 C      dd dd |  D  S )Nz[%s], c                 s   s    | ]	}|j d dV  qdS )F)add_class_infoN)get_type_hint).0tr   r   r   	<genexpr>#   s    z8_AbstractGenericManager.get_type_hint.<locals>.<genexpr>joinr   r   r   r   r   r    "      z%_AbstractGenericManager.get_type_hintN)__name__
__module____qualname__r   r    r   r   r   r   r      s    r   c                   @   sT   e Zd Zdd Zedd Zdd Zeedd Zed	d
 Zdd Z	dd Z
dS )LazyGenericManagerc                 C   s   || _ || _d S N)_context_of_index_index_value)r   context_of_indexindex_valuer   r   r   __init__'   s   
zLazyGenericManager.__init__c                 C   s   |   |  S r,   _tupler   r   r   r   __getitem__+   s   zLazyGenericManager.__getitem__c                 C   s   t |  S r,   lenr3   r&   r   r   r   __len__/   s   zLazyGenericManager.__len__c                 #   sN     fdd}t  jtr jjd dD ]}||V  qd S  fddV  d S )Nc                    s    fddS )Nc                      s   t tj  S r,   )r   r   r-   inferr   )
lazy_valuer   r   r   <lambda>6   s    zULazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks.<locals>.<lambda>r   r9   r&   r;   r    lambda_scoping_in_for_loop_sucks5   s   zCLazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks)contextualized_nodec                      s   t t jt  jgS r,   )r   r   r-   r.   r   r&   r   r   r:   ?   s    
z+LazyGenericManager._tuple.<locals>.<lambda>)
isinstancer.   r   
py__iter__)r   r<   r9   r   r&   r   r3   2   s   zLazyGenericManager._tuplec                 c   s    |   D ]}| V  qd S r,   r2   )r   	callable_r   r   r   r   D   s   
zLazyGenericManager.to_tuplec                 C   s6   t | jtr| j }t|dkr|d dkrdS dS )N      z...TF)r>   r.   r   get_tree_entriesr6   )r   entriesr   r   r   is_homogenous_tupleI   s
   
z&LazyGenericManager.is_homogenous_tuplec                 C   r   )Nz<LazyG>[%s]r   c                 s       | ]}t |V  qd S r,   reprr!   xr   r   r   r#   Q       z.LazyGenericManager.__repr__.<locals>.<genexpr>r$   r&   r   r   r   __repr__P   r'   zLazyGenericManager.__repr__N)r(   r)   r*   r1   r   r4   r7   r   r3   rE   rL   r   r   r   r   r+   &   s    

r+   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TupleGenericManagerc                 C   s
   || _ d S r,   r2   )r   tupr   r   r   r1   U      
zTupleGenericManager.__init__c                 C   s
   | j | S r,   r2   r   r   r   r   r4   X   rO   zTupleGenericManager.__getitem__c                 C   s
   t | jS r,   r5   r&   r   r   r   r7   [   rO   zTupleGenericManager.__len__c                 C   s   | j S r,   r2   r&   r   r   r   r   ^   s   zTupleGenericManager.to_tuplec                 C   s   dS )NFr   r&   r   r   r   rE   a   s   z'TupleGenericManager.is_homogenous_tuplec                 C   r   )Nz
<TupG>[%s]r   c                 s   rF   r,   rG   rI   r   r   r   r#   e   rK   z/TupleGenericManager.__repr__.<locals>.<genexpr>r$   r&   r   r   r   rL   d   r'   zTupleGenericManager.__repr__N)	r(   r)   r*   r1   r4   r7   r   rE   rL   r   r   r   r   rM   T   s    rM   N)__doc__jedir   
jedi.cacher   jedi.inference.utilsr   jedi.inference.base_valuer   r   jedi.inference.value.iterabler   jedi.inference.helpersr   r   r   r+   rM   r   r   r   r   <module>   s    .