diff options
Diffstat (limited to 'lib/yaml/composer.py')
-rw-r--r-- | lib/yaml/composer.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/yaml/composer.py b/lib/yaml/composer.py index fcd93ab..7d60bc1 100644 --- a/lib/yaml/composer.py +++ b/lib/yaml/composer.py @@ -81,11 +81,15 @@ class Composer: def compose_mapping_node(self): start_event = self.parser.get() - value = [] + value = {} while not self.parser.check(CollectionEndEvent): + key_event = self.parser.peek() item_key = self.compose_node() item_value = self.compose_node() - value.append((item_key, item_value)) + if item_key in value: + raise ComposerError("while composing a mapping", start_event.start_marker, + "found duplicate key", key_event.start_marker) + value[item_key] = item_value end_event = self.parser.get() return MappingNode(start_event.tag, value, start_event.start_marker, end_event.end_marker) |