from pathlib import Path
if isinstance(file_or_filename, Path):
file_or_filename = str(file_or_filename)
from pathlib import Path
def write_xml(obj, file_or_filename: Optional[Union[str, IO]] = None, *, pretty: bool = False):
tree = etree.ElementTree(obj._elem)
if file_or_filename is None:
file_or_filename = obj.filepath
if file_or_filename is None:
raise JUnitXmlError("Missing file argument.")
if pretty:
from xml.dom.minidom import parseString
text = etree.tostring(obj._elem)
xml = parseString(text) # nosec
content = xml.toprettyxml(encoding="utf-8")
if isinstance(file_or_filename, Path):
file_or_filename = str(file_or_filename)
if isinstance(file_or_filename, str):
with open(file_or_filename, encoding="utf-8", mode="wb") as xmlfile:
xmlfile.write(content)
else:
if isinstance(file_or_filename, io.TextIOWrapper):
if file_or_filename.encoding is not None and file_or_filename.encoding.lower() != "utf-8":
raise ValueError(f"Only utf-8 encoding is supported: {file_or_filename.encoding}")
file_or_filename.buffer.write(content)
else:
file_or_filename.write(content)
else:
if isinstance(file_or_filename, io.TextIOWrapper):
if file_or_filename.encoding is not None and file_or_filename.encoding.lower() != "utf-8":
raise ValueError(f"Only utf-8 encoding is supported: {file_or_filename.encoding}")
tree.write(file_or_filename.buffer, encoding="utf-8", xml_declaration=True)
else:
tree.write(file_or_filename, encoding="utf-8", xml_declaration=True)
How to fix?
added the following lines to
write_xmlfunction (line: 23):full function: