[Checkins] SVN: martian/trunk/ Clean up scan_for_classes.

Martijn Faassen faassen at infrae.com
Sun May 4 12:10:23 EDT 2008


Log message for revision 86393:
  Clean up scan_for_classes.
  

Changed:
  U   martian/trunk/CHANGES.txt
  U   martian/trunk/src/martian/tests/scan_for_classes.txt
  U   martian/trunk/src/martian/util.py

-=-
Modified: martian/trunk/CHANGES.txt
===================================================================
--- martian/trunk/CHANGES.txt	2008-05-04 15:47:13 UTC (rev 86392)
+++ martian/trunk/CHANGES.txt	2008-05-04 16:10:23 UTC (rev 86393)
@@ -4,7 +4,10 @@
 0.9.5 (unreleased)
 ==================
 
-* ...
+* ``scan_for_classes`` just needs a single second argument specifying
+  an interface. The support for scanning for subclasses directly has
+  been removed as it became unnecessary (due to changes in
+  grokcore.component).
 
 0.9.4 (2008-05-04)
 ==================

Modified: martian/trunk/src/martian/tests/scan_for_classes.txt
===================================================================
--- martian/trunk/src/martian/tests/scan_for_classes.txt	2008-05-04 15:47:13 UTC (rev 86392)
+++ martian/trunk/src/martian/tests/scan_for_classes.txt	2008-05-04 16:10:23 UTC (rev 86393)
@@ -10,26 +10,23 @@
 
   >>> from martian.util import scan_for_classes
   >>> from martian.tests.scanforclasses import test1
-  >>> list(scan_for_classes(test1, interface=IContext))
+  >>> list(scan_for_classes(test1, IContext))
   []
 
 Now we look at a module with a single ``Context`` subclass::
 
   >>> from martian.tests.scanforclasses import test2
-  >>> list(scan_for_classes(test2, interface=IContext))
+  >>> list(scan_for_classes(test2, IContext))
   [<class 'martian.tests.scanforclasses.test2.MyContext'>]
 
 Now we'll look at a module with a single class that implements ``IContext``::
 
   >>> from martian.tests.scanforclasses import test3
-  >>> list(scan_for_classes(test3, interface=IContext))
+  >>> list(scan_for_classes(test3, IContext))
   [<class 'martian.tests.scanforclasses.test3.MyContext'>]
 
 Let's finish by looking at a module which defines multiple contexts::
 
   >>> from martian.tests.scanforclasses import test4
-  >>> len(list(scan_for_classes(test4, interface=IContext)))
+  >>> len(list(scan_for_classes(test4, IContext)))
   4
-
-
-

Modified: martian/trunk/src/martian/util.py
===================================================================
--- martian/trunk/src/martian/util.py	2008-05-04 15:47:13 UTC (rev 86392)
+++ martian/trunk/src/martian/util.py	2008-05-04 16:10:23 UTC (rev 86393)
@@ -83,7 +83,7 @@
                         "(use grok.provides to specify which one to use)."
                         % obj, obj)
 
-def scan_for_classes(module, classes=None, interface=None):
+def scan_for_classes(module, iface):
     """Given a module, scan for classes.
     """
     for name in dir(module):
@@ -96,12 +96,7 @@
         if not defined_locally(obj, module.__name__) or not isclass(obj):
             continue
 
-        if classes is not None:
-            for class_ in classes:
-                if check_subclass(obj, class_):
-                    yield obj
-
-        if interface is not None and interface.implementedBy(obj):
+        if iface.implementedBy(obj):
             yield obj
 
 def methods_from_class(class_):



More information about the Checkins mailing list