summaryrefslogtreecommitdiff
path: root/sphinx/ext/coverage.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/ext/coverage.py')
-rw-r--r--sphinx/ext/coverage.py30
1 files changed, 23 insertions, 7 deletions
diff --git a/sphinx/ext/coverage.py b/sphinx/ext/coverage.py
index c08b1e706..98681466c 100644
--- a/sphinx/ext/coverage.py
+++ b/sphinx/ext/coverage.py
@@ -22,14 +22,21 @@ import sphinx
from sphinx.builders import Builder
from sphinx.util.inspect import safe_getattr
+if False:
+ # For type annotation
+ from typing import Any, Callable, IO, Pattern, Tuple # NOQA
+ from sphinx.application import Sphinx # NOQA
+
# utility
def write_header(f, text, char='-'):
+ # type:(IO, unicode, unicode) -> None
f.write(text + '\n')
f.write(char * len(text) + '\n')
def compile_regex_list(name, exps, warnfunc):
+ # type: (unicode, unicode, Callable) -> List[Pattern]
lst = []
for exp in exps:
try:
@@ -44,19 +51,20 @@ class CoverageBuilder(Builder):
name = 'coverage'
def init(self):
- self.c_sourcefiles = []
+ # type: () -> None
+ self.c_sourcefiles = [] # type: List[unicode]
for pattern in self.config.coverage_c_path:
pattern = path.join(self.srcdir, pattern)
self.c_sourcefiles.extend(glob.glob(pattern))
- self.c_regexes = []
+ self.c_regexes = [] # type: List[Tuple[unicode, Pattern]]
for (name, exp) in self.config.coverage_c_regexes.items():
try:
self.c_regexes.append((name, re.compile(exp)))
except Exception:
self.warn('invalid regex %r in coverage_c_regexes' % exp)
- self.c_ignorexps = {}
+ self.c_ignorexps = {} # type: Dict[unicode, List[Pattern]]
for (name, exps) in iteritems(self.config.coverage_ignore_c_items):
self.c_ignorexps[name] = compile_regex_list(
'coverage_ignore_c_items', exps, self.warn)
@@ -71,18 +79,21 @@ class CoverageBuilder(Builder):
self.warn)
def get_outdated_docs(self):
+ # type: () -> unicode
return 'coverage overview'
def write(self, *ignored):
- self.py_undoc = {}
+ # type: (Any) -> None
+ self.py_undoc = {} # type: Dict[unicode, Dict[unicode, Any]]
self.build_py_coverage()
self.write_py_coverage()
- self.c_undoc = {}
+ self.c_undoc = {} # type: Dict[unicode, Set[Tuple[unicode, unicode]]]
self.build_c_coverage()
self.write_c_coverage()
def build_c_coverage(self):
+ # type: () -> None
# Fetch all the info from the header files
c_objects = self.env.domaindata['c']['objects']
for filename in self.c_sourcefiles:
@@ -104,6 +115,7 @@ class CoverageBuilder(Builder):
self.c_undoc[filename] = undoc
def write_c_coverage(self):
+ # type: () -> None
output_file = path.join(self.outdir, 'c.txt')
with open(output_file, 'w') as op:
if self.config.coverage_write_headline:
@@ -117,6 +129,7 @@ class CoverageBuilder(Builder):
op.write('\n')
def build_py_coverage(self):
+ # type: () -> None
objects = self.env.domaindata['py']['objects']
modules = self.env.domaindata['py']['modules']
@@ -140,7 +153,7 @@ class CoverageBuilder(Builder):
continue
funcs = []
- classes = {}
+ classes = {} # type: Dict[unicode, List[unicode]]
for name, obj in inspect.getmembers(mod):
# diverse module attributes are ignored:
@@ -177,7 +190,7 @@ class CoverageBuilder(Builder):
classes[name] = []
continue
- attrs = []
+ attrs = [] # type: List[unicode]
for attr_name in dir(obj):
if attr_name not in obj.__dict__:
@@ -207,6 +220,7 @@ class CoverageBuilder(Builder):
self.py_undoc[mod_name] = {'funcs': funcs, 'classes': classes}
def write_py_coverage(self):
+ # type: () -> None
output_file = path.join(self.outdir, 'python.txt')
failed = []
with open(output_file, 'w') as op:
@@ -242,6 +256,7 @@ class CoverageBuilder(Builder):
op.writelines(' * %s -- %s\n' % x for x in failed)
def finish(self):
+ # type: () -> None
# dump the coverage data to a pickle file too
picklepath = path.join(self.outdir, 'undoc.pickle')
with open(picklepath, 'wb') as dumpfile:
@@ -249,6 +264,7 @@ class CoverageBuilder(Builder):
def setup(app):
+ # type: (Sphinx) -> Dict[unicode, Any]
app.add_builder(CoverageBuilder)
app.add_config_value('coverage_ignore_modules', [], False)
app.add_config_value('coverage_ignore_functions', [], False)