o fq`@s:dZddlZddlZddlmZddlmZddlm Z ddl m Z ej r+ddl mZd ed efd d Zd ed efd dZd eded efddZd ejd efddZd ejd efddZe ddd ed efddZe ddd ed efddZd ejd efddZd ejd efddZd ejd efd d!Zd ejd efd"d#Zd ejd efd$d%Zd ejd efd&d'Zd ed efd(d)Z d ed efd*d+Z!d ejd efd,d-Z"d ejd efd.d/Z#d ejd efd0d1Z$d ejd efd2d3Z%d ejd4ejd efd5d6Z&d ejd efd7d8Z'd ejd efd9d:Z(d ejd;ej)d efded?ed@edAedBedCedDedEedFedGedHedIedJedKe dLe!dMe"dNe#idOe$dPe%dQe'dRe+dSe&dTe(dUe*dVej,dWej,dXej,dYej-dZej-d[ej.d\ej.d]ej.d^ej/d_ej/ej0ej0ej0ej1ej1d`Z2dS)az6Built-in template tests used with the ``is`` operator.N)abc)Number) Undefined)pass_environment) EnvironmentvaluereturncC |ddkS)z#Return true if the variable is odd.rrr r ./usr/lib/python3/dist-packages/jinja2/tests.pytest_odd rcCr )z$Return true if the variable is even.r rr r r r r test_evenrrnumcCs ||dkS)z-Check if a variable is divisible by a number.rr )rrr r rtest_divisiblebyrrcCs 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.  isinstancerr r r r test_defineds rcC t|tS)z-Like :func:`defined` but the other way round.rr r r rtest_undefined. renvrcC ||jvS)aCheck 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 )filtersrrr r r test_filter3s rcCr)aCheck 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 )testsrr r r test_testEs r cC|duS)z$Return true if the variable is none.Nr r r r r test_none[sr"cCs|dup|duS)zNReturn true if the object is a boolean value. .. versionadded:: 2.11 TFr r r r r test_boolean`sr#cCr!)zDReturn true if the object is False. .. versionadded:: 2.11 Fr r r r r test_falsehr$cCr!)zCReturn true if the object is True. .. versionadded:: 2.11 Tr r r r r test_truepr%r&cCst|to |duo |duS)zIReturn true if the object is an integer. .. versionadded:: 2.11 TF)rintr r r r test_integerysr(cCr)zFReturn true if the object is a float. .. versionadded:: 2.11 )rfloatr r r r test_floats r*cC t|S)z*Return true if the variable is lowercased.)strislowerr r r r test_lowerrr.cCr+)z*Return true if the variable is uppercased.)r,isupperr r r r test_upperrr0cCr)z&Return true if the object is a string.)rr,r r r r test_stringrr1cCs t|tjS)zSReturn true if the object is a mapping (dict etc.). .. versionadded:: 2.6 )rrMappingr r r r test_mappings r3cCr)z(Return true if the variable is a number.)rrr r r r test_numberrr4cCs*z t||jWdStyYdSw)z^Return true if the variable is a sequence. Sequences are variables that are iterable. FT)len __getitem__ Exceptionr r r r test_sequences r8othercCs||uS)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 )rr9r r r test_sameass r:cCs$zt|WdStyYdSw)z1Check if it's possible to iterate over an object.FT)iter TypeErrorr r r r test_iterables   r=cCs t|dS)zCheck if the value is escaped.__html__)hasattrr r r r test_escapedrr@seqcCs||vS)z:Check if value is in seq. .. versionadded:: 2.10 r )rrAr r rtest_inr%rBoddeven divisiblebydefined undefinedfiltertestnonebooleanfalsetrueintegerr)lowerupperstringmappingnumbersequenceiterablecallablesameasescapedinz==eqequaltoz!=ne>gt greaterthangez>=)<ltlessthanz<=le)3__doc__operatortypingt collectionsrnumbersrruntimerutilsr TYPE_CHECKING environmentrr'boolrrrAnyrrr,rr r"r#r$r&r(r*r.r0r1r3r4r8r:r=r@ ContainerrBrVrZr\r^r`rbrdTESTSr r r rs                !"#