From 41f598915cb6358b2aa222be74d1fb983d5face8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A9n=C3=A9dikt=20Tran?= <10796600+picnixz@users.noreply.github.com> Date: Sun, 4 Jun 2023 12:12:35 +0200 Subject: [PATCH] Improve traceback message in parallel build (#11451) --- CHANGES | 2 ++ sphinx/cmd/build.py | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index e66f11cbf7e..ce1c417ad1d 100644 --- a/CHANGES +++ b/CHANGES @@ -18,6 +18,8 @@ Deprecated Features added -------------- +* #11451: Improve the traceback displayed when using :option:`-T` in parallel + builds. Patch by Bénédikt Tran * #11415: Add a checksum to JavaScript and CSS asset URIs included within generated HTML, using the CRC32 algorithm. * :meth:`~sphinx.application.Sphinx.require_sphinx` now allows the version diff --git a/sphinx/cmd/build.py b/sphinx/cmd/build.py index ecc2a7d2cdd..4f427e0628f 100644 --- a/sphinx/cmd/build.py +++ b/sphinx/cmd/build.py @@ -18,7 +18,7 @@ import sphinx.locale from sphinx import __display_version__ from sphinx.application import Sphinx -from sphinx.errors import SphinxError +from sphinx.errors import SphinxError, SphinxParallelError from sphinx.locale import __ from sphinx.util import Tee from sphinx.util.console import color_terminal, nocolor, red, terminal_safe # type: ignore @@ -41,8 +41,13 @@ def handle_exception( else: print(file=stderr) if args.verbosity or args.traceback: - traceback.print_exc(None, stderr) - print(file=stderr) + exc = sys.exc_info()[1] + if isinstance(exc, SphinxParallelError): + exc_format = '(Error in parallel process)\n' + exc.traceback + print(exc_format, file=stderr) + else: + traceback.print_exc(None, stderr) + print(file=stderr) if isinstance(exception, KeyboardInterrupt): print(__('Interrupted!'), file=stderr) elif isinstance(exception, SystemMessage):