Это не то, что ты думаешь
Jinja2 фильтры:
foo|list
преобразуетfoo
вlist
foo|string
преобразуетfoo
вstring
foo|int
преобразуетfoo
вint
foo|float
преобразуетfoo
вfloat
foo|bool
НЕТ !!!!!!!!! 11 111one
Вместо этого он анализирует foo
как строку для поиска «да, вкл, истина, ложь, ложь, выкл, НЕТ» и других слов в стиле yaml и возвращает истину, если найдено какое-либо слово «да».
"yes"|bool -> true "no"|bool -> false "funking yes"|bool -> false "http://url"|bool -> false [1,2,3]|bool -> false
Другими словами, это не обычное сопоставление с конструктором типа python, а отдельный ‘|guess_yes’
фильтр с именем bool
для наведения путаницы и ошибок.
Решение
Используйте круглые скобки, чтобы вызвать обычное питоническое «ложное» поведение:
when: (foo)
Он переведет foo в значение False для:
- нулевой
- Никто
- Ложь
- Пустой строки
- пустой список, dict, установить
Он будет переведен в True для:
- непустая строка, словарь, список, набор.
- Истинное значение