id	summary	reporter	owner	description	type	status	priority	component	severity	resolution	keywords	cc
17	Single quote character can break emitter output	apopheniac.reply.pyyaml@…	xi	"If a string contains a space followed by a single quote character, PyYaml's emitter fails to duplicate the single quote. The resulting YAML output yields a parse error:

{{{
#!python
>>> 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:

{{{
#!python
>>> map = {""key"": "" foo'single quoted text'""}
>>> yaml.dump(map)
""{key: ' foo''single quoted text'''}\n""
>>> yaml.load(yaml.dump(map))
{'key': "" foo'single quoted text'""}
}}}

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."	defect	closed	normal	pyyaml	normal	fixed		
