[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