如何从yamlconfiguration中删除inheritance属性?
我有这样一个yaml文件:
local: &local image: xxx # *tons of config* ci: <<: *local image: # delete build: .
我希望ci
inheritancelocal
所有值,除了image
。
有没有办法“删除”这个值?
不,没有办法在YAML文件中标记要删除的key
。 您只能覆盖现有的值 。
而后者就是你所做的,你把空标量作为关键image
价值,就像你会写:
image: null # delete
有两件事你可以做:后处理或在你的YAML文件中做一个基础映射。
如果要后处理,则将特殊的唯一值与image
或特定标记的对象相关联,并在recursion加载后遍历树,以删除具有此特殊值的键值对。 无论你在parsing过程中是否已经可以做到这一点,使用钩子或覆盖它的一些方法,取决于parsing器。
使用基本映射需要较less的工作,但是对YAML文件更具侵入性:
localbase: &lb # *tons of config* local: &local image: xxx ci: <<: *lb build: .
如果你这样做,你应该注意到,如果你使用一个parsing器来保存“合并层次结构”(就像我的ruamel.yaml
parsing器可以做的那样),删除键值对是不够的,来自local
的原件会回来。 其他parsing器,只是在加载时解决这个问题没有这个问题。