summaryrefslogtreecommitdiff
path: root/numpydoc
diff options
context:
space:
mode:
authorEric Larson <larson.eric.d@gmail.com>2022-07-13 08:55:05 -0400
committerGitHub <noreply@github.com>2022-07-13 08:55:05 -0400
commitd9c8d6766a20500015f53ffc12fb6b552014912b (patch)
tree1e535781814ec9f40b7f3bb4d14ab8a1f1755dbe /numpydoc
parentc796da669a9d3714126a3fde7221f9c47aef93c7 (diff)
downloadnumpydoc-d9c8d6766a20500015f53ffc12fb6b552014912b.tar.gz
ENH: Add support for dict show_inherited_class_members (#415)
* ENH: Add support for dict show_inherited_class_members * STY: Black * TST: Add test
Diffstat (limited to 'numpydoc')
-rw-r--r--numpydoc/numpydoc.py12
-rw-r--r--numpydoc/tests/test_numpydoc.py33
2 files changed, 42 insertions, 3 deletions
diff --git a/numpydoc/numpydoc.py b/numpydoc/numpydoc.py
index e656fb5..57016f9 100644
--- a/numpydoc/numpydoc.py
+++ b/numpydoc/numpydoc.py
@@ -162,12 +162,18 @@ DEDUPLICATION_TAG = " !! processed by numpydoc !!"
def mangle_docstrings(app, what, name, obj, options, lines):
if DEDUPLICATION_TAG in lines:
return
+ show_inherited_class_members = app.config.numpydoc_show_inherited_class_members
+ if isinstance(show_inherited_class_members, dict):
+ try:
+ show_inherited_class_members = show_inherited_class_members[name]
+ except KeyError:
+ show_inherited_class_members = True
cfg = {
"use_plots": app.config.numpydoc_use_plots,
"use_blockquotes": app.config.numpydoc_use_blockquotes,
"show_class_members": app.config.numpydoc_show_class_members,
- "show_inherited_class_members": app.config.numpydoc_show_inherited_class_members,
+ "show_inherited_class_members": show_inherited_class_members,
"class_members_toctree": app.config.numpydoc_class_members_toctree,
"attributes_as_param_list": app.config.numpydoc_attributes_as_param_list,
"xref_param_type": app.config.numpydoc_xref_param_type,
@@ -270,7 +276,9 @@ def setup(app, get_doc_object_=get_doc_object):
app.add_config_value("numpydoc_use_plots", None, False)
app.add_config_value("numpydoc_use_blockquotes", None, False)
app.add_config_value("numpydoc_show_class_members", True, True)
- app.add_config_value("numpydoc_show_inherited_class_members", True, True)
+ app.add_config_value(
+ "numpydoc_show_inherited_class_members", True, True, types=(bool, dict)
+ )
app.add_config_value("numpydoc_class_members_toctree", True, True)
app.add_config_value("numpydoc_citation_re", "[a-z0-9_.-]+", True)
app.add_config_value("numpydoc_attributes_as_param_list", True, True)
diff --git a/numpydoc/tests/test_numpydoc.py b/numpydoc/tests/test_numpydoc.py
index 0c8b6d6..d414b1c 100644
--- a/numpydoc/tests/test_numpydoc.py
+++ b/numpydoc/tests/test_numpydoc.py
@@ -1,5 +1,7 @@
import pytest
+from collections import defaultdict
from io import StringIO
+from pathlib import PosixPath
from copy import deepcopy
from numpydoc.numpydoc import mangle_docstrings, _clean_text_signature, update_config
from numpydoc.xref import DEFAULT_LINKS
@@ -41,7 +43,7 @@ class MockApp:
self.warningiserror = False
-def test_mangle_docstrings():
+def test_mangle_docstrings_basic():
s = """
A top section before
@@ -69,6 +71,35 @@ A top section before
assert "upper" not in [x.strip() for x in lines]
+def test_mangle_docstrings_inherited_class_members():
+ # if subclass docs are rendered, this PosixPath should have Path.samefile
+ p = """
+A top section before
+
+.. autoclass:: pathlib.PosixPath
+"""
+ lines = p.split("\n")
+ app = MockApp()
+ mangle_docstrings(app, "class", "pathlib.PosixPath", PosixPath, {}, lines)
+ lines = [x.strip() for x in lines]
+ assert "samefile" in lines
+ app.config.numpydoc_show_inherited_class_members = False
+ lines = p.split("\n")
+ mangle_docstrings(app, "class", "pathlib.PosixPath", PosixPath, {}, lines)
+ lines = [x.strip() for x in lines]
+ assert "samefile" not in lines
+ app.config.numpydoc_show_inherited_class_members = dict()
+ lines = p.split("\n")
+ mangle_docstrings(app, "class", "pathlib.PosixPath", PosixPath, {}, lines)
+ lines = [x.strip() for x in lines]
+ assert "samefile" in lines
+ app.config.numpydoc_show_inherited_class_members = defaultdict(lambda: False)
+ lines = p.split("\n")
+ mangle_docstrings(app, "class", "pathlib.PosixPath", PosixPath, {}, lines)
+ lines = [x.strip() for x in lines]
+ assert "samefile" not in lines
+
+
def test_clean_text_signature():
assert _clean_text_signature(None) is None
assert _clean_text_signature("func($self)") == "func()"