Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSolidifiedRay <yc3346@nyu.edu>2021-01-05 23:40:25 +0300
committerSolidifiedRay <yc3346@nyu.edu>2021-01-18 22:43:40 +0300
commit7ad85cd1e0e2c020cb649c720ef230d147aff0df (patch)
treed581a079c7d5882d4f9caacd792cc977d7f50144 /sphinx/ext
parent1b7d16505ea6e77586c6c4f4afc15a3e73116d80 (diff)
Close #8573: napoleon: Add more custom section styles
Diffstat (limited to 'sphinx/ext')
-rw-r--r--sphinx/ext/napoleon/__init__.py7
-rw-r--r--sphinx/ext/napoleon/docstring.py24
2 files changed, 25 insertions, 6 deletions
diff --git a/sphinx/ext/napoleon/__init__.py b/sphinx/ext/napoleon/__init__.py
index 5b2715bac..4a8c2135a 100644
--- a/sphinx/ext/napoleon/__init__.py
+++ b/sphinx/ext/napoleon/__init__.py
@@ -253,10 +253,15 @@ class Config:
* To create a custom "generic" section, just pass a string.
* To create an alias for an existing section, pass a tuple containing the
alias name and the original, in that order.
+ * To create a custom section that displays like the parameters or returns
+ section, pass a tuple containing the custom section name and a string
+ value, "params_style" or "returns_style".
If an entry is just a string, it is interpreted as a header for a generic
section. If the entry is a tuple/list/indexed container, the first entry
- is the name of the section, the second is the section key to emulate.
+ is the name of the section, the second is the section key to emulate. If the
+ second entry value is "params_style" or "returns_style", the custom section
+ will be displayed like the parameters section or returns section.
napoleon_attr_annotations : :obj:`bool` (Defaults to True)
Use the type annotations of class attributes that are documented in the docstring
diff --git a/sphinx/ext/napoleon/docstring.py b/sphinx/ext/napoleon/docstring.py
index 141be022e..b6408427a 100644
--- a/sphinx/ext/napoleon/docstring.py
+++ b/sphinx/ext/napoleon/docstring.py
@@ -549,11 +549,18 @@ class GoogleDocstring:
self._sections[entry.lower()] = self._parse_custom_generic_section
else:
# otherwise, assume entry is container;
- # [0] is new section, [1] is the section to alias.
- # in the case of key mismatch, just handle as generic section.
- self._sections[entry[0].lower()] = \
- self._sections.get(entry[1].lower(),
- self._parse_custom_generic_section)
+ if entry[1] == "params_style":
+ self._sections[entry[0].lower()] = \
+ self._parse_custom_params_style_section
+ elif entry[1] == "returns_style":
+ self._sections[entry[0].lower()] = \
+ self._parse_custom_returns_style_section
+ else:
+ # [0] is new section, [1] is the section to alias.
+ # in the case of key mismatch, just handle as generic section.
+ self._sections[entry[0].lower()] = \
+ self._sections.get(entry[1].lower(),
+ self._parse_custom_generic_section)
def _parse(self) -> None:
self._parsed_lines = self._consume_empty()
@@ -641,6 +648,13 @@ class GoogleDocstring:
# for now, no admonition for simple custom sections
return self._parse_generic_section(section, False)
+ def _parse_custom_params_style_section(self, section: str) -> List[str]:
+ return self._format_fields(section, self._consume_fields())
+
+ def _parse_custom_returns_style_section(self, section: str) -> List[str]:
+ fields = self._consume_returns_section()
+ return self._format_fields(section, fields)
+
def _parse_usage_section(self, section: str) -> List[str]:
header = ['.. rubric:: Usage:', '']
block = ['.. code-block:: python', '']