o
    àý°j  ã                	   @   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j	r'd dl
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G dd„ deje ƒZ				ddd„Zd
ddejd fdd„ZdS )é    N)ÚWRAPPER_ASSIGNMENTS)Úwrapsé   )Ú_PassArg)Úpass_eval_contextÚVc                    s   ‡ fdd„}|S )Nc                    sž   t  ˆ¡}|d u ‰|t ju rdtjdtfdd„‰n
dtjdtfdd„‰d}tttƒ 	|¡ƒ}t
ˆ|d�t
ˆ |dd	�‡ ‡‡‡fd
d„ƒƒ}ˆrJt|ƒ}d|_|S )NÚargsÚreturnc                 S   s   t  t| d j¡S ©Nr   )ÚtÚcastÚboolÚis_async©r   © r   ú…/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-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   )Ú
__module__Ú__name__Ú__qualname__)Úassignedr   )r   Úupdatedc                     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   ÚtupleÚsetr   Ú
differencer   r   Újinja_async_variant)r   Úpass_argÚasync_func_attrsÚ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v rt d| ¡S t | ¡rt d| ¡I d H S | S )Nr   zt.Awaitable[V])ÚtypeÚ_common_primitivesr   r   ÚinspectÚisawaitable©r*   r   r   r   Ú
auto_await>   s   €
r0   c                   @   s.   e Zd Zddd„Zddd„Zdefd	d
„ZdS )Ú_IteratorToAsyncIteratorÚiteratorút.Iterator[V]c                 C   s
   || _ d S ©N)Ú	_iterator)Úselfr2   r   r   r   Ú__init__J   s   
z!_IteratorToAsyncIterator.__init__r	   úte.Selfc                 C   s   | S r4   r   )r6   r   r   r   Ú	__aiter__M   s   z"_IteratorToAsyncIterator.__aiter__c              
   Ã   s4   �zt | jƒW S  ty } zt|jƒ|‚d }~ww r4   )Únextr5   ÚStopIterationÚStopAsyncIterationr*   )r6   Úer   r   r   Ú	__anext__P   s   €€ÿz"_IteratorToAsyncIterator.__anext__N)r2   r3   )r	   r8   )r   r   r   r7   r9   r   r>   r   r   r   r   r1   I   s    

r1   Úiterableú*t.Union[t.AsyncIterable[V], t.Iterable[V]]út.AsyncIterator[V]c                 C   s   t | dƒr	|  ¡ S tt| ƒƒS )Nr9   )Úhasattrr9   r1   Úiter)r?   r   r   r   Ú
auto_aiterW   s   
rD   c                 Ã   s   �dd„ t | ƒ2 ƒI d H S )Nc                 Ó   s   �g | z3 d H W }|‘q6 S r4   r   )Ú.0Úxr   r   r   Ú
<listcomp>c   s   € z auto_to_list.<locals>.<listcomp>)rD   r/   r   r   r   Úauto_to_list`   s   €rH   )r?   r@   r	   rA   ) r-   Útypingr   Ú	functoolsr   r   Úutilsr   r   ÚTYPE_CHECKINGÚtyping_extensionsÚteÚTypeVarr   r)   ÚintÚfloatr   ÚstrÚlistÚdictr    r+   r,   ÚUnionÚ	Awaitabler0   ÚGenericr1   rD   ÚListrH   r   r   r   r   Ú<module>   s.    
,"ÿ
þ	ÿþ