Consider this code:
{% set result = none %}
{{result}}
{{result is not none}}
{{result is none}}
{{result == 'None'}}
{{result == 'none'}}
which gives
None
False
True
False
False
Works as expected.
Now consider this macro:
{% macro test_none(input_value) -%}
{%- if not is_number(input_value) -%}
{%- set RESULT = none -%}
{%- else -%}
{%- set RESULT = input_value|int * 2 -%}
{%- endif -%}
{{ RESULT }}
{%- endmacro %}
and using it as
{% set result = test_none('xyz') %}
{{result}}
{{result is not none}}
{{result is none}}
{{result == 'None'}}
{{result == 'none'}}
which gives
None
True
False
True
False
Now consider this macro:
{% macro test_none_2(input_value) -%}
{%- if not is_number(input_value) -%}
none
{%- else -%}
{{ input_value|int * 2 }}
{%- endif -%}
{%- endmacro %}
and using it as
{% set result = test_none_2('xyz') %}
{{result}}
{{result is not none}}
{{result is none}}
{{result == 'None'}}
{{result == 'none'}}
which gives
none
True
False
False
True
So, when a macro returns a “none” value - it is a STRING which may be “None” or “none” dependently on how this value is returned.
Is it by a design?