
    wdf)                        d Z 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
 ddlmZ dd	lmZ dd
lmZ d Zd Zd Zd Zd Zd Zd Zed             Zd ZddZd Zd Zd Zd Zd Zd Z G d de
          Zd dZ  e             dS )!zWThe code for async support. Importing this patches Jinja on supported
Python versions.
    Nupdate_wrapper)Markup   )TemplateModule)LoopContextconcatinternalcode)missingc                 X    K   g  fd} |             d {V  t                    S )Nc                  L   K   2 3 d {V }                      |            6 d S N)append)event	async_genrvs    X/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/jinja2/asyncsupport.pycollectzconcat_async.<locals>.collect   sM      $ 	 	 	 	 	 	 	%IIe %99s   #r	   )r   r   r   s   ` @r   concat_asyncr      sP      	B      '))OOOOOOO"::    c                   K   t          |i |}	 |                     |                     |                    2 3 d {V }|W V  6 d S # t          $ r  | j                                        W V  Y d S w xY wr   )dictroot_render_funcnew_context	Exceptionenvironmenthandle_exception)selfargskwargsvarsr   s        r   generate_asyncr$      s         D2001A1A$1G1GHH 	 	 	 	 	 	 	%KKKKK IHH 2 2 2//1111111112s   (A AA &A21A2c                 8     d  fd}t          |           S )Nc              3      K    | j         |i |}	 	 |                    |                                          V  *# t          $ r Y d S w xY wr   )r$   run_until_complete	__anext__StopAsyncIteration)r    loopr!   r"   r   s        r   _convert_generatorz.wrap_generate_func.<locals>._convert_generator'   sv      'D'888		E--i.A.A.C.CDDDDDE! 	 	 	DD	s   +< 
A
	A
c                 r    | j         j        s | g|R i |S  | t          j                    ||          S r   )r   is_asyncasyncioget_event_loop)r    r!   r"   r+   original_generates      r   generatez$wrap_generate_func.<locals>.generate/   sR    ( 	<$$T;D;;;F;;;!!$(>(@(@$OOOr   r   )r0   r1   r+   s   ` @r   wrap_generate_funcr2   &   sJ      P P P P P P
 ($5666r   c                 "  K   | j         j        st          d          t          |i |}|                     |          }	 t          |                     |                     d {V S # t          $ r | j                                         cY S w xY w)Nz8The environment was not created with async mode enabled.)	r   r-   RuntimeErrorr   r   r   r   r   r   )r    r!   r"   r#   ctxs        r   render_asyncr6   7   s      $ WUVVV   D


4
 
 C3!$"7"7"<"<========= 3 3 300222223s    'A( (#BBc                 .      fd}t          |           S )Nc                     | j         j        s | g|R i |S t          j                    }|                     | j        |i |          S r   )r   r-   r.   r/   r'   r6   )r    r!   r"   r*   original_renders       r   renderz wrap_render_func.<locals>.renderE   sf    ( 	:"?49$999&999%''&&'8t'8$'I&'I'IJJJr   r   )r9   r:   s   ` r   wrap_render_funcr;   D   s3    K K K K K &/222r   c                 l     t           d             t            fd            }t          |           S )Nc                    K   t           | j        | j                 | j                             d {V }| j        j        j        rt          |          }|S r   )r   _stack_depth_contexteval_ctx
autoescaper   r    r   s     r   
async_callz-wrap_block_reference_call.<locals>.async_callO   s[       8DK 8 G GHHHHHHHH=!, 	B	r   c                 R    | j         j        j        s |           S  |           S r   )r@   r   r-   )r    rD   original_calls    r   __call__z+wrap_block_reference_call.<locals>.__call__V   s3    }(1 	' =&&&z$r   r   r   )rF   rG   rD   s   ` @r   wrap_block_reference_callrI   N   sY      \           \ 
 (M222r   c                 l     t           d             t            fd            }t          |           S )Nc                 L   K    | j         |  d {V }|rt          |          }|S r   )_funcr   )r    	argumentsrB   r   s       r   async_invokez'wrap_macro_invoke.<locals>.async_invoke`   s>      4:y))))))) 	B	r   c                 P    | j         j        s | ||          S  | ||          S r   )_environmentr-   )r    rM   rB   rN   original_invokes      r   _invokez"wrap_macro_invoke.<locals>._invokeg   s:     ) 	@"?4J???|D)Z888r   rH   )rQ   rR   rN   s   ` @r   wrap_macro_invokerS   _   sY      \ 9 9 9 9 9 \9
 '?333r   c                 h   K   | j         | j         S |                                  d {V x| _         }|S r   )_modulemake_module_asyncrC   s     r   get_default_module_asyncrW   p   sE      ||"44666666666DL2Ir   c                 ,     t            fd            }|S )Nc                 P    | j         j        rt          d           |           S )Nz6Template module attribute is unavailable in async mode)r   r-   r4   )r    original_default_modules    r   _get_default_modulez0wrap_default_module.<locals>._get_default_moduley   s2    $ 	YWXXX&&t,,,r   r   )rZ   r[   s   ` r   wrap_default_moduler\   x   s.    - - - - \-
 r   Fc                    K   |                      |||          }g }|                     |          2 3 d {V }|                    |           6 t          | ||          S r   )r   r   r   r   )r    r#   sharedlocalscontextbody_streamitems          r   rV   rV      s      tVV44GK++G44 ! ! ! ! ! ! !d4     5$555s   Ac                  z   ddl m}  t          | j                  | _        t	          t
          | j                  | _        t	          t          | j                  | _        t          | j                  | _        t          | j
                  | _
        t          | _        t	          t          | j                  | _        d S )Nr   Template) re   r2   r1   r   r$   r6   r;   r:   r\   r[   rW   _get_default_module_asyncrV   rd   s    r   patch_templaterh      s    *8+<==H,^X=TUUH*<9NOOH&x77HO#6x7S#T#TH )AH&!/85" "Hr   c                  z    ddl m} m} t          | j                  | _        t          |j                  |_        d S )Nr   BlockReferenceMacro)runtimerk   rl   rI   rG   rS   rR   rj   s     r   patch_runtimern      sB    ........78OPPN%em44EMMMr   c                  H    ddl m}  ddlm} |                     |           d S )Nr   )FILTERS)ASYNC_FILTERS)filtersrp   asyncfiltersrq   update)rp   rq   s     r   patch_filtersru      s>          ++++++NN=!!!!!r   c                  Z    t                       t                       t                       d S r   )rh   rn   ru    r   r   	patch_allrx      s$    OOOOOOOOr   c                 B   K   t          j        |           r|  d {V S | S r   )inspectisawaitable)values    r   
auto_awaitr}      s0      5!! {{{{{{Lr   c                b   K   t          | d          r| 2 3 d {V }|W V  6 d S | D ]}|W V  d S )N	__aiter__)hasattr)iterablerb   s     r   
auto_aiterr      s}      x%% " 	 	 	 	 	 	 	$JJJJJ #  




 s   "c                       e Zd Z ee          Zed             Zed             Zed             Z	d Z
ed             Zed             Zd Zd Zd	S )
AsyncLoopContextc                 >  K   | j         | j         S 	 t          | j                  | _         nl# t          $ r_ d | j        2              d {V }|                     |          | _        t          |          | j        z   | j        t          uz   | _         Y nw xY w| j         S )Nc                 "   K   g | 3 d {V }|
6 S r   rw   ).0xs     r   
<listcomp>z+AsyncLoopContext.length.<locals>.<listcomp>   s.      88888888A8888s   )	_lengthlen	_iterable	TypeError	_iterator_to_iteratorindex_afterr   )r    r   s     r   lengthzAsyncLoopContext.length   s      <#<	Ut~..DLL 	U 	U 	U88888888888H!..x88DNx==4:5G9STDLLL	U
 |s   , A&BBc                 0   K   | j          d {V | j        z
  S r   )r   r   r    s    r   	revindex0zAsyncLoopContext.revindex0   s'      [      4:--r   c                 0   K   | j          d {V | j        z
  S r   )r   index0r   s    r   revindexzAsyncLoopContext.revindex   s'      [      4;..r   c                    K   | j         t          ur| j         S 	 | j                                         d {V | _         n# t          $ r t          | _         Y nw xY w| j         S r   )r   r   r   r(   r)   r   s    r   
_peek_nextzAsyncLoopContext._peek_next   sy      ;g%%;	" $ 8 8 : :::::::DKK! 	" 	" 	"!DKKK	" {s   $> AAc                 H   K   |                                   d {V t          u S r   )r   r   r   s    r   lastzAsyncLoopContext.last   s-      __&&&&&&&&'11r   c                 z   K   |                                   d {V }|t          u r|                     d          S |S )Nzthere is no next item)r   r   
_undefinedrC   s     r   nextitemzAsyncLoopContext.nextitem   sH      ??$$$$$$$$==??#:;;;	r   c                     | S r   rw   r   s    r   r   zAsyncLoopContext.__aiter__   s    r   c                    K   | j         t          ur| j         }t          | _         n| j                                         d {V }| xj        dz  c_        | j        | _        || _        || fS )Nr   )r   r   r   r(   r   _current_beforerC   s     r   r(   zAsyncLoopContext.__anext__   sq      ;g%%B!DKK~//11111111Bq}4xr   N)__name__
__module____qualname__staticmethodr   r   propertyr   r   r   r   r   r   r   r(   rw   r   r   r   r      s        <
++L  X . . X. / / X/	 	 	 2 2 X2   X  
 
 
 
 
r   r   c                 l   K   dd l }|                    dt          d           t          | |||          S )Nr   zRThis template must be recompiled with at least Jinja 2.11, or it will fail in 3.0.   )
stacklevel)warningswarnDeprecationWarningr   )r   	undefinedrecursedepth0r   s        r   make_async_loop_contextr      sK      OOOMM	 	     Hi&AAAr   )NFN)Nr   )!__doc__r.   rz   	functoolsr   
markupsafer   r   r   rm   r   utilsr
   r   r   r   r$   r2   r6   r;   rI   rS   rW   r\   rV   rh   rn   ru   rx   r}   r   r   r   rw   r   r   <module>r      s      $ $ $ $ $ $       ' ' ' ' ' '                                2 2 27 7 7"
3 
3 
33 3 33 3 3"4 4 4"     6 6 6 6  5 5 5" " "      > > > > >{ > > >B	B 	B 	B 	B 
	r   