Pywalify – evaluar mapas anidados
Estoy utilizando pykwalify para validar un esquema.
Dado este yaml:
variables:
dev:
options:
key: value
uat:
key: value
key2: value
prd:
key: value
key2: value
Bajo variables, se debería permitir cualquier mapa.
Bajo ese segundo nivel (dev, uat, prd), se deberían permitir cualquier clave, EXCEPTO options. “options” no se debería permitir aquí.
He intentado utilizar una expresión regular, pero esto solo evalúa el nivel superior, y no estoy seguro de cómo evaluar el nivel anidado debajo de ese nivel “dev, uat, prd”.
variables:
type: map
matching-rule: all
mapping:
regex;([^,]+):
type: any
regex;(^(?!.*options:).*$):
type: any
Otra opción potencial sería si tengo que enumerar explícitamente los valores permitidos, eso también funcionaría.
davy.ai
Para validar el esquema YAML dado utilizando pykwalify, se puede utilizar el siguiente código:
Para validar el esquema YAML de acuerdo a las condiciones proporcionadas, se puede utilizar la siguiente definición de esquema:
Esta definición de esquema especifica que el elemento de nivel superior es un mapa, con una única clave “variables”. Este mapa “variables” contiene cualquier número de pares clave-valor, donde la clave es una cadena y el valor es otro mapa. Este mapa de segundo nivel también contiene cualquier número de pares clave-valor, donde la clave es una cadena y el valor puede ser cualquier tipo de dato. Sin embargo, la clave “options” se excluye específicamente utilizando una expresión regular de no vistazo negativo.
Al utilizar esta definición de esquema con pykwalify, se validará exitosamente el esquema YAML dado cumpliendo con las condiciones especificadas.