>>> map = {'key': " 'single quoted text'"}
>>> yaml.dump(map)
"{key: ' 'single quoted text'''}\n"
>>> yaml.load(yaml.dump(map))
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/home/apopheniac/lib/python/yaml/__init__.py", line 61, in load
return loader.get_data()
File "/home/apopheniac/lib/python/yaml/constructor.py", line 41, in get_data
return self.construct_document(self.get_node())
File "/home/apopheniac/lib/python/yaml/composer.py", line 23, in get_node
return self.compose_document()
File "/home/apopheniac/lib/python/yaml/composer.py", line 40, in compose_document
node = self.compose_node(None, None)
File "/home/apopheniac/lib/python/yaml/composer.py", line 69, in compose_node
node = self.compose_mapping_node(anchor)
File "/home/apopheniac/lib/python/yaml/composer.py", line 112, in compose_mapping_node
while not self.check_event(MappingEndEvent):
File "/home/apopheniac/lib/python/yaml/parser.py", line 78, in check_event
self.current_event = self.event_generator.next()
File "/home/apopheniac/lib/python/yaml/parser.py", line 129, in parse_stream
for event in self.parse_block_node():
File "/home/apopheniac/lib/python/yaml/parser.py", line 323, in parse_node
for event in collection_events:
File "/home/apopheniac/lib/python/yaml/parser.py", line 472, in parse_flow_mapping
"expected ',' or '}', but got %r" % token.id, token.start_mark)
yaml.parser.ParserError: while scanning a flow mapping
in "<string>", line 1, column 1:
{key: ' 'single quoted text'''}
^
expected ',' or '}', but got '<scalar>'
in "<string>", line 1, column 10:
{key: ' 'single quoted text'''}
^
If each single quote is preceded by a non-space character, then the error disappears:
The error seems to lie in the write_single_quoted function of module emitter.py. I've only encountered this problem with scalars represented in single quoted style.