mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Cache doctrees between reading and writing phases
This commit is contained in:
parent
a9b0f2708b
commit
463a69664c
@ -542,6 +542,8 @@ class Builder:
|
||||
with open(doctree_filename, 'wb') as f:
|
||||
pickle.dump(doctree, f, pickle.HIGHEST_PROTOCOL)
|
||||
|
||||
self.env._write_doc_doctree_cache[docname] = doctree
|
||||
|
||||
def write(
|
||||
self,
|
||||
build_docnames: Iterable[str],
|
||||
|
@ -181,6 +181,9 @@ class BuildEnvironment:
|
||||
# docname -> pickled doctree
|
||||
self._pickled_doctree_cache: dict[str, bytes] = {}
|
||||
|
||||
# docname -> doctree
|
||||
self._write_doc_doctree_cache: dict[str, nodes.document] = {}
|
||||
|
||||
# File metadata
|
||||
# docname -> dict of metadata items
|
||||
self.metadata: dict[str, dict[str, Any]] = defaultdict(dict)
|
||||
@ -608,7 +611,12 @@ class BuildEnvironment:
|
||||
toctrees and return it.
|
||||
"""
|
||||
if doctree is None:
|
||||
doctree = self.get_doctree(docname)
|
||||
try:
|
||||
doctree = self._write_doc_doctree_cache.pop(docname)
|
||||
doctree.settings.env = self
|
||||
doctree.reporter = LoggingReporter(self.doc2path(docname))
|
||||
except KeyError:
|
||||
doctree = self.get_doctree(docname)
|
||||
|
||||
# resolve all pending cross-references
|
||||
self.apply_post_transforms(doctree, docname)
|
||||
|
Loading…
Reference in New Issue
Block a user