U a(@srdZddlZddlZddlmZddlmZddlm Z ddl m Z ej rVddl mZeed d d Zeed d d ZeeedddZejed ddZejed ddZe deedddZe deedddZejed ddZejed ddZejed dd Zejed d!d"Zejed d#d$Zejed d%d&Zeed d'd(Z eed d)d*Z!ejed d+d,Z"ejed d-d.Z#ejed d/d0Z$ejed d1d2Z%ejejed3d4d5Z&ejed d6d7Z'ejed d8d9Z(ejej)ed:d;d<Z*eeeeeeeeeeeeee e!e"e#e$e%e'e+e&e(e*ej,ej,ej,ej-ej-ej.ej.ej.ej/ej/ej0ej0ej0ej1ej1d='Z2dS)>z6Built-in template tests used with the ``is`` operator.N)abc)Number) Undefined)pass_environment) Environment)valuereturncCs |ddkS)z#Return true if the variable is odd.rrr r MC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-8gbwd15f\jinja2\tests.pytest_oddsrcCs |ddkS)z$Return true if the variable is even.r rr r r r r test_evensr)rnumr cCs ||dkS)z-Check if a variable is divisible by a number.rr )rrr r r test_divisiblebysrcCs 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_definedsrcCs t|tS)z-Like :func:`defined` but the other way round.rr r r r test_undefined.srr)envrr cCs ||jkS)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_filter3srcCs ||jkS)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_testEsrcCs|dkS)z$Return true if the variable is none.Nr r r r r test_none[srcCs|dkp|dkS)zNReturn true if the object is a boolean value. .. versionadded:: 2.11 TFr r r r r test_boolean`srcCs|dkS)zDReturn true if the object is False. .. versionadded:: 2.11 Fr r r r r test_falsehsrcCs|dkS)zCReturn true if the object is True. .. versionadded:: 2.11 Tr r r r r test_truepsrcCst|to|dk o|dk S)zIReturn true if the object is an integer. .. versionadded:: 2.11 TF)rintr r r r test_integerysr!cCs t|tS)zFReturn true if the object is a float. .. versionadded:: 2.11 )rfloatr r r r test_floatsr#cCs t|S)z*Return true if the variable is lowercased.)strislowerr r r r test_lowersr&cCs t|S)z*Return true if the variable is uppercased.)r$isupperr r r r test_uppersr(cCs t|tS)z&Return true if the object is a string.)rr$r r r r test_stringsr)cCs t|tjS)zSReturn true if the object is a mapping (dict etc.). .. versionadded:: 2.6 )rrMappingr r r r test_mappingsr+cCs t|tS)z(Return true if the variable is a number.)rrr r r r test_numbersr,cCs.zt||jWntk r(YdSXdS)z^Return true if the variable is a sequence. Sequences are variables that are iterable. FT)len __getitem__ Exceptionr r r r test_sequences  r0)rotherr cCs||kS)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 )rr1r r r test_sameass r2cCs(z t|Wntk r"YdSXdS)z1Check if it's possible to iterate over an object.FT)iter TypeErrorr r r r test_iterables  r5cCs t|dS)zCheck if the value is escaped.Z__html__)hasattrr r r r test_escapedsr7)rseqr cCs||kS)z:Check if value is in seq. .. versionadded:: 2.10 r )rr8r r r test_insr9)'ZoddZevenZ divisiblebyZdefinedZ undefinedfiltertestnonebooleanfalsetrueintegerr"lowerupperstringmappingnumbersequenceiterablecallableZsameasescapedinz==eqZequaltoz!=ne>gtZ greaterthangez>=<ltZlessthanz<=le)3__doc__operatortypingt collectionsrZnumbersrZruntimerutilsr TYPE_CHECKING environmentrr boolrrrAnyrrr$rrrrrrr!r#r&r(r)r+r,r0r2r5r7 Containerr9rHrKrLrNrOrQrRZTESTSr r r r s