--- a/eric7/DebugClients/Python/coverage/xmlreport.py Fri Nov 19 19:28:47 2021 +0100 +++ b/eric7/DebugClients/Python/coverage/xmlreport.py Sat Nov 20 16:47:38 2021 +0100 @@ -1,4 +1,3 @@ -# coding: utf-8 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt @@ -10,10 +9,8 @@ import time import xml.dom.minidom -from coverage import env from coverage import __url__, __version__, files -from coverage.backward import iitems -from coverage.misc import isolate_module +from coverage.misc import isolate_module, human_sorted, human_sorted_items from coverage.report import get_analysis_to_report os = isolate_module(os) @@ -30,9 +27,11 @@ return "%.4g" % (float(hit) / num) -class XmlReporter(object): +class XmlReporter: """A reporter for writing Cobertura-style XML coverage results.""" + report_type = "XML report" + def __init__(self, coverage): self.coverage = coverage self.config = self.coverage.config @@ -80,7 +79,7 @@ xcoverage.appendChild(xsources) # Populate the XML DOM with the source info. - for path in sorted(self.source_paths): + for path in human_sorted(self.source_paths): xsource = self.xml_out.createElement("source") xsources.appendChild(xsource) txt = self.xml_out.createTextNode(path) @@ -93,13 +92,13 @@ xcoverage.appendChild(xpackages) # Populate the XML DOM with the package info. - for pkg_name, pkg_data in sorted(iitems(self.packages)): + for pkg_name, pkg_data in human_sorted_items(self.packages.items()): class_elts, lhits, lnum, bhits, bnum = pkg_data xpackage = self.xml_out.createElement("package") xpackages.appendChild(xpackage) xclasses = self.xml_out.createElement("classes") xpackage.appendChild(xclasses) - for _, class_elt in sorted(iitems(class_elts)): + for _, class_elt in human_sorted_items(class_elts.items()): xclasses.appendChild(class_elt) xpackage.setAttribute("name", pkg_name.replace(os.sep, '.')) xpackage.setAttribute("line-rate", rate(lhits, lnum)) @@ -158,7 +157,7 @@ rel_name = fr.relative_filename() self.source_paths.add(fr.filename[:-len(rel_name)].rstrip(r"\/")) - dirname = os.path.dirname(rel_name) or u"." + dirname = os.path.dirname(rel_name) or "." dirname = "/".join(dirname.split("/")[:self.config.xml_package_depth]) package_name = dirname.replace("/", ".") @@ -228,7 +227,4 @@ def serialize_xml(dom): """Serialize a minidom node to XML.""" - out = dom.toprettyxml() - if env.PY2: - out = out.encode("utf8") - return out + return dom.toprettyxml()