mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #8050 from keewis/preprocess-other-sections
Preprocess other sections
This commit is contained in:
@@ -699,6 +699,9 @@ class GoogleDocstring:
|
|||||||
m = self._name_rgx.match(_type)
|
m = self._name_rgx.match(_type)
|
||||||
if m and m.group('name'):
|
if m and m.group('name'):
|
||||||
_type = m.group('name')
|
_type = m.group('name')
|
||||||
|
elif _xref_regex.match(_type):
|
||||||
|
pos = _type.find('`')
|
||||||
|
_type = _type[pos + 1:-1]
|
||||||
_type = ' ' + _type if _type else ''
|
_type = ' ' + _type if _type else ''
|
||||||
_desc = self._strip_empty(_desc)
|
_desc = self._strip_empty(_desc)
|
||||||
_descs = ' ' + '\n '.join(_desc) if any(_desc) else ''
|
_descs = ' ' + '\n '.join(_desc) if any(_desc) else ''
|
||||||
@@ -1104,6 +1107,10 @@ class NumpyDocstring(GoogleDocstring):
|
|||||||
_name, _type = line, ''
|
_name, _type = line, ''
|
||||||
_name, _type = _name.strip(), _type.strip()
|
_name, _type = _name.strip(), _type.strip()
|
||||||
_name = self._escape_args_and_kwargs(_name)
|
_name = self._escape_args_and_kwargs(_name)
|
||||||
|
|
||||||
|
if prefer_type and not _type:
|
||||||
|
_type, _name = _name, _type
|
||||||
|
|
||||||
if self._config.napoleon_preprocess_types:
|
if self._config.napoleon_preprocess_types:
|
||||||
_type = _convert_numpy_type_spec(
|
_type = _convert_numpy_type_spec(
|
||||||
_type,
|
_type,
|
||||||
@@ -1111,8 +1118,6 @@ class NumpyDocstring(GoogleDocstring):
|
|||||||
translations=self._config.napoleon_type_aliases or {},
|
translations=self._config.napoleon_type_aliases or {},
|
||||||
)
|
)
|
||||||
|
|
||||||
if prefer_type and not _type:
|
|
||||||
_type, _name = _name, _type
|
|
||||||
indent = self._get_indent(line) + 1
|
indent = self._get_indent(line) + 1
|
||||||
_desc = self._dedent(self._consume_indented_block(indent))
|
_desc = self._dedent(self._consume_indented_block(indent))
|
||||||
_desc = self.__class__(_desc, self._config).lines()
|
_desc = self.__class__(_desc, self._config).lines()
|
||||||
|
|||||||
@@ -1177,7 +1177,7 @@ class NumpyDocstringTest(BaseDocstringTest):
|
|||||||
"""
|
"""
|
||||||
Single line summary
|
Single line summary
|
||||||
|
|
||||||
:returns: *str* -- Extended
|
:returns: :class:`str` -- Extended
|
||||||
description of return value
|
description of return value
|
||||||
"""
|
"""
|
||||||
), (
|
), (
|
||||||
@@ -1193,7 +1193,7 @@ class NumpyDocstringTest(BaseDocstringTest):
|
|||||||
"""
|
"""
|
||||||
Single line summary
|
Single line summary
|
||||||
|
|
||||||
:returns: *str* -- Extended
|
:returns: :class:`str` -- Extended
|
||||||
description of return value
|
description of return value
|
||||||
"""
|
"""
|
||||||
), (
|
), (
|
||||||
@@ -1246,7 +1246,7 @@ class NumpyDocstringTest(BaseDocstringTest):
|
|||||||
"""
|
"""
|
||||||
Single line summary
|
Single line summary
|
||||||
|
|
||||||
:Yields: *str* -- Extended
|
:Yields: :class:`str` -- Extended
|
||||||
description of yielded value
|
description of yielded value
|
||||||
"""
|
"""
|
||||||
), (
|
), (
|
||||||
@@ -1262,7 +1262,7 @@ class NumpyDocstringTest(BaseDocstringTest):
|
|||||||
"""
|
"""
|
||||||
Single line summary
|
Single line summary
|
||||||
|
|
||||||
:Yields: *str* -- Extended
|
:Yields: :class:`str` -- Extended
|
||||||
description of yielded value
|
description of yielded value
|
||||||
"""
|
"""
|
||||||
)]
|
)]
|
||||||
@@ -1555,6 +1555,52 @@ arg_ : type
|
|||||||
|
|
||||||
self.assertEqual(expected, actual)
|
self.assertEqual(expected, actual)
|
||||||
|
|
||||||
|
def test_return_types(self):
|
||||||
|
docstring = dedent("""
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
DataFrame
|
||||||
|
a dataframe
|
||||||
|
""")
|
||||||
|
expected = dedent("""
|
||||||
|
:returns: a dataframe
|
||||||
|
:rtype: :class:`~pandas.DataFrame`
|
||||||
|
""")
|
||||||
|
translations = {
|
||||||
|
"DataFrame": "~pandas.DataFrame",
|
||||||
|
}
|
||||||
|
config = Config(
|
||||||
|
napoleon_use_param=True,
|
||||||
|
napoleon_use_rtype=True,
|
||||||
|
napoleon_preprocess_types=True,
|
||||||
|
napoleon_type_aliases=translations,
|
||||||
|
)
|
||||||
|
actual = str(NumpyDocstring(docstring, config))
|
||||||
|
self.assertEqual(expected, actual)
|
||||||
|
|
||||||
|
def test_yield_types(self):
|
||||||
|
docstring = dedent("""
|
||||||
|
Example Function
|
||||||
|
|
||||||
|
Yields
|
||||||
|
------
|
||||||
|
scalar or array-like
|
||||||
|
The result of the computation
|
||||||
|
""")
|
||||||
|
expected = dedent("""
|
||||||
|
Example Function
|
||||||
|
|
||||||
|
:Yields: :term:`scalar` or :class:`array-like <numpy.ndarray>` -- The result of the computation
|
||||||
|
""")
|
||||||
|
translations = {
|
||||||
|
"scalar": ":term:`scalar`",
|
||||||
|
"array-like": ":class:`array-like <numpy.ndarray>`",
|
||||||
|
}
|
||||||
|
config = Config(napoleon_type_aliases=translations, napoleon_preprocess_types=True)
|
||||||
|
app = mock.Mock()
|
||||||
|
actual = str(NumpyDocstring(docstring, config, app, "method"))
|
||||||
|
self.assertEqual(expected, actual)
|
||||||
|
|
||||||
def test_raises_types(self):
|
def test_raises_types(self):
|
||||||
docstrings = [("""
|
docstrings = [("""
|
||||||
Example Function
|
Example Function
|
||||||
@@ -1719,6 +1765,34 @@ Example Function
|
|||||||
("""
|
("""
|
||||||
Example Function
|
Example Function
|
||||||
|
|
||||||
|
Raises
|
||||||
|
------
|
||||||
|
CustomError
|
||||||
|
If the dimensions couldn't be parsed.
|
||||||
|
|
||||||
|
""", """
|
||||||
|
Example Function
|
||||||
|
|
||||||
|
:raises package.CustomError: If the dimensions couldn't be parsed.
|
||||||
|
"""),
|
||||||
|
################################
|
||||||
|
("""
|
||||||
|
Example Function
|
||||||
|
|
||||||
|
Raises
|
||||||
|
------
|
||||||
|
AnotherError
|
||||||
|
If the dimensions couldn't be parsed.
|
||||||
|
|
||||||
|
""", """
|
||||||
|
Example Function
|
||||||
|
|
||||||
|
:raises ~package.AnotherError: If the dimensions couldn't be parsed.
|
||||||
|
"""),
|
||||||
|
################################
|
||||||
|
("""
|
||||||
|
Example Function
|
||||||
|
|
||||||
Raises
|
Raises
|
||||||
------
|
------
|
||||||
:class:`exc.InvalidDimensionsError`
|
:class:`exc.InvalidDimensionsError`
|
||||||
@@ -1731,7 +1805,11 @@ Example Function
|
|||||||
:raises exc.InvalidArgumentsError:
|
:raises exc.InvalidArgumentsError:
|
||||||
""")]
|
""")]
|
||||||
for docstring, expected in docstrings:
|
for docstring, expected in docstrings:
|
||||||
config = Config()
|
translations = {
|
||||||
|
"CustomError": "package.CustomError",
|
||||||
|
"AnotherError": ":py:exc:`~package.AnotherError`",
|
||||||
|
}
|
||||||
|
config = Config(napoleon_type_aliases=translations, napoleon_preprocess_types=True)
|
||||||
app = mock.Mock()
|
app = mock.Mock()
|
||||||
actual = str(NumpyDocstring(docstring, config, app, "method"))
|
actual = str(NumpyDocstring(docstring, config, app, "method"))
|
||||||
self.assertEqual(expected, actual)
|
self.assertEqual(expected, actual)
|
||||||
|
|||||||
Reference in New Issue
Block a user