def _dump_cml_molecule(f, molecule):
extra = getattr(molecule, "<STR_LIT>", {})<EOL>attr_str = "<STR_LIT:U+0020>".join("<STR_LIT>" % (key, value) for key, value in extra.items())<EOL>f.write("<STR_LIT>" % (molecule.title, attr_str))<EOL>f.write("<STR_LIT>")<EOL>atoms_extra = getattr(molecule, "<STR_LIT>", {})<EOL>for counter, number, coordinate in zip(range(molecule.size), molecule.numbers, molecule.coordinates/angstrom):<EOL><INDENT>atom_extra = atoms_extra.get(counter, {})<EOL>attr_str = "<STR_LIT:U+0020>".join("<STR_LIT>" % (key, value) for key, value in atom_extra.items())<EOL>f.write("<STR_LIT>" % (<EOL>counter, periodic[number].symbol, coordinate[<NUM_LIT:0>],  coordinate[<NUM_LIT:1>],<EOL>coordinate[<NUM_LIT:2>], attr_str,<EOL>))<EOL><DEDENT>f.write("<STR_LIT>")<EOL>if molecule.graph is not None:<EOL><INDENT>bonds_extra = getattr(molecule, "<STR_LIT>", {})<EOL>f.write("<STR_LIT>")<EOL>for edge in molecule.graph.edges:<EOL><INDENT>bond_extra = bonds_extra.get(edge, {})<EOL>attr_str = "<STR_LIT:U+0020>".join("<STR_LIT>" % (key, value) for key, value in bond_extra.items())<EOL>i1, i2 = edge<EOL>f.write("<STR_LIT>" % (i1, i2, attr_str))<EOL><DEDENT>f.write("<STR_LIT>")<EOL><DEDENT>f.write("<STR_LIT>")<EOL>
Dump a single molecule to a CML file

       Arguments:
        | ``f``  --  a file-like object
        | ``molecule``  --  a Molecule instance