[Zodb-checkins] CVS: Zope3/src/zope/interface - implements.py:1.4

Philipp von Weitershausen philikon@philikon.de
Thu, 10 Apr 2003 11:43:17 -0400


Update of /cvs-repository/Zope3/src/zope/interface
In directory cvs.zope.org:/tmp/cvs-serv14022/interface

Modified Files:
	implements.py 
Log Message:
Instead of comparing the classes and checking with isinstance, we check
whether InterfaceClass is in the method resolution order, because

  a) it works with classes extending InterfaceClass (they will have
     InterfaceClass in their __mro__)
  
  b) also, this is faster ;)


=== Zope3/src/zope/interface/implements.py 1.3 => 1.4 ===
--- Zope3/src/zope/interface/implements.py:1.3	Tue Jan  7 07:14:53 2003
+++ Zope3/src/zope/interface/implements.py	Thu Apr 10 11:43:16 2003
@@ -64,8 +64,7 @@
     # yet remain compatible with earlier versions of python.
     implements_class = getattr(implements, '__class__', None)
 
-    if implements_class == InterfaceClass or \
-       isinstance(implements, InterfaceClass):
+    if InterfaceClass in implements_class.__mro__:
         return visitor(implements)
     elif implements == CLASS_INTERFACES:
         klass = getattr(object, '__class__', None)