diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-04-18 14:36:51 +0900 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-04-19 01:12:00 +0900 |
commit | da792470b66fcd88e915367100a64d6a51c1e0fd (patch) | |
tree | f642065aa9f6c2f4c63c553dd791e7872743ee36 | |
parent | 9105635389e917804897e743fa639cbcbb394453 (diff) | |
download | sphinx-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-- | CHANGES | 1 | ||||
-rw-r--r-- | sphinx/ext/autodoc/importer.py | 9 |
2 files changed, 9 insertions, 1 deletions
@@ -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: |