Pywalify - 评估嵌套地图

Pywalify - evaluate nested maps

我正在使用 pykwalify 来验证模式。

鉴于此 yaml:

variables:
  dev:
    options:
      key: value
  uat:
    key: value
    key2: value
  prd:
    key: value
    key2: value

在变量下,应该允许任何映射。 在第二层(dev、uat、prd)下——任何键都应该被允许,除了选项。此处不应允许“选项”。

我试过使用正则表达式,但这只是评估顶层,我不太确定如何评估嵌套在“dev、uat、prd”级别下的级别。

variables:
  type: map
  matching-rule: all
  mapping:
    regex;([^,]+):
      type: any
    regex;(^(?!.*options:).*$):
      type: any

另一个可能的选择是,如果我必须明确列出允许的值,那也可以。

我在您的代码段中发现了两个问题:

  1. 匹配除“选项”以外的任何内容的正则表达式是错误的。
  2. 架构的结构不适合嵌套映​​射。

以下架构应提供您所需要的内容:

variables:
  type: map
  matching-rule: all
  mapping:
    regex;([^,]+):
      type: map
      mapping:
        regex;(^(?!options$).*):
          type: any