diff options
author | Ralf Gommers <ralf.gommers@gmail.com> | 2019-04-18 01:01:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-18 01:01:28 +0200 |
commit | c2e8b8f5fea8f0adde207436869cec0841e85262 (patch) | |
tree | fe2169690f8d69793ff7a434dd93d8454aff4f2f | |
parent | 54e3cb0d4d8b667adcd3aa96b5553d745af97afa (diff) | |
parent | d4d34454b22ce2565ab80112f62b7edbd037bc25 (diff) | |
download | numpydoc-c2e8b8f5fea8f0adde207436869cec0841e85262.tar.gz |
Merge pull request #161 from jorisvandenbossche/attributes_as_param_list
Add option to use member listing for attributes
-rw-r--r-- | doc/install.rst | 5 | ||||
-rw-r--r-- | numpydoc/docscrape_sphinx.py | 7 | ||||
-rw-r--r-- | numpydoc/numpydoc.py | 5 | ||||
-rw-r--r-- | numpydoc/tests/test_docscrape.py | 37 | ||||
-rw-r--r-- | numpydoc/tests/test_numpydoc.py | 1 |
5 files changed, 52 insertions, 3 deletions
diff --git a/doc/install.rst b/doc/install.rst index 260b4ee..1fa0fde 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -42,6 +42,11 @@ numpydoc_use_blockquotes : bool Until version 0.8, parameter definitions were shown as blockquotes, rather than in a definition list. If your styling requires blockquotes, switch this config option to True. This option will be removed in version 0.10. +numpydoc_attributes_as_param_list : bool + Whether to format the Attributes section of a class page in the same way + as the Parameter section. If it's False, the Attributes section will be + formatted as the Methods section using an autosummary table. + ``True`` by default. numpydoc_edit_link : bool .. deprecated:: edit your HTML template instead diff --git a/numpydoc/docscrape_sphinx.py b/numpydoc/docscrape_sphinx.py index aad64c7..5f7843b 100644 --- a/numpydoc/docscrape_sphinx.py +++ b/numpydoc/docscrape_sphinx.py @@ -36,6 +36,7 @@ class SphinxDocString(NumpyDocString): self.use_plots = config.get('use_plots', False) self.use_blockquotes = config.get('use_blockquotes', False) self.class_members_toctree = config.get('class_members_toctree', True) + self.attributes_as_param_list = config.get('attributes_as_param_list', True) self.template = config.get('template', None) if self.template is None: template_dirs = [os.path.join(os.path.dirname(__file__), 'templates')] @@ -384,8 +385,10 @@ class SphinxDocString(NumpyDocString): 'notes': self._str_section('Notes'), 'references': self._str_references(), 'examples': self._str_examples(), - 'attributes': self._str_param_list('Attributes', - fake_autosummary=True), + 'attributes': + self._str_param_list('Attributes', fake_autosummary=True) + if self.attributes_as_param_list + else self._str_member_list('Attributes'), 'methods': self._str_member_list('Methods'), } ns = dict((k, '\n'.join(v)) for k, v in ns.items()) diff --git a/numpydoc/numpydoc.py b/numpydoc/numpydoc.py index e25241d..f6f262c 100644 --- a/numpydoc/numpydoc.py +++ b/numpydoc/numpydoc.py @@ -152,7 +152,9 @@ def mangle_docstrings(app, what, name, obj, options, lines): 'show_class_members': app.config.numpydoc_show_class_members, 'show_inherited_class_members': app.config.numpydoc_show_inherited_class_members, - 'class_members_toctree': app.config.numpydoc_class_members_toctree} + 'class_members_toctree': app.config.numpydoc_class_members_toctree, + 'attributes_as_param_list': + app.config.numpydoc_attributes_as_param_list} cfg.update(options or {}) u_NL = sixu('\n') @@ -227,6 +229,7 @@ def setup(app, get_doc_object_=get_doc_object): app.add_config_value('numpydoc_show_inherited_class_members', True, True) 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) # Extra mangling domains app.add_domain(NumpyPythonDomain) diff --git a/numpydoc/tests/test_docscrape.py b/numpydoc/tests/test_docscrape.py index 26509b9..c6f9d08 100644 --- a/numpydoc/tests/test_docscrape.py +++ b/numpydoc/tests/test_docscrape.py @@ -1295,6 +1295,43 @@ def test_class_members_doc_sphinx(): """) +def test_class_attributes_as_member_list(): + + class Foo: + """ + Class docstring. + + Attributes + ---------- + an_attribute + Another description that is not used. + + """ + @property + def an_attribute(self): + """Test attribute""" + return None + + attr_doc = """:Attributes: + + :obj:`an_attribute <an_attribute>` + Test attribute""" + + assert attr_doc in str(SphinxClassDoc(Foo)) + assert "Another description" not in str(SphinxClassDoc(Foo)) + + attr_doc2 = """.. rubric:: Attributes + +.. autosummary:: + :toctree: + + an_attribute""" + + cfg = dict(attributes_as_param_list=False) + assert attr_doc2 in str(SphinxClassDoc(Foo, config=cfg)) + assert "Another description" not in str(SphinxClassDoc(Foo, config=cfg)) + + def test_templated_sections(): doc = SphinxClassDoc(None, class_doc_txt, config={'template': jinja2.Template('{{examples}}\n{{parameters}}')}) diff --git a/numpydoc/tests/test_numpydoc.py b/numpydoc/tests/test_numpydoc.py index 3a0bd12..0fd3c37 100644 --- a/numpydoc/tests/test_numpydoc.py +++ b/numpydoc/tests/test_numpydoc.py @@ -13,6 +13,7 @@ class MockConfig(): templates_path = [] numpydoc_edit_link = False numpydoc_citation_re = '[a-z0-9_.-]+' + numpydoc_attributes_as_param_list = True class MockBuilder(): config = MockConfig() |