- "while constructing a mapping", node.start_mark,
- "found duplicate key (%s)" % key, key_node.start_mark)
- mapping[key] = value
-
- return loader.construct_mapping(node, deep)
+ None,
+ None,
+ "expected a mapping node, but found %s" % node.id,
+ node.start_mark,
+ )
+ mapping = {}
+ for key_node, value_node in node.value:
+ key = self.construct_object(key_node, deep=deep)
+ try:
+ hash(key)
+ except TypeError as exc:
+ raise ConstructorError(
+ "while constructing a mapping",
+ node.start_mark,
+ "found unacceptable key (%s)" % exc,
+ key_node.start_mark,
+ )
+ # check for duplicate keys
+ if key in mapping:
+ raise ConstructorError(
+ "while constructing a mapping",
+ node.start_mark,
+ "found duplicate key",
+ key_node.start_mark,
+ )
+ value = self.construct_object(value_node, deep=deep)
+ mapping[key] = value
+ return mapping