Skip to content

Commit 48cbb43

Browse files
methanepicnixz
andauthored
[console] improve progress_message context (#12387)
This allows statements executed within a ``progress_message`` context to emit log messages without polluting the console output. Co-authored-by: Bénédikt Tran <[email protected]>
1 parent 9cc0ea1 commit 48cbb43

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

sphinx/builders/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ def write(
559559
with progress_message(__('preparing documents')):
560560
self.prepare_writing(docnames)
561561

562-
with progress_message(__('copying assets')):
562+
with progress_message(__('copying assets'), nonl=False):
563563
self.copy_assets()
564564

565565
if self.parallel_ok:

sphinx/util/display.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -62,27 +62,29 @@ class SkipProgressMessage(Exception):
6262

6363

6464
class progress_message:
65-
def __init__(self, message: str) -> None:
65+
def __init__(self, message: str, *, nonl: bool = True) -> None:
6666
self.message = message
67+
self.nonl = nonl
6768

6869
def __enter__(self) -> None:
69-
logger.info(bold(self.message + '... '), nonl=True)
70+
logger.info(bold(self.message + '... '), nonl=self.nonl)
7071

7172
def __exit__(
7273
self,
7374
typ: type[BaseException] | None,
7475
val: BaseException | None,
7576
tb: TracebackType | None,
7677
) -> bool:
78+
prefix = "" if self.nonl else bold(self.message + ': ')
7779
if isinstance(val, SkipProgressMessage):
78-
logger.info(__('skipped'))
80+
logger.info(prefix + __('skipped'))
7981
if val.args:
8082
logger.info(*val.args)
8183
return True
8284
elif val:
83-
logger.info(__('failed'))
85+
logger.info(prefix + __('failed'))
8486
else:
85-
logger.info(__('done'))
87+
logger.info(prefix + __('done'))
8688

8789
return False
8890

0 commit comments

Comments
 (0)