mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Create an instance of builder before initialize env
This commit is contained in:
parent
d4d106e7b7
commit
cd3f48bb76
@ -122,7 +122,6 @@ class Sphinx(object):
|
|||||||
self._additional_source_parsers = {} # type: Dict[unicode, Parser]
|
self._additional_source_parsers = {} # type: Dict[unicode, Parser]
|
||||||
self._setting_up_extension = ['?'] # type: List[unicode]
|
self._setting_up_extension = ['?'] # type: List[unicode]
|
||||||
self.domains = {} # type: Dict[unicode, Type[Domain]]
|
self.domains = {} # type: Dict[unicode, Type[Domain]]
|
||||||
self.buildername = buildername
|
|
||||||
self.builderclasses = {} # type: Dict[unicode, Type[Builder]]
|
self.builderclasses = {} # type: Dict[unicode, Type[Builder]]
|
||||||
self.builder = None # type: Builder
|
self.builder = None # type: Builder
|
||||||
self.env = None # type: BuildEnvironment
|
self.env = None # type: BuildEnvironment
|
||||||
@ -241,6 +240,8 @@ class Sphinx(object):
|
|||||||
logger.warning(_('primary_domain %r not found, ignored.'),
|
logger.warning(_('primary_domain %r not found, ignored.'),
|
||||||
self.config.primary_domain)
|
self.config.primary_domain)
|
||||||
|
|
||||||
|
# create the builder
|
||||||
|
self.builder = self.create_builder(buildername)
|
||||||
# check all configuration values for permissible types
|
# check all configuration values for permissible types
|
||||||
self.config.check_types()
|
self.config.check_types()
|
||||||
# set up source_parsers
|
# set up source_parsers
|
||||||
@ -248,7 +249,7 @@ class Sphinx(object):
|
|||||||
# set up the build environment
|
# set up the build environment
|
||||||
self._init_env(freshenv)
|
self._init_env(freshenv)
|
||||||
# set up the builder
|
# set up the builder
|
||||||
self._init_builder(self.buildername)
|
self._init_builder()
|
||||||
# set up the enumerable nodes
|
# set up the enumerable nodes
|
||||||
self._init_enumerable_nodes()
|
self._init_enumerable_nodes()
|
||||||
|
|
||||||
@ -290,7 +291,7 @@ class Sphinx(object):
|
|||||||
# type: (bool) -> None
|
# type: (bool) -> None
|
||||||
if freshenv:
|
if freshenv:
|
||||||
self.env = BuildEnvironment(self)
|
self.env = BuildEnvironment(self)
|
||||||
self.env.find_files(self.config, self.buildername)
|
self.env.find_files(self.config, self.builder.name)
|
||||||
for domain in self.domains.keys():
|
for domain in self.domains.keys():
|
||||||
self.env.domains[domain] = self.domains[domain](self.env)
|
self.env.domains[domain] = self.domains[domain](self.env)
|
||||||
else:
|
else:
|
||||||
@ -310,8 +311,8 @@ class Sphinx(object):
|
|||||||
logger.info(_('failed: %s'), err)
|
logger.info(_('failed: %s'), err)
|
||||||
self._init_env(freshenv=True)
|
self._init_env(freshenv=True)
|
||||||
|
|
||||||
def _init_builder(self, buildername):
|
def create_builder(self, buildername):
|
||||||
# type: (unicode) -> None
|
# type: (unicode) -> Builder
|
||||||
if buildername is None:
|
if buildername is None:
|
||||||
logger.info(_('No builder selected, using default: html'))
|
logger.info(_('No builder selected, using default: html'))
|
||||||
buildername = 'html'
|
buildername = 'html'
|
||||||
@ -319,7 +320,12 @@ class Sphinx(object):
|
|||||||
raise SphinxError(_('Builder name %s not registered') % buildername)
|
raise SphinxError(_('Builder name %s not registered') % buildername)
|
||||||
|
|
||||||
builderclass = self.builderclasses[buildername]
|
builderclass = self.builderclasses[buildername]
|
||||||
self.builder = builderclass(self)
|
return builderclass(self)
|
||||||
|
|
||||||
|
def _init_builder(self):
|
||||||
|
# type: () -> None
|
||||||
|
self.builder.set_environment(self.env)
|
||||||
|
self.builder.init()
|
||||||
self.emit('builder-inited')
|
self.emit('builder-inited')
|
||||||
|
|
||||||
def _init_enumerable_nodes(self):
|
def _init_enumerable_nodes(self):
|
||||||
@ -327,6 +333,12 @@ class Sphinx(object):
|
|||||||
for node, settings in iteritems(self.enumerable_nodes):
|
for node, settings in iteritems(self.enumerable_nodes):
|
||||||
self.env.get_domain('std').enumerable_nodes[node] = settings # type: ignore
|
self.env.get_domain('std').enumerable_nodes[node] = settings # type: ignore
|
||||||
|
|
||||||
|
@property
|
||||||
|
def buildername(self):
|
||||||
|
# type: () -> unicode
|
||||||
|
warnings.warn('app.buildername is deprecated.', RemovedInSphinx17Warning)
|
||||||
|
return self.builder.name
|
||||||
|
|
||||||
# ---- main "build" method -------------------------------------------------
|
# ---- main "build" method -------------------------------------------------
|
||||||
|
|
||||||
def build(self, force_all=False, filenames=None):
|
def build(self, force_all=False, filenames=None):
|
||||||
|
@ -60,9 +60,6 @@ class Builder(object):
|
|||||||
|
|
||||||
def __init__(self, app):
|
def __init__(self, app):
|
||||||
# type: (Sphinx) -> None
|
# type: (Sphinx) -> None
|
||||||
self.env = app.env # type: BuildEnvironment
|
|
||||||
self.env.set_versioning_method(self.versioning_method,
|
|
||||||
self.versioning_compare)
|
|
||||||
self.srcdir = app.srcdir
|
self.srcdir = app.srcdir
|
||||||
self.confdir = app.confdir
|
self.confdir = app.confdir
|
||||||
self.outdir = app.outdir
|
self.outdir = app.outdir
|
||||||
@ -71,6 +68,7 @@ class Builder(object):
|
|||||||
os.makedirs(self.doctreedir)
|
os.makedirs(self.doctreedir)
|
||||||
|
|
||||||
self.app = app # type: Sphinx
|
self.app = app # type: Sphinx
|
||||||
|
self.env = None # type: BuildEnvironment
|
||||||
self.warn = app.warn # type: Callable
|
self.warn = app.warn # type: Callable
|
||||||
self.info = app.info # type: Callable
|
self.info = app.info # type: Callable
|
||||||
self.config = app.config # type: Config
|
self.config = app.config # type: Config
|
||||||
@ -97,7 +95,12 @@ class Builder(object):
|
|||||||
# load default translator class
|
# load default translator class
|
||||||
self.translator_class = app._translators.get(self.name)
|
self.translator_class = app._translators.get(self.name)
|
||||||
|
|
||||||
self.init()
|
def set_environment(self, env):
|
||||||
|
# type: (BuildEnvironment) -> None
|
||||||
|
"""Store BuildEnvironment object."""
|
||||||
|
self.env = env
|
||||||
|
self.env.set_versioning_method(self.versioning_method,
|
||||||
|
self.versioning_compare)
|
||||||
|
|
||||||
# helper methods
|
# helper methods
|
||||||
def init(self):
|
def init(self):
|
||||||
|
@ -114,14 +114,11 @@ class I18nBuilder(Builder):
|
|||||||
versioning_method = 'text'
|
versioning_method = 'text'
|
||||||
versioning_compare = None # be set by `gettext_uuid`
|
versioning_compare = None # be set by `gettext_uuid`
|
||||||
|
|
||||||
def __init__(self, app):
|
|
||||||
# type: (Sphinx) -> None
|
|
||||||
self.versioning_compare = app.env.config.gettext_uuid
|
|
||||||
super(I18nBuilder, self).__init__(app)
|
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
# type: () -> None
|
# type: () -> None
|
||||||
Builder.init(self)
|
Builder.init(self)
|
||||||
|
self.env.set_versioning_method(self.versioning_method,
|
||||||
|
self.env.config.gettext_uuid)
|
||||||
self.tags = I18nTags()
|
self.tags = I18nTags()
|
||||||
self.catalogs = defaultdict(Catalog) # type: defaultdict[unicode, Catalog]
|
self.catalogs = defaultdict(Catalog) # type: defaultdict[unicode, Catalog]
|
||||||
|
|
||||||
|
@ -45,6 +45,8 @@ def test_images():
|
|||||||
|
|
||||||
tree = env.get_doctree('images')
|
tree = env.get_doctree('images')
|
||||||
htmlbuilder = StandaloneHTMLBuilder(app)
|
htmlbuilder = StandaloneHTMLBuilder(app)
|
||||||
|
htmlbuilder.set_environment(app.env)
|
||||||
|
htmlbuilder.init()
|
||||||
htmlbuilder.imgpath = 'dummy'
|
htmlbuilder.imgpath = 'dummy'
|
||||||
htmlbuilder.post_process_images(tree)
|
htmlbuilder.post_process_images(tree)
|
||||||
assert set(htmlbuilder.images.keys()) == \
|
assert set(htmlbuilder.images.keys()) == \
|
||||||
@ -54,6 +56,8 @@ def test_images():
|
|||||||
set(['img.png', 'img1.png', 'simg.png', 'svgimg.svg', 'img.foo.png'])
|
set(['img.png', 'img1.png', 'simg.png', 'svgimg.svg', 'img.foo.png'])
|
||||||
|
|
||||||
latexbuilder = LaTeXBuilder(app)
|
latexbuilder = LaTeXBuilder(app)
|
||||||
|
latexbuilder.set_environment(app.env)
|
||||||
|
latexbuilder.init()
|
||||||
latexbuilder.post_process_images(tree)
|
latexbuilder.post_process_images(tree)
|
||||||
assert set(latexbuilder.images.keys()) == \
|
assert set(latexbuilder.images.keys()) == \
|
||||||
set(['subdir/img.png', 'subdir/simg.png', 'img.png', 'img.pdf',
|
set(['subdir/img.png', 'subdir/simg.png', 'img.png', 'img.pdf',
|
||||||
|
Loading…
Reference in New Issue
Block a user