Merge pull request #5935 from tk0miya/refactor_progress_message

Add progress_message() as a helper for progress messages
This commit is contained in:
Takeshi KOMIYA
2019-01-13 18:35:05 +09:00
committed by GitHub
2 changed files with 36 additions and 8 deletions

View File

@@ -35,7 +35,7 @@ from sphinx.locale import __
from sphinx.project import Project
from sphinx.registry import SphinxComponentRegistry
from sphinx.util import docutils
from sphinx.util import import_object
from sphinx.util import import_object, progress_message
from sphinx.util import logging
from sphinx.util import pycompat # noqa: F401
from sphinx.util.build_phase import BuildPhase
@@ -230,8 +230,8 @@ class Sphinx:
self.preload_builder(buildername)
if not path.isdir(outdir):
logger.info(__('making output directory...'))
ensuredir(outdir)
with progress_message(__('making output directory')):
ensuredir(outdir)
# the config file itself can be an extension
if self.config.setup:
@@ -294,11 +294,10 @@ class Sphinx:
self.env.find_files(self.config, self.builder)
else:
try:
logger.info(bold(__('loading pickled environment... ')), nonl=True)
with open(filename, 'rb') as f:
self.env = pickle.load(f)
self.env.setup(self)
logger.info(__('done'))
with progress_message(__('loading pickled environment')):
with open(filename, 'rb') as f:
self.env = pickle.load(f)
self.env.setup(self)
except Exception as err:
logger.info(__('failed: %s'), err)
self._init_env(freshenv=True)

View File

@@ -9,6 +9,7 @@
"""
import fnmatch
import functools
import os
import posixpath
import re
@@ -675,6 +676,34 @@ def status_iterator(iterable, summary, color="darkgreen", length=0, verbosity=0,
logger.info('')
class progress_message:
def __init__(self, message):
# type: (str) -> None
self.message = message
def __enter__(self):
# type: () -> None
logger.info(bold(self.message + '... '), nonl=True)
def __exit__(self, exc_type, exc_value, traceback):
# type: (Any, Any, Any) -> bool
if exc_type:
logger.info(__('failed'))
else:
logger.info(__('done'))
return False
def __call__(self, f):
# type: (Callable) -> Callable
@functools.wraps(f)
def wrapper(*args, **kwargs):
with self:
return f(*args, **kwargs)
return wrapper
def epoch_to_rfc1123(epoch):
# type: (float) -> str
"""Convert datetime format epoch to RFC1123."""