当前位置 : 主页 > 手机开发 > 其它 >

dictionary – 如何从yaml config中删除继承属性?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我有一个像这样的yaml文件: local: local image: xxx # *tons of config*ci: : *local image: # delete build: . 我希望ci继承本地的所有值,除了图像. 有没有办法“删除”这个值? 没有办法在YAML文件中标记
我有一个像这样的yaml文件:

local: &local
  image: xxx
  # *tons of config*

ci:
  <<: *local
  image: # delete
  build: .

我希望ci继承本地的所有值,除了图像.

有没有办法“删除”这个值?

没有办法在YAML文件中标记要删除的密钥.你只能 overwrite existing values.

后者就是你所做的,你将空标量作为值与关键图像相关联,就像你写的一样:

image: null   # delete

您可以执行以下两项操作:在YAML文件中进行后处理或制作基本映射.

如果要进行后处理,则将特殊唯一值与图像或特殊标记对象相关联,并在加载后递归遍历树以删除具有此特殊值的键值对.您是否可以在解析期间使用挂钩或覆盖其某些方法来执行此操作,这取决于解析器.

使用基本映射需要较少的工作,但对YAML文件更具侵入性:

localbase: &lb
  # *tons of config*

local: &local
  image: xxx

ci:
  <<: *lb
  build: .

如果你做前者,你应该注意,如果你使用一个解析器来保持往返的“合并层次结构”(就像我的ruamel.yaml解析器可以做的那样),删除键值对是不够的,案件来自当地的原件会回来.其他只在加载时解决此问题的解析器没有此问题.

网友评论