a
    lcH                     @   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   sV   |D ]L}t |rJddlm} || | }|d urP| |D ]
}|V  q<q|V  qd S )Nr   )_get_forward_reference_node)r   Z!jedi.inference.gradual.annotationr	   Zget_safe_valueZ
infer_node)contextZ	value_setvaluer	   nodec r   [/var/www/html/django/DPS/env/lib/python3.9/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   s8   z| |   W S  ty2   td||  t Y S 0 d S )Nz$No param #%s found for annotation %s)Zexecute_annotation
IndexErrorr   warningr   selfindexr   r   r   get_index_and_execute   s
    z-_AbstractGenericManager.get_index_and_executec                 C   s   dd dd |  D  S )Nz[%s], c                 s   s   | ]}|j d dV  qdS )F)Zadd_class_infoN)get_type_hint).0tr   r   r   	<genexpr>#       z8_AbstractGenericManager.get_type_hint.<locals>.<genexpr>joinr   r   r   r   r   r   "   s    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   Zcontext_of_indexZ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%   lenr*   r    r   r   r   __len__/   s    zLazyGenericManager.__len__c                 #   sJ    fdd}t  jtr8 jjd dD ]}||V  q&n fddV  d S )Nc                    s    fddS )Nc                      s   t tj  S r%   )r   r   r&   Zinferr   )
lazy_valuer   r   r   <lambda>6   s   zULazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks.<locals>.<lambda>r   r/   r    r1   r    lambda_scoping_in_for_loop_sucks5   s    zCLazyGenericManager._tuple.<locals>.lambda_scoping_in_for_loop_sucks)Zcontextualized_nodec                      s   t t jt  jgS r%   )r   r   r&   r'   r   r    r   r   r0   ?   s   
z+LazyGenericManager._tuple.<locals>.<lambda>)
isinstancer'   r   Z
py__iter__)r   r2   r/   r   r    r   r*   2   s
    zLazyGenericManager._tuplec                 c   s   |   D ]}| V  qd S r%   r)   )r   Z	callable_r   r   r   r   D   s    zLazyGenericManager.to_tuplec                 C   s6   t | jtr2| j }t|dkr2|d dkr2dS dS )N      z...TF)r3   r'   r   Zget_tree_entriesr-   )r   entriesr   r   r   is_homogenous_tupleI   s
    
z&LazyGenericManager.is_homogenous_tuplec                 C   s   dd dd |  D  S )Nz<LazyG>[%s]r   c                 s   s   | ]}t |V  qd S r%   reprr   xr   r   r   r   Q   r   z.LazyGenericManager.__repr__.<locals>.<genexpr>r   r    r   r   r   __repr__P   s    zLazyGenericManager.__repr__N)r!   r"   r#   r(   r   r+   r.   r   r*   r7   r<   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%   r)   )r   tupr   r   r   r(   U   s    zTupleGenericManager.__init__c                 C   s
   | j | S r%   r)   r   r   r   r   r+   X   s    zTupleGenericManager.__getitem__c                 C   s
   t | jS r%   r,   r    r   r   r   r.   [   s    zTupleGenericManager.__len__c                 C   s   | j S r%   r)   r    r   r   r   r   ^   s    zTupleGenericManager.to_tuplec                 C   s   dS )NFr   r    r   r   r   r7   a   s    z'TupleGenericManager.is_homogenous_tuplec                 C   s   dd dd |  D  S )Nz
<TupG>[%s]r   c                 s   s   | ]}t |V  qd S r%   r8   r:   r   r   r   r   e   r   z/TupleGenericManager.__repr__.<locals>.<genexpr>r   r    r   r   r   r<   d   s    zTupleGenericManager.__repr__N)	r!   r"   r#   r(   r+   r.   r   r7   r<   r   r   r   r   r=   T   s   r=   N)__doc__Zjedir   Z
jedi.cacher   Zjedi.inference.utilsr   Zjedi.inference.base_valuer   r   Zjedi.inference.value.iterabler   Zjedi.inference.helpersr   r   r   r$   r=   r   r   r   r   <module>   s   .