[Checkins] SVN: zope.introspector/trunk/src/zope/introspector/code.py Use stronger filter for module items.

Uli Fouquet uli at gnufix.de
Mon Aug 11 22:37:56 EDT 2008


Log message for revision 89687:
  Use stronger filter for module items.

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-12 01:21:21 UTC (rev 89686)
+++ zope.introspector/trunk/src/zope/introspector/code.py	2008-08-12 02:37:55 UTC (rev 89687)
@@ -38,6 +38,7 @@
     def __init__(self, dotted_name):
         super(PackageOrModule, self).__init__(dotted_name)
         self._module_info = module_info_from_dotted_name(dotted_name)
+        self._module = self._module_info.getModule()
 
     def getModuleInfo(self):
         return self._module_info
@@ -148,14 +149,21 @@
     def getPath(self):
         return self.context.getPath()
 
+    def _standardFilter(self, item):
+        """Filter out, what we don't consider a module item.
+        """
+        if getattr(item, '__module__', None) != self.context._module.__name__:
+            return False
+        return hasattr(item, '__name__')
+
     def getMembers(self, filter_func=lambda x:True):
-        info = self.context.getModuleInfo()
-        members = inspect.getmembers(info.getModule(), predicate=filter_func)
+        members = inspect.getmembers(
+            self.context._module,
+            predicate=lambda x: filter_func(x) and self._standardFilter(x))
         return [self.context[x[0]] for x in members]
         
     def getClasses(self):
-        filter_func = lambda x: inspect.isclass(x)
-        return self.getMembers(filter_func=filter_func)
+        return self.getMembers(filter_func=isclass)
 
     def getFunctions(self):
         filter_func = lambda x: inspect.isfunction(x) or inspect.ismethod(x)



More information about the Checkins mailing list