Refactor: all of warnfuncs bypasses kwargs to Sphinx.warn()

This commit is contained in:
Takeshi KOMIYA
2016-02-23 00:39:21 +09:00
parent 041aa6055f
commit ea5fd7284c
2 changed files with 19 additions and 16 deletions
+12 -9
View File
@@ -260,12 +260,12 @@ class Builder(object):
# while reading, collect all warnings from docutils
warnings = []
self.env.set_warnfunc(lambda *args: warnings.append(args))
self.env.set_warnfunc(lambda *args, **kwargs: warnings.append((args, kwargs)))
updated_docnames = set(self.env.update(self.config, self.srcdir,
self.doctreedir, self.app))
self.env.set_warnfunc(self.warn)
for warning in warnings:
self.warn(*warning)
for warning, kwargs in warnings:
self.warn(*warning, **kwargs)
doccount = len(updated_docnames)
self.info(bold('looking for now-outdated files... '), nonl=1)
@@ -350,7 +350,7 @@ class Builder(object):
self.info('done')
warnings = []
self.env.set_warnfunc(lambda *args: warnings.append(args))
self.env.set_warnfunc(lambda *args, **kwargs: warnings.append((args, kwargs)))
if self.parallel_ok:
# number of subprocesses is parallel-1 because the main process
# is busy loading doctrees and doing write_doc_serialized()
@@ -366,13 +366,16 @@ class Builder(object):
doctree = self.env.get_and_resolve_doctree(docname, self)
self.write_doc_serialized(docname, doctree)
self.write_doc(docname, doctree)
for warning in warnings:
self.warn(*warning)
for warning, kwargs in warnings:
self.warn(*warning, **kwargs)
def _write_parallel(self, docnames, warnings, nproc):
def write_process(docs):
local_warnings = []
self.env.set_warnfunc(lambda *args: local_warnings.append(args))
def warnfunc(*args, **kwargs):
local_warnings.append((args, kwargs))
self.env.set_warnfunc(warnfunc)
for docname, doctree in docs:
self.write_doc(docname, doctree)
return local_warnings
@@ -402,8 +405,8 @@ class Builder(object):
self.info(bold('waiting for workers...'))
tasks.join()
for warning in warnings:
self.warn(*warning)
for warning, kwargs in warnings:
self.warn(*warning, **kwargs)
def prepare_writing(self, docnames):
"""A place where you can add logic before :meth:`write_doc` is run"""
+7 -7
View File
@@ -242,7 +242,7 @@ class BuildEnvironment:
self.versioning_condition = condition
self.versioning_compare = compare
def warn(self, docname, msg, lineno=None):
def warn(self, docname, msg, lineno=None, **kwargs):
"""Emit a warning.
This differs from using ``app.warn()`` in that the warning may not
@@ -250,11 +250,11 @@ class BuildEnvironment:
the update of the environment.
"""
# strange argument order is due to backwards compatibility
self._warnfunc(msg, (docname, lineno))
self._warnfunc(msg, (docname, lineno), **kwargs)
def warn_node(self, msg, node):
def warn_node(self, msg, node, **kwargs):
"""Like :meth:`warn`, but with source information taken from *node*."""
self._warnfunc(msg, '%s:%s' % get_source_line(node))
self._warnfunc(msg, '%s:%s' % get_source_line(node), **kwargs)
def clear_doc(self, docname):
"""Remove all traces of a source file in the inventory."""
@@ -576,7 +576,7 @@ class BuildEnvironment:
def read_process(docs):
self.app = app
self.warnings = []
self.set_warnfunc(lambda *args: self.warnings.append(args))
self.set_warnfunc(lambda *args, **kwargs: self.warnings.append((args, kwargs)))
for docname in docs:
self.read_doc(docname, app)
# allow pickling self to send it back
@@ -603,8 +603,8 @@ class BuildEnvironment:
app.info(bold('waiting for workers...'))
tasks.join()
for warning in warnings:
self._warnfunc(*warning)
for warning, kwargs in warnings:
self._warnfunc(*warning, **kwargs)
def check_dependents(self, already):
to_rewrite = self.assign_section_numbers() + self.assign_figure_numbers()