Skip to content

Commit

Permalink
Fix sphinx-doc#7802: autodoc: EOFError is raised on parallel build
Browse files Browse the repository at this point in the history
sphinx-build has crashed with EOFError when autodoc raises a warning
having exc_info under parallel mode.  In parallel mode, all messages
are pickled to transfer logs to parent process.  But the warning is
not picklable because it contains a traceback object.

This removes exc_info from warning messages to prevent crashes.
  • Loading branch information
tk0miya committed Jun 11, 2020
1 parent 9df73e6 commit f8ad3c8
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGES
Expand Up @@ -16,6 +16,7 @@ Features added
Bugs fixed
----------

* #7802: autodoc: EOFError is raised on parallel build
* #7811: sphinx.util.inspect causes circular import problem

Testing
Expand Down
10 changes: 5 additions & 5 deletions sphinx/ext/autodoc/__init__.py
Expand Up @@ -422,9 +422,9 @@ def format_signature(self, **kwargs: Any) -> str:
if matched:
args = matched.group(1)
retann = matched.group(2)
except Exception:
logger.warning(__('error while formatting arguments for %s:') %
self.fullname, type='autodoc', exc_info=True)
except Exception as exc:
logger.warning(__('error while formatting arguments for %s: %s'),
self.fullname, exc, type='autodoc')
args = None

result = self.env.events.emit_firstresult('autodoc-process-signature',
Expand Down Expand Up @@ -795,8 +795,8 @@ def generate(self, more_content: Any = None, real_modname: str = None,
# parse right now, to get PycodeErrors on parsing (results will
# be cached anyway)
self.analyzer.find_attr_docs()
except PycodeError:
logger.debug('[autodoc] module analyzer failed:', exc_info=True)
except PycodeError as exc:
logger.debug('[autodoc] module analyzer failed: %s', exc)
# no source file -- e.g. for builtin and C modules
self.analyzer = None
# at least add the module.__file__ as a dependency
Expand Down

0 comments on commit f8ad3c8

Please sign in to comment.