Tue, 24 May 2022 11:00:52 +0200
Third Party packages
- upgraded coverage to 6.4.0
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
1 | # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
2 | # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
3 | |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | """Results of coverage measurement.""" |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
6 | import collections |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
8 | from coverage.debug import SimpleReprMixin |
8929
fcca2fa618bf
Upgraded coverage to version 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
9 | from coverage.exceptions import ConfigError |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
10 | from coverage.misc import contract, nice_pair |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
13 | class Analysis: |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
14 | """The results of analyzing a FileReporter.""" |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
16 | def __init__(self, data, precision, file_reporter, file_mapper): |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
17 | self.data = data |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
18 | self.file_reporter = file_reporter |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
19 | self.filename = file_mapper(self.file_reporter.filename) |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
20 | self.statements = self.file_reporter.lines() |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
21 | self.excluded = self.file_reporter.excluded_lines() |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | # Identify missing statements. |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
24 | executed = self.data.lines(self.filename) or [] |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
25 | executed = self.file_reporter.translate_lines(executed) |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
26 | self.executed = executed |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
27 | self.missing = self.statements - self.executed |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
29 | if self.data.has_arcs(): |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
30 | self._arc_possibilities = sorted(self.file_reporter.arcs()) |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
31 | self.exit_counts = self.file_reporter.exit_counts() |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
32 | self.no_branch = self.file_reporter.no_branch_lines() |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
33 | n_branches = self._total_branches() |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | mba = self.missing_branch_arcs() |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
35 | n_partial_branches = sum(len(v) for k,v in mba.items() if k not in self.missing) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
36 | n_missing_branches = sum(len(v) for k,v in mba.items()) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | else: |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
38 | self._arc_possibilities = [] |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
39 | self.exit_counts = {} |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
40 | self.no_branch = set() |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
41 | n_branches = n_partial_branches = n_missing_branches = 0 |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | self.numbers = Numbers( |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
44 | precision=precision, |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | n_files=1, |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | n_statements=len(self.statements), |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | n_excluded=len(self.excluded), |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | n_missing=len(self.missing), |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | n_branches=n_branches, |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
50 | n_partial_branches=n_partial_branches, |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | n_missing_branches=n_missing_branches, |
5051
3586ebd9fac8
Updated coverage.py to version 4.1.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4489
diff
changeset
|
52 | ) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
54 | def missing_formatted(self, branches=False): |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | """The missing line numbers, formatted nicely. |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | Returns a string like "1-2, 5-11, 13-14". |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
59 | If `branches` is true, includes the missing branch arcs also. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
60 | |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
62 | if branches and self.has_arcs(): |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
63 | arcs = self.missing_branch_arcs().items() |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
64 | else: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
65 | arcs = None |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
66 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
67 | return format_lines(self.statements, self.missing, arcs=arcs) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | def has_arcs(self): |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | """Were arcs measured in this result?""" |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
71 | return self.data.has_arcs() |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
73 | @contract(returns='list(tuple(int, int))') |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | def arc_possibilities(self): |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | """Returns a sorted list of the arcs in the code.""" |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
76 | return self._arc_possibilities |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
78 | @contract(returns='list(tuple(int, int))') |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | def arcs_executed(self): |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """Returns a sorted list of the arcs actually executed in the code.""" |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
81 | executed = self.data.arcs(self.filename) or [] |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
82 | executed = self.file_reporter.translate_arcs(executed) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | return sorted(executed) |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
85 | @contract(returns='list(tuple(int, int))') |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | def arcs_missing(self): |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
87 | """Returns a sorted list of the unexecuted arcs in the code.""" |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | possible = self.arc_possibilities() |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | executed = self.arcs_executed() |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
90 | missing = ( |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
91 | p for p in possible |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
92 | if p not in executed |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
93 | and p[0] not in self.no_branch |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
94 | and p[1] not in self.excluded |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
95 | ) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | return sorted(missing) |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
98 | @contract(returns='list(tuple(int, int))') |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | def arcs_unpredicted(self): |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | """Returns a sorted list of the executed arcs missing from the code.""" |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | possible = self.arc_possibilities() |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | executed = self.arcs_executed() |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | # Exclude arcs here which connect a line to itself. They can occur |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | # in executed data in some cases. This is where they can cause |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | # trouble, and here is where it's the least burden to remove them. |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
106 | # Also, generators can somehow cause arcs from "enter" to "exit", so |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
107 | # make sure we have at least one positive value. |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
108 | unpredicted = ( |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | e for e in executed |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
110 | if e not in possible |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
111 | and e[0] != e[1] |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
112 | and (e[0] > 0 or e[1] > 0) |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
113 | ) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | return sorted(unpredicted) |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
116 | def _branch_lines(self): |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
117 | """Returns a list of line numbers that have more than one exit.""" |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
118 | return [l1 for l1,count in self.exit_counts.items() if count > 1] |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
120 | def _total_branches(self): |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | """How many total branches are there?""" |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
122 | return sum(count for count in self.exit_counts.values() if count > 1) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
124 | @contract(returns='dict(int: list(int))') |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | def missing_branch_arcs(self): |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | """Return arcs that weren't executed from branch lines. |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | Returns {l1:[l2a,l2b,...], ...} |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | """ |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | missing = self.arcs_missing() |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
132 | branch_lines = set(self._branch_lines()) |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
133 | mba = collections.defaultdict(list) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | for l1, l2 in missing: |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | if l1 in branch_lines: |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | mba[l1].append(l2) |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | return mba |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | |
8991
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
139 | @contract(returns='dict(int: list(int))') |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
140 | def executed_branch_arcs(self): |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
141 | """Return arcs that were executed from branch lines. |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
142 | |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
143 | Returns {l1:[l2a,l2b,...], ...} |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
144 | |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
145 | """ |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
146 | executed = self.arcs_executed() |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
147 | branch_lines = set(self._branch_lines()) |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
148 | eba = collections.defaultdict(list) |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
149 | for l1, l2 in executed: |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
150 | if l1 in branch_lines: |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
151 | eba[l1].append(l2) |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
152 | return eba |
2fc945191992
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8929
diff
changeset
|
153 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
154 | @contract(returns='dict(int: tuple(int, int))') |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
155 | def branch_stats(self): |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
156 | """Get stats about branches. |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
157 | |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
158 | Returns a dict mapping line numbers to a tuple: |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
159 | (total_exits, taken_exits). |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
160 | """ |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
161 | |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
162 | missing_arcs = self.missing_branch_arcs() |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
163 | stats = {} |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
164 | for lnum in self._branch_lines(): |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
165 | exits = self.exit_counts[lnum] |
8527
2bd1325d727e
Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
166 | missing = len(missing_arcs[lnum]) |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
167 | stats[lnum] = (exits, exits - missing) |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
168 | return stats |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
169 | |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
171 | class Numbers(SimpleReprMixin): |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | """The numerical results of measuring coverage. |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | This holds the basic statistics from `Analysis`, and is used to roll |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | up statistics across files. |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | """ |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
178 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
179 | def __init__(self, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
180 | precision=0, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
181 | n_files=0, n_statements=0, n_excluded=0, n_missing=0, |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
182 | n_branches=0, n_partial_branches=0, n_missing_branches=0 |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
183 | ): |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
184 | assert 0 <= precision < 10 |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
185 | self._precision = precision |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
186 | self._near0 = 1.0 / 10**precision |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
187 | self._near100 = 100.0 - self._near0 |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | self.n_files = n_files |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | self.n_statements = n_statements |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | self.n_excluded = n_excluded |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | self.n_missing = n_missing |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | self.n_branches = n_branches |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
193 | self.n_partial_branches = n_partial_branches |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | self.n_missing_branches = n_missing_branches |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
196 | def init_args(self): |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
197 | """Return a list for __init__(*args) to recreate this object.""" |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
198 | return [ |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
199 | self._precision, |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
200 | self.n_files, self.n_statements, self.n_excluded, self.n_missing, |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
201 | self.n_branches, self.n_partial_branches, self.n_missing_branches, |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
202 | ] |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
203 | |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
204 | @property |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
205 | def n_executed(self): |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | """Returns the number of executed statements.""" |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | return self.n_statements - self.n_missing |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
209 | @property |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
210 | def n_executed_branches(self): |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | """Returns the number of executed branches.""" |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | return self.n_branches - self.n_missing_branches |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
214 | @property |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
215 | def pc_covered(self): |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | """Returns a single percentage value for coverage.""" |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | if self.n_statements > 0: |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
218 | numerator, denominator = self.ratio_covered |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
219 | pc_cov = (100.0 * numerator) / denominator |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | else: |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | pc_cov = 100.0 |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | return pc_cov |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
224 | @property |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
225 | def pc_covered_str(self): |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
226 | """Returns the percent covered, as a string, without a percent sign. |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
227 | |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
228 | Note that "0" is only returned when the value is truly zero, and "100" |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
229 | is only returned when the value is truly 100. Rounding can never |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
230 | result in either "0" or "100". |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
231 | |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
232 | """ |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
233 | return self.display_covered(self.pc_covered) |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
234 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
235 | def display_covered(self, pc): |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
236 | """Return a displayable total percentage, as a string. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
237 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
238 | Note that "0" is only returned when the value is truly zero, and "100" |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
239 | is only returned when the value is truly 100. Rounding can never |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
240 | result in either "0" or "100". |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
241 | |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
242 | """ |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
243 | if 0 < pc < self._near0: |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
244 | pc = self._near0 |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
245 | elif self._near100 < pc < 100: |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
246 | pc = self._near100 |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
247 | else: |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
248 | pc = round(pc, self._precision) |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
249 | return "%.*f" % (self._precision, pc) |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
250 | |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
251 | def pc_str_width(self): |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
252 | """How many characters wide can pc_covered_str be?""" |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
253 | width = 3 # "100" |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
254 | if self._precision > 0: |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
255 | width += 1 + self._precision |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
256 | return width |
4489
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
257 | |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
258 | @property |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
259 | def ratio_covered(self): |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
260 | """Return a numerator and denominator for the coverage ratio.""" |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
261 | numerator = self.n_executed + self.n_executed_branches |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
262 | denominator = self.n_statements + self.n_branches |
d0d6e4ad31bd
Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3495
diff
changeset
|
263 | return numerator, denominator |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
264 | |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | def __add__(self, other): |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
266 | nums = Numbers(precision=self._precision) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | nums.n_files = self.n_files + other.n_files |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | nums.n_statements = self.n_statements + other.n_statements |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | nums.n_excluded = self.n_excluded + other.n_excluded |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | nums.n_missing = self.n_missing + other.n_missing |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | nums.n_branches = self.n_branches + other.n_branches |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
272 | nums.n_partial_branches = ( |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
273 | self.n_partial_branches + other.n_partial_branches |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8991
diff
changeset
|
274 | ) |
3495
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
275 | nums.n_missing_branches = ( |
fac17a82b431
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
29
diff
changeset
|
276 | self.n_missing_branches + other.n_missing_branches |
9099
0e511e0e94a3
Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8991
diff
changeset
|
277 | ) |
29
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | return nums |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | def __radd__(self, other): |
391dc0bc4ae5
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | # Implementing 0+Numbers allows us to sum() a list of Numbers. |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
282 | assert other == 0 # we only ever call it this way. |
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
283 | return self |
6219
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
284 | |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
285 | |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
286 | def _line_ranges(statements, lines): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
287 | """Produce a list of ranges for `format_lines`.""" |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
288 | statements = sorted(statements) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
289 | lines = sorted(lines) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
290 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
291 | pairs = [] |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
292 | start = None |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
293 | lidx = 0 |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
294 | for stmt in statements: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
295 | if lidx >= len(lines): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
296 | break |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
297 | if stmt == lines[lidx]: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
298 | lidx += 1 |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
299 | if not start: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
300 | start = stmt |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
301 | end = stmt |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
302 | elif start: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
303 | pairs.append((start, end)) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
304 | start = None |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
305 | if start: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
306 | pairs.append((start, end)) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
307 | return pairs |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
308 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
309 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
310 | def format_lines(statements, lines, arcs=None): |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
311 | """Nicely format a list of line numbers. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
312 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
313 | Format a list of line numbers for printing by coalescing groups of lines as |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
314 | long as the lines represent consecutive statements. This will coalesce |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
315 | even if there are gaps between statements. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
316 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
317 | For example, if `statements` is [1,2,3,4,5,10,11,12,13,14] and |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
318 | `lines` is [1,2,5,10,11,13,14] then the result will be "1-2, 5-11, 13-14". |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
319 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
320 | Both `lines` and `statements` can be any iterable. All of the elements of |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
321 | `lines` must be in `statements`, and all of the values must be positive |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
322 | integers. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
323 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
324 | If `arcs` is provided, they are (start,[end,end,end]) pairs that will be |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
325 | included in the output as long as start isn't in `lines`. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
326 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
327 | """ |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
328 | line_items = [(pair[0], nice_pair(pair)) for pair in _line_ranges(statements, lines)] |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
329 | if arcs: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
330 | line_exits = sorted(arcs) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
331 | for line, exits in line_exits: |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
332 | for ex in sorted(exits): |
8527
2bd1325d727e
Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
333 | if line not in lines and ex not in lines: |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
334 | dest = (ex if ex > 0 else "exit") |
8929
fcca2fa618bf
Upgraded coverage to version 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
335 | line_items.append((line, f"{line}->{dest}")) |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
336 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
337 | ret = ', '.join(t[-1] for t in sorted(line_items)) |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
338 | return ret |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
339 | |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
340 | |
6219
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
341 | @contract(total='number', fail_under='number', precision=int, returns=bool) |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
342 | def should_fail_under(total, fail_under, precision): |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
343 | """Determine if a total should fail due to fail-under. |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
344 | |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
345 | `total` is a float, the coverage measurement total. `fail_under` is the |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
346 | fail_under setting to compare with. `precision` is the number of digits |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
347 | to consider after the decimal point. |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
348 | |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
349 | Returns True if the total should fail. |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
350 | |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
351 | """ |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
352 | # We can never achieve higher than 100% coverage, or less than zero. |
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
353 | if not (0 <= fail_under <= 100.0): |
8775
0802ae193343
Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8527
diff
changeset
|
354 | msg = f"fail_under={fail_under} is invalid. Must be between 0 and 100." |
8929
fcca2fa618bf
Upgraded coverage to version 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8775
diff
changeset
|
355 | raise ConfigError(msg) |
7427
362cd1b6f81a
coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
356 | |
6219
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
357 | # Special case for fail_under=100, it must really be 100. |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
358 | if fail_under == 100.0 and total != 100.0: |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
359 | return True |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
360 | |
d6c795b5ce33
Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5178
diff
changeset
|
361 | return round(total, precision) < fail_under |