【发布时间】:2018-09-26 13:09:36
【问题描述】:
概述
我有很多 .yaml 文件和验证它们的架构。 有时,“不正确”的值实际上是正确的。
我需要一些方法来忽略某些字段。不应对这些字段执行任何验证。
示例
## file -- a.yaml
some_dict:
some_key: some_valid_value
## file -- b.yaml
some_dict:
some_key: some_INVALID_value # cerberus: ignore
我该怎么做?
【问题讨论】:
-
显然很有趣的问题。你能提供一个小例子来说明你的意思吗?
-
例如:
- ip_lan: X.X.X.X location: XXX model: EdgeSwitch name: SW-XX-XXX offset: [-1, -1] parents: PTP-XX-XXX-REM假设位置字段是必需的。这个文件是 X.yaml 每个客户端都有一个 X.yaml。位置字段是必需的,2 个客户除外。所以我需要一种方法来设置不需要的位置,只编辑 .yaml 文件,而不是我的程序或我的 cerberus 架构。 -
如果您在验证模式中设置了
location,并且不允许以任何方式修改验证模式,那么您将陷入困境。如果允许您对验证模式进行轻微修改,那么有一个简单的解决方案。为什么不能修改验证架构? -
@dreftymac 并不是我不能编辑我的架构,只是通常
location字段是必需的,但有时不是,这取决于我正在验证的 .yml 文件.就像我有a.yml、b.yml和c.yml,在a.yml和b.ymllocation是必需的,但在c.yml不是。所有 .yml 文件的架构都是相同的,但仅对于某些文件location不是必需的。所以我需要一种方法来告诉 cerberus:嘿,不要将此字段标记为必填项,即使 schema 这么说。 -
好的,你能举一个需求条件的例子吗?比如
location不需要model == CiscoXYZ或者什么?你想用什么作为触发器让 Cerberus 知道不需要位置?
标签: python validation yaml cerberus