From e9fc8d890ce568d279e40da28f6b2f3d3f3ee75f Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Thu, 3 Sep 2009 18:00:11 +0200 Subject: [PATCH] Really fix the problem of keeping all pgen2 parser nodes in memory. --- sphinx/ext/autodoc.py | 5 +++-- sphinx/pycode/__init__.py | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py index ea9a8f17d..988a82e02 100644 --- a/sphinx/ext/autodoc.py +++ b/sphinx/ext/autodoc.py @@ -620,8 +620,9 @@ class Documenter(object): # try to also get a source code analyzer for attribute docs try: self.analyzer = ModuleAnalyzer.for_module(self.real_modname) - # parse right now, to get PycodeErrors on parsing - self.analyzer.parse() + # parse right now, to get PycodeErrors on parsing (results will + # be cached anyway) + self.analyzer.find_attr_docs() except PycodeError, err: # no source file -- e.g. for builtin and C modules self.analyzer = None diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py index 1187b6a43..fa8d0e948 100644 --- a/sphinx/pycode/__init__.py +++ b/sphinx/pycode/__init__.py @@ -234,6 +234,8 @@ class ModuleAnalyzer(object): attr_visitor = AttrDocVisitor(number2name, scope, self.encoding) attr_visitor.visit(self.parsetree) self.attr_docs = attr_visitor.collected + # now that we found everything we could in the tree, throw it away + # (it takes quite a bit of memory for large modules) self.parsetree = None return attr_visitor.collected