Причина, по которой это не работает, заключается в том, что вы !include
создаете один узел, потому что тег YAML применяется к одному узлу.Это будет то же самое, что ваш overridden.yaml
выглядеть так:
"some string"
value: overridden
, что также не является допустимым YAML.
Так что !include
не вставляет текстовую версию, а затем обрабатывает целое.Вы можете сделать это с помощью препроцессора и / или языка шаблонов, но затем вы получите недопустимый файл YAML, потому что ключи в отображениях должны быть уникальными в соответствии со стандартом YAML 1.2 и даже устаревшими, которые поддерживает PyYAML.(Это, однако, не останавливает PyYAML от загрузки, даже без предупреждения)
То, на что вы должны обратить внимание, - это использование независимой от языка функции в сочетании с включением.Ваш base.yaml
может выглядеть так же, а ваш overridden.yaml
может выглядеть так:
- &base !include base.yaml
- <<: *base
value: overridden