File: //usr/lib/python3.9/site-packages/jinja2/__pycache__/compiler.cpython-39.pyc
a
�`� � @ sB d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl
mZ ddl
mZ dd l
mZ dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% dddddd d!d"d#�Z&e'e(d$��rLd$Z)nd%Z)d&gZ*ze+d'� e*�,d(� W n e-�y� Y n0 ze+d)� W n e-�y� d*Z.Y n0 d+Z.d,d-� Z/dCd/d0�Z0d1d2� Z1d3d4� Z2G d5d6� d6e3�Z4G d7d8� d8e3�Z5G d9d:� d:e6�Z7G d;d<� d<e%�Z8G d=d>� d>e%�Z9G d?d@� d@e:�Z;G dAdB� dBe%�Z<d.S )Dz0Compiles nodes from the parser into Python code.� )�
namedtuple��update_wrapper)�chain)� iskeyword)�escape)�Markup� )�nodes)�imap)� iteritems)�izip)�NativeStringIO)�
range_type)�string_types)� text_type)�TemplateAssertionError)�Symbols)�VAR_LOAD_ALIAS)�VAR_LOAD_PARAMETER)�VAR_LOAD_RESOLVE)�VAR_LOAD_UNDEFINED)�EvalContext)� Optimizer)�concat)�NodeVisitorz==z!=�>z>=�<z<=�inznot in)�eq�ne�gtZgteq�ltZlteqr Znotinr �itemsZdivisionz%from __future__ import generator_stopZgenerator_stopzdef f(): yield from x()FTc s � fdd�}t |� �S )Nc sF | j r2|jjs2| j�||j�}||kr2| �||�S � | ||fi |��S �N)� optimized�eval_ctx�volatile� optimizer�visit)�self�node�frame�kwargsZnew_node��f� �3/usr/lib/python3.9/site-packages/jinja2/compiler.py�new_funcC s
zoptimizeconst.<locals>.new_funcr )r/ r2 r0 r. r1 �
optimizeconstB s r3 Nc C sH t | tj�std��|�||||||�}|�| � |du rD|j�� S dS )z+Generate the python source for a node tree.z Can't compile non template nodesN)�
isinstancer
ZTemplate� TypeErrorZcode_generator_classr) �stream�getvalue)r+ �environment�name�filenamer6 �
defer_initr% � generatorr0 r0 r1 �generateN s �
r= c C s� | du s| t u s| tu rdS t| �ttttttft v r<dS t| �t
ttt
fv rl| D ]}t|�sT dS qTdS t| �tu r�t| �D ]$\}} t|�s� dS t| �s� dS q�dS dS )z)Does the node have a safe representation?NTF)�NotImplemented�Ellipsis�type�bool�int�float�complexr r r �tuple�list�set� frozenset�
has_safe_repr�dictr )�value�item�keyr0 r0 r1 rI \ s"