a
    0h                  	   @   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	rNd dl
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G dd deje 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 u |t ju 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   @/var/www/auris/lib/python3.9/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   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                    s8   t | tv rtd| S t| r4td| I d H S | S )Nr   zt.Awaitable[V])type_common_primitivesr   r   inspectisawaitabler%   r   r   r   
auto_await>   s
    
r+   c                   @   s6   e Zd ZddddZddddZedd	d
ZdS )_IteratorToAsyncIteratorzt.Iterator[V])iteratorc                 C   s
   || _ d S N)	_iterator)selfr-   r   r   r   __init__J   s    z!_IteratorToAsyncIterator.__init__zte.Self)r	   c                 C   s   | S r.   r   )r0   r   r   r   	__aiter__M   s    z"_IteratorToAsyncIterator.__aiter__c              
      sB   zt | jW S  ty< } zt|j|W Y d }~n
d }~0 0 d S r.   )nextr/   StopIterationStopAsyncIterationr%   )r0   er   r   r   	__anext__P   s    z"_IteratorToAsyncIterator.__anext__N)r   r   r   r1   r2   r   r7   r   r   r   r   r,   I   s   r,   z*t.Union[t.AsyncIterable[V], t.Iterable[V]]zt.AsyncIterator[V])iterabler	   c                 C   s"   t | dr|  S tt| S d S )Nr2   )hasattrr2   r,   iter)r8   r   r   r   
auto_aiterW   s    
r;   c                    s   dd t | 2 I d H S )Nc                    s   g | z3 d H W }|q6 S r.   r   ).0xr   r   r   
<listcomp>c       z auto_to_list.<locals>.<listcomp>)r;   r*   r   r   r   auto_to_list`   s    r@   ) r(   typingr   	functoolsr   r   utilsr   r   TYPE_CHECKINGZtyping_extensionsteTypeVarr   r$   intfloatr   strlistdictr   r&   r'   Union	Awaitabler+   Genericr,   r;   Listr@   r   r   r   r   <module>   s$   
, 
