3
€»e›  ã            	   @   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j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)Úwrapsé   )Ú_PassArg)Úpass_eval_contextÚVc                s   ‡ fdd„}|S )Nc                sr   t jˆƒ}|d k‰|t jkr0tjtdœdd„‰ntjtdœdd„‰tˆƒ‡ ‡‡‡fdd„ƒ}ˆrht|ƒ}d|_|S )N)ÚargsÚreturnc             S   s   t jt| d jƒS )Nr   )ÚtÚcastÚboolÚis_async)r   © r   ú4/tmp/pip-build-3irwxpxt/Jinja2/jinja2/async_utils.pyr      s    z2async_variant.<locals>.decorator.<locals>.is_asyncc             S   s   t jt| d jjƒS )Nr   )r	   r
   r   Úenvironmentr   )r   r   r   r   r      s    c                 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	   ZAnyr   r   r   Zjinja_async_variant)r   Z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             Ã   s@   t | ƒtkrtjd| ƒS tj| ƒr4tjd| ƒI d H S tjd| ƒS )Nr   zt.Awaitable[V])ÚtypeÚ_common_primitivesr	   r
   ÚinspectÚisawaitable)r   r   r   r   Ú
auto_await2   s
    
r   z*t.Union[t.AsyncIterable[V], t.Iterable[V]]zt.AsyncIterator[V])Úiterabler   c             C  sj   t | dƒrJxZtjd| ƒ2 d H y3 d H }W n
 tk
s<X |V  q   Y  W nxtjd| ƒD ]
}|V  qXW d S )NÚ	__aiter__zt.AsyncIterable[V]zt.Iterable[V])Úhasattrr	   r
   ÚStopAsyncIteration)r   Úitemr   r   r   Ú
auto_aiter=   s
    
*r#   c             Ã   s   dd„ t | ƒ2 d H ƒ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>K   s    z auto_to_list.<locals>.<listcomp>)r#   )r   r   r   r   Úauto_to_listH   s    r'   )r   Útypingr	   Ú	functoolsr   Úutilsr   r   ZTypeVarr   r   ÚintÚfloatr   ÚstrÚlistÚdictÚtupler   r   ÚUnionÚ	Awaitabler   r#   ÚListr'   r   r   r   r   Ú<module>   s   
$ 
