From bdc2112dbcbfb6405282a0c25a55141a5cd3d9b2 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Fri, 24 Sep 2021 01:51:08 +0900 Subject: [PATCH] Fix #9655: autodoc: mocked object having doc comment is warned unexpectedly A warning for mocked object should not be emitted if it has doc comment. --- CHANGES | 1 + sphinx/ext/autodoc/__init__.py | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 1f33b88a8..5900b031d 100644 --- a/CHANGES +++ b/CHANGES @@ -21,6 +21,7 @@ Bugs fixed * #9630: autodoc: Failed to build cross references if :confval:`primary_domain` is not 'py' * #9644: autodoc: Crashed on getting source info from problematic object +* #9655: autodoc: mocked object having doc comment is warned unexpectedly * #9630: autosummary: Failed to build summary table if :confval:`primary_domain` is not 'py' diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index 581de1829..a255c0691 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -913,10 +913,6 @@ class Documenter: if not self.import_object(): return - if ismock(self.object): - logger.warning(__('A mocked object is detected: %r'), - self.name, type='autodoc') - # If there is no real module defined, figure out which to use. # The real module is used in the module analyzer to look up the module # where the attribute documentation would actually be found in. @@ -949,6 +945,11 @@ class Documenter: except PycodeError: pass + docstrings: List[str] = sum(self.get_doc() or [], []) + if ismock(self.object) and not docstrings: + logger.warning(__('A mocked object is detected: %r'), + self.name, type='autodoc') + # check __module__ of object (for members not given explicitly) if check_module: if not self.check_module():