import yaml
import os
from drain import util
from drain.step import Step
[docs]def load(filename):
"""
Load step from yaml file
Args:
filename: a target or step.yaml filename
"""
yaml_filename = os.path.join(os.path.dirname(filename), 'step.yaml')
with open(yaml_filename) as f:
return yaml.load(f)
[docs]def step_multi_representer(dumper, data):
tag = '!step:%s.%s' % (data.__class__.__module__, data.__class__.__name__)
return dumper.represent_mapping(tag, data.get_arguments())
[docs]def step_multi_constructor(loader, tag_suffix, node):
cls = util.get_attr(tag_suffix[1:])
kwargs = loader.construct_mapping(node, deep=True)
return cls(**kwargs)
yaml.Dumper.ignore_aliases = lambda *args: True