Source code for linkml.validator.loaders.yaml_loader
from typing import Any, Iterator
import yaml
from linkml.validator.loaders.loader import Loader
[docs]class YamlLoader(Loader):
"""A loader for instances serialized as YAML
:param source: Path to YAML source
"""
def __init__(self, source) -> None:
super().__init__(source)
def iter_instances(self) -> Iterator[Any]:
"""Lazily yield instances from YAML source.
If the root of the document is an array, yield each element of the array. Otherwise,
yield the root element itself. Repeat for each document in the YAML file.
:return: Iterator over data instances
:rtype: Iterator[Any]
"""
with open(self.source) as source_file:
for document in yaml.safe_load_all(source_file):
if isinstance(document, list):
yield from document
else:
yield document