o
    q>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 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)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   S/var/www/bmteknikk.ddns.net/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                    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_await;   s   
r0   iterable*t.Union[t.AsyncIterable[V], t.Iterable[V]]t.AsyncIterator[V]c                 C  sF   t | drtd| 2 z	3 d H W }|V  q6 d S | D ]}|V  qd S )N	__aiter__zt.AsyncIterable[V])hasattrr   r   )r1   itemr   r   r   
auto_aiterF   s   
r7   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>T   s    z auto_to_list.<locals>.<listcomp>)r7   r/   r   r   r   auto_to_listQ   s   r;   )r1   r2   r	   r3   )r-   typingr   	functoolsr   r   utilsr   r   TypeVarr   r)   intfloatr   strlistdictr    r+   r,   Union	Awaitabler0   r7   Listr;   r   r   r   r   <module>   s(    
,"
