[Epydoc-commits] SF.net SVN: epydoc: [1343] trunk/epydoc/src/epydoc/markup/restructuredtext. py
Brought to you by:
edloper
From: <ed...@us...> - 2006-09-02 01:23:25
|
Revision: 1343 http://svn.sourceforge.net/epydoc/?rev=1343&view=rev Author: edloper Date: 2006-09-01 18:23:23 -0700 (Fri, 01 Sep 2006) Log Message: ----------- - Optimizations to make parsing rst a little faster: - Reuse docutils 'settings' objects, rather than re-creating them every time we translate a docstring to html or latex - Replace the reporter with one that ignores all debug statements. (Docutils isn't very fast about processing its own debug statements.) Modified Paths: -------------- trunk/epydoc/src/epydoc/markup/restructuredtext.py Modified: trunk/epydoc/src/epydoc/markup/restructuredtext.py =================================================================== --- trunk/epydoc/src/epydoc/markup/restructuredtext.py 2006-09-02 00:54:33 UTC (rev 1342) +++ trunk/epydoc/src/epydoc/markup/restructuredtext.py 2006-09-02 01:23:23 UTC (rev 1343) @@ -132,6 +132,12 @@ 'warning_stream':None}) return ParsedRstDocstring(writer.document) +class OptimizedReporter(docutils.utils.Reporter): + """A reporter that ignores all debug messages. This is used to + shave a couple seconds off of epydoc's run time, since docutils + isn't very fast about processing its own debug messages.""" + def debug(self, *args, **kwargs): pass + class ParsedRstDocstring(ParsedDocstring): """ An encoded version of a ReStructuredText docstring. The contents @@ -150,7 +156,7 @@ # The default document reporter and transformer are not # pickle-able; so replace them with stubs that are. - document.reporter = docutils.utils.Reporter( + document.reporter = OptimizedReporter( document.reporter.source, 'SEVERE', 'SEVERE', '') document.transformer = docutils.transforms.Transformer(document) @@ -460,10 +466,13 @@ return translator.head_prefix class _EpydocLaTeXTranslator(LaTeXTranslator): + settings = None def __init__(self, document, docstring_linker): # Set the document's settings. - settings = OptionParser([LaTeXWriter()]).get_default_values() - document.settings = settings + if self.settings is None: + settings = OptionParser([LaTeXWriter()]).get_default_values() + self.__class__.settings = settings + document.settings = self.settings LaTeXTranslator.__init__(self, document) self._linker = docstring_linker @@ -495,6 +504,7 @@ raise SkipNode() class _EpydocHTMLTranslator(HTMLTranslator): + settings = None def __init__(self, document, docstring_linker, directory, docindex, context): self._linker = docstring_linker @@ -503,8 +513,10 @@ self._context = context # Set the document's settings. - settings = OptionParser([HTMLWriter()]).get_default_values() - document.settings = settings + if self.settings is None: + settings = OptionParser([HTMLWriter()]).get_default_values() + self.__class__.settings = settings + document.settings = self.settings # Call the parent constructor. HTMLTranslator.__init__(self, document) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |