in glean_parser/util.py [0:0]
def yaml_load(stream):
"""
Map line number to yaml nodes, and preserve the order
of metrics as they appear in the metrics.yaml file.
"""
class SafeLineLoader(_NoDatesSafeLoader):
pass
def _construct_mapping_adding_line(loader, node):
loader.flatten_mapping(node)
pairs = loader.construct_pairs(node)
# Redefinition of a key might be a mistake if that key is a metric name.
mapping = DictWrapper()
for pair in pairs:
if pair[0] in mapping:
mapping.duplicate = pair[0]
mapping[pair[0]] = pair[1]
mapping.defined_in = {"line": node.start_mark.line}
return mapping
SafeLineLoader.add_constructor(
yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _construct_mapping_adding_line
)
return yaml.load(stream, SafeLineLoader)