B fq`(@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.r)rr r =/opt/alt/python37/lib/python3.7/site-packages/jinja2/tests.pytest_oddsr cCs |ddkS)z$Return true if the variable is even.r rr )rr 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. ) isinstancer)rr r r test_definedsrcCs t|tS)z-Like :func:`defined` but the other way round.)rr)rr 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 )filters)rrr 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 )tests)rrr r r test_testEsrcCs|dkS)z$Return true if the variable is none.Nr )rr r r test_none[srcCs|dkp|dkS)zNReturn true if the object is a boolean value. .. versionadded:: 2.11 TFr )rr r r test_boolean`srcCs|dkS)zDReturn true if the object is False. .. versionadded:: 2.11 Fr )rr r r test_falsehsrcCs|dkS)zCReturn true if the object is True. .. versionadded:: 2.11 Tr )rr r r test_truepsrcCst|to|dk o|dk S)zIReturn true if the object is an integer. .. versionadded:: 2.11 TF)rint)rr r r test_integerysrcCs t|tS)zFReturn true if the object is a float. .. versionadded:: 2.11 )rfloat)rr r r test_floatsr cCs t|S)z*Return true if the variable is lowercased.)strislower)rr r r test_lowersr#cCs t|S)z*Return true if the variable is uppercased.)r!isupper)rr r r test_uppersr%cCs t|tS)z&Return true if the object is a string.)rr!)rr r r test_stringsr&cCs t|tjS)zSReturn true if the object is a mapping (dict etc.). .. versionadded:: 2.6 )rrMapping)rr r r test_mappingsr(cCs t|tS)z(Return true if the variable is a number.)rr)rr r r test_numbersr)cCs,yt||jWntk r&dSXdS)z^Return true if the variable is a sequence. Sequences are variables that are iterable. FT)len __getitem__ Exception)rr r r test_sequences  r-)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 )rr.r r r test_sameass r/cCs&y t|Wntk r dSXdS)z1Check if it's possible to iterate over an object.FT)iter TypeError)rr r r test_iterables  r2cCs t|dS)zCheck if the value is escaped.Z__html__)hasattr)rr r r test_escapedsr4)rseqr cCs||kS)z:Check if value is in seq. .. versionadded:: 2.10 r )rr5r r r test_insr6)'ZoddZevenZ divisiblebydefinedZ undefinedfiltertestZnoneZbooleanfalsetrueintegerrlowerupperstringmappingnumbersequenceiterablecallableZsameasescapedinz==eqZequaltoz!=ne>gtZ greaterthangez>=<ltZlessthanz<=le)3__doc__operatortypingt collectionsrnumbersrZruntimerutilsr TYPE_CHECKING environmentrrboolr rrAnyrrr!rrrrrrrr r#r%r&r(r)r-r/r2r4 Containerr6rDrGrHrJrKrMrNZTESTSr r r r s