B
    Ad	              	   @   s   d dl Z d dlZd dlm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ejejd df dd
ddZdddddZdejd d
ddZdS )    N)WRAPPER_ASSIGNMENTS)wraps   )_PassArg)pass_eval_contextVc                s    fdd}|S )Nc                s   t }|d k|t jkr0tjtdddntjtdddd}ttt	|}t
|dt
 |dd fd	d
}rt|}d|_|S )N)argsreturnc             S   s   t t| d jS )Nr   )tcastboolis_async)r    r   D/var/www/html/venv/lib/python3.7/site-packages/jinja2/async_utils.pyr      s    z2async_variant.<locals>.decorator.<locals>.is_asyncc             S   s   t t| d jjS )Nr   )r
   r   r   environmentr   )r   r   r   r   r      s    )
__module____name____qualname__)assignedr   )r   updatedc                 s0   | }r| dd  } |r& | |S | |S )Nr   r   )r   kwargsb)
async_funcr   need_eval_contextnormal_funcr   r   wrapper"   s    
z1async_variant.<locals>.decorator.<locals>.wrapperT)r   Zfrom_objr   r
   Anyr   tuplesetr   
differencer   r   Zjinja_async_variant)r   Zpass_argZasync_func_attrsZnormal_func_attrsr   )r   )r   r   r   r   	decorator   s    


"z async_variant.<locals>.decoratorr   )r   r    r   )r   r   async_variant   s    (r!   )valuer	   c                s@   t | tkrtd| S t| r4td| I d H S td| S )Nr   zt.Awaitable[V])type_common_primitivesr
   r   inspectisawaitable)r"   r   r   r   
auto_await;   s
    
r'   z*t.Union[t.AsyncIterable[V], t.Iterable[V]]zt.AsyncIterator[V])iterabler	   c          	   C  sf   t | drFxVtd| 2 y3 d H }W n
 tk
s8X |V  q   Y  W nxtd| D ]
}|V  qTW d S )N	__aiter__zt.AsyncIterable[V]zt.Iterable[V])hasattrr
   r   StopAsyncIteration)r(   itemr   r   r   
auto_aiterF   s
    
&r-   c                s   dd t | 2 I d H S )Nc          
      s.   g | y3 d H }W n
 t k
s"X |q   Y  S )N)r+   ).0xr   r   r   
<listcomp>T   s    z auto_to_list.<locals>.<listcomp>)r-   )r"   r   r   r   auto_to_listQ   s    r1   )r%   typingr
   	functoolsr   r   utilsr   r   TypeVarr   r!   intfloatr   strlistdictr   r#   r$   Union	Awaitabler'   r-   Listr1   r   r   r   r   <module>   s   
, 
