Skip to content

Incorrect return types for xml.dom.minidom.Node.{toxml,toprettyxml} #10060

@wesleywright

Description

@wesleywright

It looks like #9917 added the -> str return type to these functions, but the documentation indicates that may return bytes:

Return a string or byte string containing the XML represented by the DOM node.

With an explicit encoding 1 argument, the result is a byte string in the specified encoding. With no encoding argument, the result is a Unicode string, and the XML declaration in the resulting string does not specify an encoding. Encoding this string in an encoding other than UTF-8 is likely incorrect, since UTF-8 is the default encoding of XML.

This small example seems to confirm that it can return bytes:

from xml.dom.minidom import Document

doc = Document()
doc.appendChild(doc.createElement("foo"))
print(doc.toprettyxml(indent="\t", encoding="UTF-8"))
# output: b'<?xml version="1.0" encoding="UTF-8"?>\n<foo/>\n'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions