Source code for dantro.data_loaders.load_yaml

"""Supplies loading functions for YAML files"""

import logging

from ..containers import MutableMappingContainer, ObjectContainer
from ..tools import load_yml
from ._tools import add_loader

# Local constants
log = logging.getLogger(__name__)

# -----------------------------------------------------------------------------

[docs]class YamlLoaderMixin: """Supplies functionality to load yaml files in the data manager""" @add_loader(TargetCls=MutableMappingContainer) def _load_yaml(filepath: str, *, TargetCls: type) -> MutableMappingContainer: """Load a yaml file from the given path and creates a container to store that data in. Args: filepath (str): Where to load the yaml file from TargetCls (type): The class constructor Returns: MutableMappingContainer: The loaded yaml file as a container """ # Load the dict d = load_yml(filepath) # Populate the target container with the data return TargetCls(data=d, attrs=dict(filepath=filepath)) @add_loader(TargetCls=ObjectContainer) def _load_yaml_to_object(filepath: str, *, TargetCls: type) -> ObjectContainer: """Load a yaml file from the given path and creates a container to store that data in. Args: filepath (str): Where to load the yaml file from TargetCls (type): The class constructor Returns: ObjectContainer: The loaded yaml file as a container """ # Load the dict d = load_yml(filepath) # Populate the target container with the data return TargetCls(data=d, attrs=dict(filepath=filepath)) # Also make available under `yml` _load_yml = _load_yaml _load_yml_to_object = _load_yaml_to_object