Shofel2_T124_python/venv/lib/python3.10/site-packages/yamale/yamale.py

45 lines
1.4 KiB
Python
Raw Normal View History

2024-05-25 16:45:07 +00:00
#!/usr/bin/env python
from .schema import Schema
from .yamale_error import YamaleError
def make_schema(path=None, parser='PyYAML', validators=None, content=None):
# validators = None means use default.
# Import readers here so we can get version information in setup.py.
from . import readers
raw_schemas = readers.parse_yaml(path, parser, content=content)
if not raw_schemas:
raise ValueError('{} is an empty file!'.format(path))
# First document is the base schema
try:
s = Schema(raw_schemas[0], path, validators=validators)
# Additional documents contain Includes.
for raw_schema in raw_schemas[1:]:
s.add_include(raw_schema)
except (TypeError, SyntaxError) as e:
error = 'Schema error in file %s\n' % path
error += str(e)
raise SyntaxError(error)
return s
def make_data(path=None, parser='PyYAML', content=None):
from . import readers
raw_data = readers.parse_yaml(path, parser, content=content)
if len(raw_data) == 0:
return [({}, path)]
return [(d, path) for d in raw_data]
def validate(schema, data, strict=True, _raise_error=True):
results = []
is_valid = True
for d, path in data:
result = schema.validate(d, path, strict)
results.append(result)
is_valid = is_valid and result.isValid()
if _raise_error and not is_valid:
raise YamaleError(results)
return results