
Á«‘_¿  ã            J   @   s¬  d  Z  d d l 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
 e j d	 ƒ Z e e ƒ Z e Z d
 d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d  d! „  Z d" d# „  Z d$ d% „  Z d& d' „  Z d( d) „  Z  d* d+ „  Z! d, d- „  Z" d. d/ „  Z# d0 d1 „  Z$ d2 d3 „  Z% d4 e d5 e d6 e d7 e d8 e d9 e d: e d; e d< e d= e d> e d? e d@ e dA e dB e dC e  dD e! dE e# dF e dG e" dH e$ dI e% dJ e j& dK e j& dL e j& dM e j' dN e j' dO e j( dP e j( dQ e j( dR e j) dS e j) dT e j* dU e j* dV e j* dW e j+ dX e j+ i% Z, d S)Yz6Built-in template tests used with the ``is`` operator.é    Né   )Úabc)Úinteger_types)Ústring_types)Ú	text_type)Ú	Undefinedz^-?\d+(\.\d+)?$c             C   s   |  d d k S)z#Return true if the variable is odd.é   r   © )Úvaluer	   r	   ú./tmp/pip-build-5gj8f0j9/Jinja2/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   c             C   s   |  | d k S)z-Check if a variable is divisible by a number.r   r	   )r
   Únumr	   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	   r   Útest_undefined2   s    r   c             C   s
   |  d k S)z$Return true if the variable is none.Nr	   )r
   r	   r	   r   Ú	test_none7   s    r   c             C   s   |  d k p |  d k S)zNReturn true if the object is a boolean value.

    .. versionadded:: 2.11
    TFr	   )r
   r	   r	   r   Útest_boolean<   s    r   c             C   s
   |  d k S)zDReturn true if the object is False.

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

    .. versionadded:: 2.11
    Tr	   )r
   r	   r	   r   Ú	test_trueL   s    r   c             C   s%   t  |  t ƒ o$ |  d k	 o$ |  d k	 S)zIReturn true if the object is an integer.

    .. versionadded:: 2.11
    TF)r   r   )r
   r	   r	   r   Útest_integerU   s    r   c             C   s   t  |  t ƒ S)zFReturn true if the object is a float.

    .. versionadded:: 2.11
    )r   Úfloat)r
   r	   r	   r   Ú
test_float^   s    r   c             C   s   t  |  ƒ j ƒ  S)z*Return true if the variable is lowercased.)r   Úislower)r
   r	   r	   r   Ú
test_lowerf   s    r   c             C   s   t  |  ƒ j ƒ  S)z*Return true if the variable is uppercased.)r   Úisupper)r
   r	   r	   r   Ú
test_upperk   s    r   c             C   s   t  |  t ƒ S)z&Return true if the object is a string.)r   r   )r
   r	   r	   r   Útest_stringp   s    r   c             C   s   t  |  t j ƒ S)zSReturn true if the object is a mapping (dict etc.).

    .. versionadded:: 2.6
    )r   r   ÚMapping)r
   r	   r	   r   Útest_mappingu   s    r    c             C   s   t  |  t t t t j f ƒ S)z(Return true if the variable is a number.)r   r   r   ÚcomplexÚdecimalZDecimal)r
   r	   r	   r   Útest_number}   s    r#   c             C   s2   y t  |  ƒ |  j Wn t k
 r- d SYn Xd S)z^Return true if the variable is a sequence. Sequences are variables
    that are iterable.
    FT)ÚlenÚ__getitem__Ú	Exception)r
   r	   r	   r   Útest_sequence‚   s    
	r'   c             C   s
   |  | k 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
   Úotherr	   r	   r   Útest_sameasŽ   s    
r)   c             C   s+   y t  |  ƒ Wn t k
 r& d SYn Xd S)z1Check if it's possible to iterate over an object.FT)ÚiterÚ	TypeError)r
   r	   r	   r   Útest_iterable›   s
    	r,   c             C   s   t  |  d ƒ S)zCheck if the value is escaped.Z__html__)Úhasattr)r
   r	   r	   r   Útest_escaped¤   s    r.   c             C   s
   |  | k S)z:Check if value is in seq.

    .. versionadded:: 2.10
    r	   )r
   Úseqr	   r	   r   Útest_in©   s    r0   ZoddZevenZdivisiblebyZdefinedZ	undefinedÚ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)-Ú__doc__r"   ÚoperatorÚreÚ_compatr   r   r   r   Zruntimer   ÚcompileZ	number_reÚtypeZ
regex_typer=   Ztest_callabler   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r#   r'   r)   r,   r.   r0   r@   rA   rC   rD   rF   rG   ZTESTSr	   r	   r	   r   Ú<module>   sŠ   																		