summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2021-04-18 14:36:51 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2021-04-19 01:12:00 +0900
commitda792470b66fcd88e915367100a64d6a51c1e0fd (patch)
treef642065aa9f6c2f4c63c553dd791e7872743ee36
parent9105635389e917804897e743fa639cbcbb394453 (diff)
downloadsphinx-git-da792470b66fcd88e915367100a64d6a51c1e0fd.tar.gz
Fix #9095: autodoc: TypeError is raised on processing broken metaclass
The logging module is crashed when the target object is a broken metaclass that raises a TypeError on `isinstance()`. This adds a workaround code to avoid the error.
-rw-r--r--CHANGES1
-rw-r--r--sphinx/ext/autodoc/importer.py9
2 files changed, 9 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 929638388..a13b2f3b9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -17,6 +17,7 @@ Features added
--------------
* #8818: autodoc: Super class having ``Any`` arguments causes nit-picky warning
+* #9095: autodoc: TypeError is raised on processing broken metaclass
* #9103: LaTeX: imgconverter: conversion runs even if not needed
* #8127: py domain: Ellipsis in info-field-list causes nit-picky warning
* #9023: More CSS classes on domain descriptions, see :ref:`nodes` for details.
diff --git a/sphinx/ext/autodoc/importer.py b/sphinx/ext/autodoc/importer.py
index ebb60b38b..1a8ea0973 100644
--- a/sphinx/ext/autodoc/importer.py
+++ b/sphinx/ext/autodoc/importer.py
@@ -108,7 +108,14 @@ def import_object(modname: str, objpath: List[str], objtype: str = '',
logger.debug('[autodoc] getattr(_, %r)', attrname)
mangled_name = mangle(obj, attrname)
obj = attrgetter(obj, mangled_name)
- logger.debug('[autodoc] => %r', obj)
+
+ try:
+ logger.debug('[autodoc] => %r', obj)
+ except TypeError:
+ # fallback of failure on logging for broken object
+ # refs: https://github.com/sphinx-doc/sphinx/issues/9095
+ logger.debug('[autodoc] => %r', (obj,))
+
object_name = attrname
return [module, parent, object_name, obj]
except (AttributeError, ImportError) as exc: