es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para validar el esquema YAML dado utilizando pykwalify, se puede utilizar el siguiente código:

    import pykwalify
    
    schema_file = "schema.yaml"  # Esta es la ruta al archivo de esquema
    document_file = "document.yaml"  # Esta es la ruta al archivo YAML a validar
    
    with open(schema_file) as f:
        schema = yaml.safe_load(f)
    
    with open(document_file) as f:
        document = yaml.safe_load(f)
    
    pykwalify.core.Core(source_data=document, schema_data=schema).validate()
    

    Para validar el esquema YAML de acuerdo a las condiciones proporcionadas, se puede utilizar la siguiente definición de esquema:

    type: map
    mapping:
      variables:
        type: map
        mapping:
          regex;.+:
            type: map
            mapping:
              regex;^(?!options$).+$:
                type: any
    

    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.

Comments are closed.