a
    0h&                  (   @   sx  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 ejrVddlmZ eed	d
dZeed	ddZeeedddZejed	ddZejed	ddZedeedddZedeedddZejed	ddZejed	ddZejed	dd Zejed	d!d"Zejed	d#d$Zejed	d%d&Zeed	d'd(Z eed	d)d*Z!ejed	d+d,Z"ejed	d-d.Z#ejed	d/d0Z$ejed	d1d2Z%ejejed3d4d5Z&ejed	d6d7Z'ejed	d8d9Z(ejej)ej ed:d;d<Z*eeeeeeeeeeeeee e!e"e#e$e%e'e+e&e(e*ej,ej,ej,ej-ej-ej.ej.ej.ej/ej/ej0ej0ej0ej1ej1d='Z2dS )>z6Built-in template tests used with the ``is`` operator.    N)abc)Number   )	Undefined)pass_environment)Environment)valuereturnc                 C   s   | d dkS )z#Return true if the variable is odd.   r    r   r   r   :/var/www/auris/lib/python3.9/site-packages/jinja2/tests.pytest_odd   s    r   c                 C   s   | d dkS )z$Return true if the variable is even.r
   r   r   r   r   r   r   	test_even   s    r   )r   numr	   c                 C   s   | | dkS )z-Check if a variable is divisible by a number.r   r   )r   r   r   r   r   test_divisibleby   s    r   c                 C   s   t | t S )a;  Return true if the variable is defined:

    .. sourcecode:: jinja

        {% if variable is defined %}
            value of variable: {{ variable }}
        {% else %}
            variable is not defined
        {% endif %}

    See the :func:`default` filter for a simple way to set undefined
    variables.
    
isinstancer   r   r   r   r   test_defined   s    r   c                 C   s
   t | tS )z-Like :func:`defined` but the other way round.r   r   r   r   r   test_undefined/   s    r   r   )envr   r	   c                 C   s
   || j v S )a  Check if a filter exists by name. Useful if a filter may be
    optionally available.

    .. code-block:: jinja

        {% if 'markdown' is filter %}
            {{ value | markdown }}
        {% else %}
            {{ value }}
        {% endif %}

    .. versionadded:: 3.0
    )filtersr   r   r   r   r   test_filter4   s    r   c                 C   s
   || j v S )a  Check if a test exists by name. Useful if a test may be
    optionally available.

    .. code-block:: jinja

        {% if 'loud' is test %}
            {% if value is loud %}
                {{ value|upper }}
            {% else %}
                {{ value|lower }}
            {% endif %}
        {% else %}
            {{ value }}
        {% endif %}

    .. versionadded:: 3.0
    )testsr   r   r   r   	test_testF   s    r   c                 C   s   | du S )z$Return true if the variable is none.Nr   r   r   r   r   	test_none\   s    r   c                 C   s   | du p| du S )zNReturn true if the object is a boolean value.

    .. versionadded:: 2.11
    TFr   r   r   r   r   test_booleana   s    r   c                 C   s   | du S )zDReturn true if the object is False.

    .. versionadded:: 2.11
    Fr   r   r   r   r   
test_falsei   s    r   c                 C   s   | du S )zCReturn true if the object is True.

    .. versionadded:: 2.11
    Tr   r   r   r   r   	test_trueq   s    r   c                 C   s   t | to| duo| duS )zIReturn true if the object is an integer.

    .. versionadded:: 2.11
    TF)r   intr   r   r   r   test_integerz   s    r!   c                 C   s
   t | tS )zFReturn true if the object is a float.

    .. versionadded:: 2.11
    )r   floatr   r   r   r   
test_float   s    r#   c                 C   s   t |  S )z*Return true if the variable is lowercased.)strislowerr   r   r   r   
test_lower   s    r&   c                 C   s   t |  S )z*Return true if the variable is uppercased.)r$   isupperr   r   r   r   
test_upper   s    r(   c                 C   s
   t | tS )z&Return true if the object is a string.)r   r$   r   r   r   r   test_string   s    r)   c                 C   s   t | tjS )zSReturn true if the object is a mapping (dict etc.).

    .. versionadded:: 2.6
    )r   r   Mappingr   r   r   r   test_mapping   s    r+   c                 C   s
   t | tS )z(Return true if the variable is a number.)r   r   r   r   r   r   test_number   s    r,   c                 C   s,   zt |  | j W n ty&   Y dS 0 dS )z^Return true if the variable is a sequence. Sequences are variables
    that are iterable.
    FT)len__getitem__	Exceptionr   r   r   r   test_sequence   s    
r0   )r   otherr	   c                 C   s   | |u S )zCheck if an object points to the same memory address than another
    object:

    .. sourcecode:: jinja

        {% if foo.attribute is sameas false %}
            the foo attribute really is the `False` singleton
        {% endif %}
    r   )r   r1   r   r   r   test_sameas   s    
r2   c                 C   s&   zt |  W n ty    Y dS 0 dS )z1Check if it's possible to iterate over an object.FT)iter	TypeErrorr   r   r   r   test_iterable   s
    r5   c                 C   s
   t | dS )zCheck if the value is escaped.Z__html__)hasattrr   r   r   r   test_escaped   s    r7   )r   seqr	   c                 C   s   | |v S )z:Check if value is in seq.

    .. versionadded:: 2.10
    r   )r   r8   r   r   r   test_in   s    r9   )'ZoddZevenZdivisiblebyZdefinedZ	undefinedfiltertestnonebooleanfalsetrueintegerr"   lowerupperstringmappingnumbersequenceiterablecallableZsameasescapedinz==eqZequaltoz!=ne>gtZgreaterthangez>=<ltZlessthanz<=le)3__doc__operatortypingtcollectionsr   Znumbersr   Zruntimer   utilsr   TYPE_CHECKINGenvironmentr   r    boolr   r   r   Anyr   r   r$   r   r   r   r   r   r   r!   r#   r&   r(   r)   r+   r,   r0   r2   r5   r7   	Containerr9   rH   rK   rL   rN   rO   rQ   rR   ZTESTSr   r   r   r   <module>   s   		
	