[Checkins] SVN: zope.introspector/trunk/src/zope/introspector/code.py Let modules find functions and classes.
Uli Fouquet
uli at gnufix.de
Mon Aug 11 14:33:17 EDT 2008
Log message for revision 89678:
Let modules find functions and classes.
Changed:
U zope.introspector/trunk/src/zope/introspector/code.py
-=-
Modified: zope.introspector/trunk/src/zope/introspector/code.py
===================================================================
--- zope.introspector/trunk/src/zope/introspector/code.py 2008-08-11 18:30:27 UTC (rev 89677)
+++ zope.introspector/trunk/src/zope/introspector/code.py 2008-08-11 18:33:17 UTC (rev 89678)
@@ -14,11 +14,12 @@
"""The real information providers for code objects (packages, classes, etc.)
"""
+import inspect
+import types
import pkg_resources
+import grokcore.component as grok
from pkg_resources import DistributionNotFound
-import grokcore.component as grok
from grokcore.component.interfaces import IContext
-import types
from martian.scan import module_info_from_dotted_name
from martian.util import isclass
from zope.interface import implements
@@ -147,9 +148,20 @@
def getPath(self):
return self.context.getPath()
+ def getMembers(self, filter_func=lambda x:True):
+ info = self.context.getModuleInfo()
+ members = inspect.getmembers(info.getModule(), predicate=filter_func)
+ return [self.context[x[0]] for x in members]
+
def getClasses(self):
- return []
+ filter_func = lambda x: inspect.isclass(x)
+ return self.getMembers(filter_func=filter_func)
+ def getFunctions(self):
+ filter_func = lambda x: inspect.isfunction(x) or inspect.ismethod(x)
+ return self.getMembers(filter_func=filter_func)
+
+
class File(Code):
def __init__(self, dotted_name, name):
super(File, self).__init__(dotted_name)
More information about the Checkins
mailing list