mosaic / yaml_util.py
Xsmos's picture
Fix import error and add source_files to config
983234c verified
raw
history blame contribute delete
821 Bytes
import yaml
class MyLoader(yaml.SafeLoader):
# returns
def construct_mapping(self, *args, **kwargs):
super().add_constructor(None, construct_undefined)
# when loading we want to skip keys that require construction,
mapping = super().construct_mapping(*args, **kwargs)
return mapping
import typing
class Tagged(typing.NamedTuple):
tag: str
value: object
def construct_undefined(self, node):
if isinstance(node, yaml.nodes.ScalarNode):
value = self.construct_scalar(node)
elif isinstance(node, yaml.nodes.SequenceNode):
value = self.construct_sequence(node)
elif isinstance(node, yaml.nodes.MappingNode):
value = self.construct_mapping(node)
else:
assert False, f"unexpected node: {node!r}"
return Tagged(node.tag, value)