o
    Fa                  	   @   s   d dl Z d dlZd dlmZ ddlmZ ddlmZ edZ	dd Z
eeeeeeeedhZd	ejejd df d
dfddZ			
	dddZd	dd
ejd fddZdS )    N)wraps   )_PassArg)pass_eval_contextVc                    s    fdd}|S )Nc                    sv   t }|d u |t ju rdtjdtfddn
dtjdtfddt fdd}r6t|}d|_|S )	Nargsreturnc                 S   s   t t| d jS Nr   )tcastboolis_asyncr    r   4/usr/lib/python3/dist-packages/jinja2/async_utils.pyr      s   z2async_variant.<locals>.decorator.<locals>.is_asyncc                 S   s   t t| d jjS r	   )r
   r   r   environmentr   r   r   r   r   r      s   c                     s8   | }r| dd  } |r | i |S | i |S )Nr   r   )r   kwargsb)
async_funcr   need_eval_contextnormal_funcr   r   wrapper   s   z1async_variant.<locals>.decorator.<locals>.wrapperT)	r   from_objr   r
   Anyr   r   r   jinja_async_variant)r   pass_argr   r   )r   r   r   r   	decorator   s   

z async_variant.<locals>.decoratorr   )r   r   r   r   r   async_variant   s    r   valuer   c                    sB   t | tv rtd| S t| rtd| I d H S td| S )Nr   zt.Awaitable[V])type_common_primitivesr
   r   inspectisawaitabler   r   r   r   
auto_await2   s   
r%   iterable*t.Union[t.AsyncIterable[V], t.Iterable[V]]t.AsyncIterator[V]c                 C  sN   t | drtd| 2 z	3 d H W }|V  q6 d S td| D ]}|V  qd S )N	__aiter__zt.AsyncIterable[V]zt.Iterable[V])hasattrr
   r   )r&   itemr   r   r   
auto_aiter=   s   
r,   c                    s   dd t | 2 I d H S )Nc                    s   g | z3 d H W }|q6 S )Nr   ).0xr   r   r   
<listcomp>K   s    z auto_to_list.<locals>.<listcomp>)r,   r$   r   r   r   auto_to_listH   s   r0   )r&   r'   r   r(   )r"   typingr
   	functoolsr   utilsr   r   TypeVarr   r   intfloatr   strlistdicttupler    r!   Union	Awaitabler%   r,   Listr0   r   r   r   r   <module>   s&    
$"
