summaryrefslogtreecommitdiff
path: root/sphinx/ext/coverage.py
diff options
context:
space:
mode:
authorAdrián Chaves <adrian@chaves.io>2019-05-14 14:48:52 +0200
committerAdrián Chaves <adrian@chaves.io>2019-05-15 12:23:05 +0200
commite84ba7f78aa0e09750c12e38963d5f43ca599c26 (patch)
treedb4319b53936ffc473e88dd535fc18516b96cab3 /sphinx/ext/coverage.py
parentc81ae00430317be4d0811439e546c71a6412eb18 (diff)
downloadsphinx-git-e84ba7f78aa0e09750c12e38963d5f43ca599c26.tar.gz
Support coverage_ignore_pyobjects in the coverage builder
Diffstat (limited to 'sphinx/ext/coverage.py')
-rw-r--r--sphinx/ext/coverage.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/sphinx/ext/coverage.py b/sphinx/ext/coverage.py
index 63beecd61..6c9489046 100644
--- a/sphinx/ext/coverage.py
+++ b/sphinx/ext/coverage.py
@@ -79,6 +79,8 @@ class CoverageBuilder(Builder):
self.config.coverage_ignore_classes)
self.fun_ignorexps = compile_regex_list('coverage_ignore_functions',
self.config.coverage_ignore_functions)
+ self.py_ignorexps = compile_regex_list('coverage_ignore_pyobjects',
+ self.config.coverage_ignore_pyobjects)
def get_outdated_docs(self):
# type: () -> str
@@ -130,6 +132,12 @@ class CoverageBuilder(Builder):
op.write(' * %-50s [%9s]\n' % (name, typ))
op.write('\n')
+ def ignore_pyobj(self, full_name):
+ for exp in self.py_ignorexps:
+ if exp.search(full_name):
+ return True
+ return False
+
def build_py_coverage(self):
# type: () -> None
objects = self.env.domaindata['py']['objects']
@@ -143,7 +151,7 @@ class CoverageBuilder(Builder):
if exp.match(mod_name):
ignore = True
break
- if ignore:
+ if ignore or self.ignore_pyobj(mod_name):
continue
try:
@@ -169,6 +177,8 @@ class CoverageBuilder(Builder):
continue
full_name = '%s.%s' % (mod_name, name)
+ if self.ignore_pyobj(full_name):
+ continue
if inspect.isfunction(obj):
if full_name not in objects:
@@ -209,11 +219,11 @@ class CoverageBuilder(Builder):
if skip_undoc and not attr.__doc__:
# skip methods without docstring if wished
continue
-
full_attr_name = '%s.%s' % (full_name, attr_name)
+ if self.ignore_pyobj(full_attr_name):
+ continue
if full_attr_name not in objects:
attrs.append(attr_name)
-
if attrs:
# some attributes are undocumented
classes[name] = attrs
@@ -270,6 +280,7 @@ def setup(app):
app.add_config_value('coverage_ignore_modules', [], False)
app.add_config_value('coverage_ignore_functions', [], False)
app.add_config_value('coverage_ignore_classes', [], False)
+ app.add_config_value('coverage_ignore_pyobjects', [], False)
app.add_config_value('coverage_c_path', [], False)
app.add_config_value('coverage_c_regexes', {}, False)
app.add_config_value('coverage_ignore_c_items', {}, False)