Source code for tardis.configuration.utilities

from cobald.daemon.plugins import YAMLTagSettings
import yaml


[docs]def enable_yaml_load(tag): def yaml_load_decorator(cls): def class_factory(loader, node): settings = YAMLTagSettings.fetch(cls) new_cls = cls if isinstance(node, yaml.nodes.MappingNode): parameters = loader.construct_mapping(node, deep=settings.eager) new_cls = cls(**parameters) elif isinstance(node, yaml.nodes.ScalarNode): new_cls = cls() elif isinstance(node, yaml.nodes.SequenceNode): parameters = loader.construct_sequence(node, deep=settings.eager) new_cls = cls(*parameters) return new_cls yaml.add_constructor(tag, class_factory, Loader=yaml.SafeLoader) return cls return yaml_load_decorator