Это не то, что ты думаешь

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 для:

  • непустая строка, словарь, список, набор.
  • Истинное значение