eric7/DebugClients/Python/coverage/summary.py

branch
eric7
changeset 8775
0802ae193343
parent 8527
2bd1325d727e
child 8929
fcca2fa618bf
--- a/eric7/DebugClients/Python/coverage/summary.py	Fri Nov 19 19:28:47 2021 +0100
+++ b/eric7/DebugClients/Python/coverage/summary.py	Sat Nov 20 16:47:38 2021 +0100
@@ -5,13 +5,13 @@
 
 import sys
 
-from coverage import env
+from coverage.exceptions import CoverageException
+from coverage.misc import human_sorted_items
 from coverage.report import get_analysis_to_report
 from coverage.results import Numbers
-from coverage.misc import CoverageException, output_encoding
 
 
-class SummaryReporter(object):
+class SummaryReporter:
     """A reporter for writing the summary report."""
 
     def __init__(self, coverage):
@@ -22,13 +22,11 @@
         self.fr_analysis = []
         self.skipped_count = 0
         self.empty_count = 0
-        self.total = Numbers()
-        self.fmt_err = u"%s   %s: %s"
+        self.total = Numbers(precision=self.config.precision)
+        self.fmt_err = "%s   %s: %s"
 
     def writeout(self, line):
         """Write a line to the output, adding a newline."""
-        if env.PY2:
-            line = line.encode(output_encoding())
         self.outfile.write(line.rstrip())
         self.outfile.write("\n")
 
@@ -47,22 +45,22 @@
 
         # Prepare the formatting strings, header, and column sorting.
         max_name = max([len(fr.relative_filename()) for (fr, analysis) in self.fr_analysis] + [5])
-        fmt_name = u"%%- %ds  " % max_name
-        fmt_skip_covered = u"\n%s file%s skipped due to complete coverage."
-        fmt_skip_empty = u"\n%s empty file%s skipped."
+        fmt_name = "%%- %ds  " % max_name
+        fmt_skip_covered = "\n%s file%s skipped due to complete coverage."
+        fmt_skip_empty = "\n%s empty file%s skipped."
 
-        header = (fmt_name % "Name") + u" Stmts   Miss"
-        fmt_coverage = fmt_name + u"%6d %6d"
+        header = (fmt_name % "Name") + " Stmts   Miss"
+        fmt_coverage = fmt_name + "%6d %6d"
         if self.branches:
-            header += u" Branch BrPart"
-            fmt_coverage += u" %6d %6d"
-        width100 = Numbers.pc_str_width()
-        header += u"%*s" % (width100+4, "Cover")
-        fmt_coverage += u"%%%ds%%%%" % (width100+3,)
+            header += " Branch BrPart"
+            fmt_coverage += " %6d %6d"
+        width100 = Numbers(precision=self.config.precision).pc_str_width()
+        header += "%*s" % (width100+4, "Cover")
+        fmt_coverage += "%%%ds%%%%" % (width100+3,)
         if self.config.show_missing:
-            header += u"   Missing"
-            fmt_coverage += u"   %s"
-        rule = u"-" * len(header)
+            header += "   Missing"
+            fmt_coverage += "   %s"
+        rule = "-" * len(header)
 
         column_order = dict(name=0, stmts=1, miss=2, cover=-1)
         if self.branches:
@@ -92,18 +90,20 @@
             lines.append((text, args))
 
         # Sort the lines and write them out.
-        if getattr(self.config, 'sort', None):
-            sort_option = self.config.sort.lower()
-            reverse = False
-            if sort_option[0] == '-':
-                reverse = True
-                sort_option = sort_option[1:]
-            elif sort_option[0] == '+':
-                sort_option = sort_option[1:]
+        sort_option = (self.config.sort or "name").lower()
+        reverse = False
+        if sort_option[0] == '-':
+            reverse = True
+            sort_option = sort_option[1:]
+        elif sort_option[0] == '+':
+            sort_option = sort_option[1:]
 
+        if sort_option == "name":
+            lines = human_sorted_items(lines, reverse=reverse)
+        else:
             position = column_order.get(sort_option)
             if position is None:
-                raise CoverageException("Invalid sorting option: {!r}".format(self.config.sort))
+                raise CoverageException(f"Invalid sorting option: {self.config.sort!r}")
             lines.sort(key=lambda l: (l[1][position], l[0]), reverse=reverse)
 
         for line in lines:

eric ide

mercurial