diff --git a/sphinx/ext/napoleon/docstring.py b/sphinx/ext/napoleon/docstring.py index 7f6f21d32..48daa8ada 100644 --- a/sphinx/ext/napoleon/docstring.py +++ b/sphinx/ext/napoleon/docstring.py @@ -904,7 +904,7 @@ def _token_type(token): def _convert_numpy_type_spec(_type, translations={}): def convert_obj(obj, translations, default_translation): # use :class: (the default) only if obj is not a standard singleton (None, True, False) - if obj in (None, True, False) and default_translation == ":class:`{}`": + if obj in ("None", "True", "False") and default_translation == ":class:`{}`": default_translation = ":obj:`{}`" return translations.get(obj, default_translation.format(obj)) diff --git a/tests/test_ext_napoleon_docstring.py b/tests/test_ext_napoleon_docstring.py index 7aa7b2ea2..18eddb72a 100644 --- a/tests/test_ext_napoleon_docstring.py +++ b/tests/test_ext_napoleon_docstring.py @@ -2126,8 +2126,8 @@ definition_after_normal_text : int converted_types = ( "", - ":obj:`str`", - ":obj:`int` or :obj:`float` or :obj:`None`", + ":class:`str`", + ":class:`int` or :class:`float` or :obj:`None`", '``{"F", "C", "N"}``', "``{'F', 'C', 'N'}``", ) @@ -2171,11 +2171,11 @@ definition_after_normal_text : int :param param1: the data to work on :type param1: DataFrame :param param2: a parameter with different types - :type param2: :obj:`int` or :obj:`float` or :obj:`None` + :type param2: :class:`int` or :class:`float` or :obj:`None` :param param3: a optional mapping :type param3: :term:`dict-like `, *optional* :param param4: a optional parameter with different types - :type param4: :obj:`int` or :obj:`float` or :obj:`None`, *optional* + :type param4: :class:`int` or :class:`float` or :obj:`None`, *optional* :param param5: a optional parameter with fixed values :type param5: ``{"F", "C", "N"}``, *optional* """)