summaryrefslogtreecommitdiff
path: root/sphinx/builders/websupport.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/builders/websupport.py')
-rw-r--r--sphinx/builders/websupport.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/sphinx/builders/websupport.py b/sphinx/builders/websupport.py
index ac9dd7152..59bfd7c86 100644
--- a/sphinx/builders/websupport.py
+++ b/sphinx/builders/websupport.py
@@ -61,6 +61,23 @@ class WebSupportBuilder(StandaloneHTMLBuilder):
stream=WarningStream(self.env._warnfunc))
return doctree
+ def resave_doctree(self, docname, doctree):
+ # make it picklable, save the reporter, it's needed later.
+ reporter = doctree.reporter
+ doctree.reporter = None
+ doctree.settings.warning_stream = None
+ doctree.settings.env = None
+ doctree.settings.record_dependencies = None
+
+ fp = self.env.doc2path(docname, self.doctreedir, '.doctree')
+ f = open(fp, 'wb')
+ try:
+ pickle.dump(doctree, f, pickle.HIGHEST_PROTOCOL)
+ finally:
+ f.close()
+
+ doctree.reporter = reporter
+
def write_doc(self, docname, doctree):
destination = StringOutput(encoding='utf-8')
doctree.settings = self.docsettings
@@ -70,6 +87,7 @@ class WebSupportBuilder(StandaloneHTMLBuilder):
list(merge_doctrees(old_doctree, doctree, is_commentable))
else:
list(add_uids(doctree, is_commentable))
+ self.resave_doctree(docname, doctree)
self.cur_docname = docname
self.secnumbers = self.env.toc_secnumbers.get(docname, {})