o
    F­Ša›  ã                	   @   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&    
$"ÿ
þÿþ