o
    àý°j&  ã                   @   s@  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r+ddlmZ d	ed
efdd„Zd	ed
efdd„Zd	eded
efdd„Zd	ejd
efdd„Zd	ejd
efdd„Zeddd	ed
efdd„ƒZeddd	ed
efdd„ƒZd	ejd
efdd„Zd	ejd
efdd„Zd	ejd
efd d!„Zd	ejd
efd"d#„Zd	ejd
efd$d%„Zd	ejd
efd&d'„Zd	ed
efd(d)„Z d	ed
efd*d+„Z!d	ejd
efd,d-„Z"d	ejd
efd.d/„Z#d	ejd
efd0d1„Z$d	ejd
efd2d3„Z%d	ejd4ejd
efd5d6„Z&d	ejd
efd7d8„Z'd	ejd
efd9d:„Z(d	ejd;ej)ej d
efd<d=„Z*i d>e“d?e“d@e“dAe“dBe“dCe“dDe“dEe“dFe“dGe“dHe“dIe“dJe“dKe “dLe!“dMe"“dNe#“i dOe$“dPe%“dQe'“dRe+“dSe&“dTe(“dUe*“dVej,“dWej,“dXej,“dYej-“dZej-“d[ej.“d\ej.“d]ej.“d^ej/“d_ej/“¥ej0ej0ej0ej1ej1d`œ¥Z2dS )az6Built-in template tests used with the ``is`` operator.é    N)Úabc)ÚNumberé   )Ú	Undefined)Úpass_environment)ÚEnvironmentÚvalueÚreturnc                 C   ó   | d dkS )z#Return true if the variable is odd.é   r   © ©r   r   r   ú/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/jinja2/tests.pyÚtest_odd   ó   r   c                 C   r
   )z$Return true if the variable is even.r   r   r   r   r   r   r   Ú	test_even   r   r   Únumc                 C   s   | | dkS )z-Check if a variable is divisible by a number.r   r   )r   r   r   r   r   Útest_divisibleby   r   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   ó
   t | tƒS )z-Like :func:`defined` but the other way round.r   r   r   r   r   Útest_undefined/   ó   
r   Úenvr   c                 C   ó
   || 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   r   )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   ó   | 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   r!   )zDReturn true if the object is False.

    .. versionadded:: 2.11
    Fr   r   r   r   r   Ú
test_falsei   ó   r$   c                 C   r!   )zCReturn true if the object is True.

    .. versionadded:: 2.11
    Tr   r   r   r   r   Ú	test_trueq   r%   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   r   )zFReturn true if the object is a float.

    .. versionadded:: 2.11
    )r   Úfloatr   r   r   r   Ú
test_floatƒ   s   
r*   c                 C   ó   t | ƒ ¡ S )z*Return true if the variable is lowercased.)ÚstrÚislowerr   r   r   r   Ú
test_lower‹   r   r.   c                 C   r+   )z*Return true if the variable is uppercased.)r,   Úisupperr   r   r   r   Ú
test_upper�   r   r0   c                 C   r   )z&Return true if the object is a string.)r   r,   r   r   r   r   Útest_string•   r   r1   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   r3   c                 C   r   )z(Return true if the variable is a number.)r   r   r   r   r   r   Útest_number¢   r   r4   c                 C   s*   z
t | ƒ | j W dS  ty   Y dS w )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   ýÿr8   Úotherc                 C   s   | |u S )zïCheck 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   r9   r   r   r   Útest_sameas´   s   
r:   c                 C   s$   zt | ƒ W dS  ty   Y dS w )z1Check if it's possible to iterate over an object.FT)ÚiterÚ	TypeErrorr   r   r   r   Útest_iterableÁ   s   
ýÿr=   c                 C   s
   t | dƒS )zCheck if the value is escaped.Ú__html__)Úhasattrr   r   r   r   Útest_escapedË   r   r@   Úseqc                 C   s   | |v S )z:Check if value is in seq.

    .. versionadded:: 2.10
    r   )r   rA   r   r   r   Útest_inÐ   r%   rB   ÚoddÚevenÚdivisiblebyÚdefinedÚ	undefinedÚfilterÚtestÚnoneÚbooleanÚfalseÚtrueÚintegerr)   ÚlowerÚupperÚstringÚmappingÚnumberÚsequenceÚiterableÚcallableÚsameasÚescapedÚinz==ÚeqÚequaltoz!=Úneú>ÚgtÚgreaterthanÚgez>=)ú<ÚltÚlessthanz<=Úle)3Ú__doc__ÚoperatorÚtypingÚtÚcollectionsr   Únumbersr   Úruntimer   Úutilsr   ÚTYPE_CHECKINGÚenvironmentr   r'   Úboolr   r   r   ÚAnyr   r   r,   r   r    r"   r#   r$   r&   r(   r*   r.   r0   r1   r3   r4   r8   r:   r=   r@   Ú	ContainerrB   rV   rZ   r\   r^   r`   rb   rd   ÚTESTSr   r   r   r   Ú<module>   sÚ    		
 ÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ù