From 0f8debe55863e751ffa2c7ae064a43cf988f1d41 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 30 Dec 2020 23:08:29 +0900 Subject: [PATCH] Fix #8616: autodoc: AttributeError when non-class is passed to autoclass Since 3.4.0, AttributeError is raised when non-class object is passed to the autoclass directive. It has built successfully before 3.4.0 release. So this handles the exception on generating "alias" text. --- CHANGES | 2 ++ sphinx/ext/autodoc/__init__.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index b237781769a..0ddf4db763c 100644 --- a/CHANGES +++ b/CHANGES @@ -17,6 +17,8 @@ Bugs fixed ---------- * #8164: autodoc: Classes that inherit mocked class are not documented +* #8616: autodoc: AttributeError is raised on non-class object is passed to + autoclass directive Testing -------- diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index a1c642703db..7578ebab461 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -1662,7 +1662,11 @@ def get_doc(self, encoding: str = None, ignore: int = None) -> List[List[str]]: def add_content(self, more_content: Optional[StringList], no_docstring: bool = False ) -> None: if self.doc_as_attr: - more_content = StringList([_('alias of %s') % restify(self.object)], source='') + try: + more_content = StringList([_('alias of %s') % restify(self.object)], source='') + except AttributeError: + pass # Invalid class object is passed. + super().add_content(more_content, no_docstring=True) else: super().add_content(more_content)