3
3
4
4
"""LCOV reporting for coverage.py."""
5
5
6
+ from __future__ import annotations
7
+
6
8
import sys
7
9
import base64
8
10
from hashlib import md5
9
11
12
+ from typing import IO , Iterable , Optional , TYPE_CHECKING
13
+
14
+ from coverage .plugin import FileReporter
10
15
from coverage .report import get_analysis_to_report
11
16
from coverage .results import Analysis , Numbers
17
+ from coverage .types import TMorf
18
+
19
+ if TYPE_CHECKING :
20
+ from coverage import Coverage
21
+ from coverage .data import CoverageData
12
22
13
23
14
24
class LcovReporter :
15
25
"""A reporter for writing LCOV coverage reports."""
16
26
17
27
report_type = "LCOV report"
18
28
19
- def __init__ (self , coverage ) :
29
+ def __init__ (self , coverage : Coverage ) -> None :
20
30
self .coverage = coverage
21
31
self .total = Numbers (self .coverage .config .precision )
22
32
23
- def report (self , morfs , outfile = None ) :
33
+ def report (self , morfs : Optional [ Iterable [ TMorf ]] , outfile : IO [ str ]) -> float :
24
34
"""Renders the full lcov report.
25
35
26
36
'morfs' is a list of modules or filenames
@@ -36,7 +46,7 @@ def report(self, morfs, outfile=None):
36
46
37
47
return self .total .n_statements and self .total .pc_covered
38
48
39
- def get_lcov (self , fr , analysis , outfile = None ) :
49
+ def get_lcov (self , fr : FileReporter , analysis : Analysis , outfile : IO [ str ]) -> None :
40
50
"""Produces the lcov data for a single file.
41
51
42
52
This currently supports both line and branch coverage,
0 commit comments