+
    ir                         ^ RI t^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^RI
Ht ^RIHt ^R	IHt ^R
IHt ^RIHt ^RIHt R R lt ! R R]4      t ! R R]4      t ! R R]4      t]]n        R# )    N)literal_eval)parse)chain)islice)GeneratorType)nodes)CodeGenerator)Frame)has_safe_repr)Environment)Templatec                    V ^8  d   QhR\         P                  \         P                  ,          R\         P                  \         P                  ,          /# )   valuesreturn)tIterableAnyOptional)formats   "4/usr/lib/python3/dist-packages/jinja2/nativetypes.py__annotate__r      s4      !**QUU+ 

1550A     c                   \        \        V ^4      4      pV'       g   R# \        V4      ^8X  d#   V^ ,          p\        V\        4      '       g   V# MK\        V \
        4      '       d   \        W4      p RP                  V  Uu. uF  p\	        V4      NK  	  up4      p \        \        VRR7      4      # u upi   \        \        \        3 d    Tu # i ; i)aV  Return a native Python type from the list of compiled nodes. If
the result is a single node, its value is returned. Otherwise, the
nodes are concatenated as strings. If the result can be parsed with
:func:`ast.literal_eval`, the parsed value is returned. Otherwise,
the string is returned.

:param values: Iterable of outputs to concatenate.
N eval)mode)listr   len
isinstancestrr   r   joinr   r   
ValueErrorSyntaxErrorMemoryError)r   headrawvs   &   r   native_concatr)      s     vq!"D
4yA~1g#s##J $ fm,,4(Fggv.v!s1vv./ #F#	
 	
 / [1 
s   B4B9 9CCc                      a  ] tR t^2t o Rt]V 3R lR l4       tV 3R lR ltV 3R lR ltV 3R lR	 lt	V 3R
 lR lt
RtV tR# )NativeCodeGeneratorzYA code generator which renders Python types by not adding
``str()`` around output nodes.
c                N   < V ^8  d   QhRS[ P                  RS[ P                  /# )r   valuer   r   r   )r   __classdict__s   "r   r    NativeCodeGenerator.__annotate__8   s#       155 r   c                    V # N )r-   s   &r   _default_finalize%NativeCodeGenerator._default_finalize7   s    r   c                ^   < V ^8  d   QhRS[ P                  S[ P                  ,          RS[/# )r   groupr   )r   r   r   r!   )r   r/   s   "r   r   r0   ;   s(     6 6

155(9 6c 6r   c           
     r    \        R P                  V Uu. uF  p\        V4      NK  	  up4      4      # u upi )r   )reprr"   r!   )selfr7   r(   s   && r   _output_const_repr&NativeCodeGenerator._output_const_repr;   s,    BGGU3USVU34553s   4c                n   < V ^8  d   QhRS[ P                  RS[RS[P                  RS[P                  /# )r   nodeframefinalizer   )r   Exprr
   r	   _FinalizeInfor   r   )r   r/   s   "r   r   r0   >   s;     % %JJ%',%8E8S8S%	
%r   c                    VP                  VP                  4      p\        V4      '       g   \        P                  ! 4       h\        V\        P                  4      '       d   V# VP                  V4      # r2   )as_consteval_ctxr   r   
Impossibler    TemplateDataconst)r:   r>   r?   r@   rH   s   &&&& r   _output_child_to_const*NativeCodeGenerator._output_child_to_const>   sW     enn-U##""$$dE..//L~~e$$r   c                X   < V ^8  d   QhRS[ P                  RS[RS[P                  RR/# r   r>   r?   r@   r   Nr   rA   r
   r	   rB   )r   r/   s   "r   r   r0   K   s7     % %JJ%',%8E8S8S%	%r   c                \    VP                   e   V P                  VP                   4       R # R # r2   srcwriter:   r>   r?   r@   s   &&&&r   _output_child_pre%NativeCodeGenerator._output_child_preK   s#     <<#JJx||$ $r   c                X   < V ^8  d   QhRS[ P                  RS[RS[P                  RR/# rL   rM   )r   r/   s   "r   r   r0   Q   s7      JJ',8E8S8S	r   c                H    VP                   e   V P                  R4       R # R # )N)rO   rR   s   &&&&r   _output_child_post&NativeCodeGenerator._output_child_postQ   s     <<#JJsO $r   r3   N)__name__
__module____qualname____firstlineno____doc__staticmethodr4   r;   rI   rS   rX   __static_attributes____classdictcell__r/   s   @r   r+   r+   2   sF       6 6% %% % r   r+   c                   .    ] tR t^XtRt]t]! ]4      t	Rt
R# )NativeEnvironmentz=An environment that renders templates to native Python types.r3   N)rZ   r[   r\   r]   r^   r+   code_generator_classr_   r)   concatr`   r3   r   r   rd   rd   X   s    G.-(Fr   rd   c                   H   a  ] tR t^_t o ]tV 3R lR ltV 3R lR ltRtV t	R# )NativeTemplatec                h   < V ^8  d   QhRS[ P                  RS[ P                  RS[ P                  /# r   argskwargsr   r.   )r   r/   s   "r   r   NativeTemplate.__annotate__b   s.     7 7AEE 7QUU 7quu 7r   c                    V P                  \        V/ VB 4      p V P                  P                  V P	                  V4      4      #   \
         d    T P                  P                  4       u # i ; i)a  Render the template to produce a native Python type. If the
result is a single node, its value is returned. Otherwise, the
nodes are concatenated as strings. If the result can be parsed
with :func:`ast.literal_eval`, the parsed value is returned.
Otherwise, the string is returned.
)new_contextdictenvironment_classrf   root_render_func	Exceptionenvironmenthandle_exception)r:   rk   rl   ctxs   &*, r   renderNativeTemplate.renderb   sp     tT4V45	7))00%%c*   	7##4466	7s   )A %A.-A.c                h   < V ^8  d   QhRS[ P                  RS[ P                  RS[ P                  /# rj   r.   )r   r/   s   "r   r   rm   r   s.     7 7 7 7155 7r   c                p  "   V P                   P                  '       g   \        R 4      hV P                  \	        V/ VB 4      p V P
                  P                  V P                  V4       Uu. u Rj  xL
 qDNK   LDMu upi up4      #   \         d    T P                   P                  4       u # i ; i5i)z8The environment was not created with async mode enabled.N)
rt   is_asyncRuntimeErrorro   rp   rq   rf   rr   rs   ru   )r:   rk   rl   rv   ns   &*,  r   render_asyncNativeTemplate.render_asyncr   s     (((J  tT4V45	7))00"&"7"7"<==Q==   	7##4466	7sZ   AB6(B -A?/A=
3A;4A=
7A?;A=
=A?>B 
B6%B30B62B33B6r3   N)
rZ   r[   r\   r]   rd   rq   rw   r~   r`   ra   rb   s   @r   rh   rh   _   s     )7 7 7 7r   rh   )typingr   astr   r   	itertoolsr   r   typesr   r   r   compilerr	   r
   r   rt   r   r   r)   r+   rd   rh   template_classr3   r   r   <module>r      s`           #  # $ !D#- #L) ) 7X  7F $2   r   