[Zope3-checkins] CVS: Zope3/src/zope/interface - __init__.py:1.1.2.3 _flatten.py:1.1.2.2 adapter.py:1.1.2.2 document.py:1.1.2.2 exceptions.py:1.1.2.2 implementor.py:1.1.2.2 implements.py:1.1.2.2 interface.py:1.1.2.2 interfaces.py:1.1.2.2 pyskel.py:1.1.2.6 type.py:1.1.2.2 verify.py:1.1.2.2
Tim Peters
tim.one@comcast.net
Tue, 24 Dec 2002 21:21:40 -0500
Update of /cvs-repository/Zope3/src/zope/interface
In directory cvs.zope.org:/tmp/cvs-serv19240/src/zope/interface
Modified Files:
Tag: NameGeddon-branch
__init__.py _flatten.py adapter.py document.py exceptions.py
implementor.py implements.py interface.py interfaces.py
pyskel.py type.py verify.py
Log Message:
Whitespace normalization, via Python's Tools/scripts/reindent.py. The
files are fixed-points of that script now. Fixed a few cases where
code relied on significant trailing whitespace (ouch).
=== Zope3/src/zope/interface/__init__.py 1.1.2.2 => 1.1.2.3 ===
--- Zope3/src/zope/interface/__init__.py:1.1.2.2 Mon Dec 23 15:04:47 2002
+++ Zope3/src/zope/interface/__init__.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Interfaces
@@ -18,7 +18,7 @@
The package exports a single name, 'Interface' directly. Interface
is used to create an interface with a class statement, as in:
-
+
class IMyInterface(Interface):
'''Interface documentation
@@ -34,7 +34,7 @@
interface, IInterface in the IInterface module.
The package has several public modules:
-
+
o Attribute has the implementation for interface attributes
for people who want to build interfaces by hand.
(Maybe someone should cry YAGNI for this. ;)
=== Zope3/src/zope/interface/_flatten.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/_flatten.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/_flatten.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Adapter-style interface registry
@@ -44,18 +44,17 @@
flattened.append(None)
return flattened
-
+
def _flatten_recurse(implements, list):
if implements.__class__ == tuple:
for i in implements:
_flatten_recurse(i, list)
else:
_flatten_recurse_interface(implements, list)
-
+
def _flatten_recurse_interface(interface, list):
list.append(interface)
if interface is None:
return
for i in interface.__bases__:
_flatten_recurse_interface(i, list)
-
=== Zope3/src/zope/interface/adapter.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/adapter.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/adapter.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Adapter-style interface registry
@@ -37,18 +37,18 @@
#
# Where the registered provides is what was registered and
# provided may be some base interface
-
+
def __init__(self, data=None):
if data is None:
data = {}
self._reg = data
-
+
def _registerAllProvided(self, require, primary_provide, object, provide):
# Registers a component using (require, provide) as a key.
# Also registers superinterfaces of the provided interface,
# stopping when the registry already has a component
# that provides a more general interface or when the Base is Interface.
-
+
reg = self._reg
reg[(require, provide)] = (primary_provide, object)
bases = getattr(provide, '__bases__', ())
@@ -74,7 +74,7 @@
if not IInterface.isImplementedBy(provide):
raise TypeError(
"The provide argument must be an interface (or None)")
-
+
self._registerAllProvided(require, provide, object, provide)
def get(self, (ob_interface, provide), default=None, filter=None):
@@ -109,7 +109,7 @@
required_interfaces=None,
provided_interfaces=None):
-
+
if IInterface.isImplementedBy(required_interfaces):
required_interfaces = (required_interfaces, )
@@ -117,7 +117,7 @@
if IInterface.isImplementedBy(provided_interfaces):
provided_interfaces = (provided_interfaces, )
-
+
r = {}
if required_interfaces:
@@ -126,7 +126,7 @@
for provided in provided_interfaces:
v = self._reg.get((required, provided))
if v:
- rprovided, o = v
+ rprovided, o = v
r[required, rprovided] = o
@@ -153,7 +153,7 @@
provided == rprovided
)
]
-
+
else:
# Nothing specified
return [(required, provided, o)
@@ -161,5 +161,3 @@
in self._reg.items()
if provided == rprovided
]
-
-
=== Zope3/src/zope/interface/document.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/document.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/document.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
""" Pretty-Print an Interface object as structured text (Yum)
@@ -26,7 +26,7 @@
""" Output structured text format. Note, this will wack any existing
'structured' format of the text. """
-
+
r = ["%s\n\n" % I.getName()]
outp = r.append
level = 1
@@ -49,7 +49,7 @@
namesAndDescriptions = I.namesAndDescriptions()
namesAndDescriptions.sort()
-
+
for name, desc in namesAndDescriptions:
if not hasattr(desc, 'getSignatureString'): # ugh...
item = "%s -- %s" % (desc.getName(),
@@ -83,12 +83,12 @@
for line in lines[1:]:
indent=len(line) - len(line.lstrip())
if indent < min_indent or min_indent is None:
- min_indent=indent
+ min_indent=indent
for line in lines[1:]:
nlines.append(line[min_indent:])
return '\n'.join(nlines)
-
-
+
+
_trans = maketrans("\r\n", " ")
def _justify_and_indent(text, level, munge=0, width=72):
""" indent and justify text, rejustify (munge) if specified """
@@ -116,11 +116,3 @@
lines.append( (" " * level) + line)
return '\n'.join(lines)
-
-
-
-
-
-
-
-
=== Zope3/src/zope/interface/exceptions.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/exceptions.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/exceptions.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""
=== Zope3/src/zope/interface/implementor.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/implementor.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/implementor.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Adapter-style interface registry
@@ -35,16 +35,16 @@
#
# Where the registered provides is what was registered and
# provided may be some base interface
-
+
def __init__(self):
self._reg = {}
-
+
def _registerAllProvided(self, primary_provide, object, provide):
# Registers a component using (require, provide) as a key.
# Also registers superinterfaces of the provided interface,
# stopping when the registry already has a component
# that provides a more general interface or when the Base is Interface.
-
+
reg = self._reg
reg[provide] = (primary_provide, object)
bases = getattr(provide, '__bases__', ())
@@ -63,7 +63,7 @@
self._registerAllProvided(primary_provide, object, base)
- def register(self, provide, object):
+ def register(self, provide, object):
if not IInterface.isImplementedBy(provide):
raise TypeError(
"The provide argument must be an interface (or None)")
=== Zope3/src/zope/interface/implements.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/implements.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/implements.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Implemantation assertion facilities.
@@ -54,7 +54,7 @@
def visitImplements(implements, object, visitor, getInterface=None):
"""Call visitor for each interace.
-
+
Visits the interfaces described by an __implements__ attribute,
invoking the visitor for each interface object.
If the visitor returns anything true, the loop stops.
@@ -63,7 +63,7 @@
# this allows us to work with proxy wrappers in Python 2.2,
# yet remain compatible with earlier versions of python.
implements_class = getattr(implements, '__class__', None)
-
+
if implements_class == InterfaceClass or \
isinstance(implements, InterfaceClass):
return visitor(implements)
@@ -155,4 +155,3 @@
klass.__implements__ = interface
else:
klass.__implements__ = old, interface
-
=== Zope3/src/zope/interface/interface.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/interface.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/interface.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Interface object implementation
@@ -40,14 +40,14 @@
#__implements__ = IElement
__tagged_values = {}
-
+
def __init__(self, __name__, __doc__=''):
"""Create an 'attribute' description
"""
if not __doc__ and __name__.find(' ') >= 0:
__doc__ = __name__
__name__ = None
-
+
self.__name__=__name__
self.__doc__=__doc__
@@ -82,7 +82,7 @@
def __init__(self, name, bases=(), attrs=None, __doc__=None,
__module__=None):
-
+
if __module__ is None:
if attrs is not None and ('__module__' in attrs):
__module__ = attrs['__module__']
@@ -136,7 +136,7 @@
"""Does an interface extend another?"""
if not strict and self is other:
return True
-
+
for b in self.__bases__:
if b == other: return True
if b.extends(other): return True
@@ -179,7 +179,7 @@
def __iter__(self):
return iter(self.names(1))
-
+
def namesAndDescriptions(self, all=0):
"""Return attribute names and descriptions defined by interface."""
if not all:
@@ -188,7 +188,7 @@
r = {}
for name, d in self.__attrs.items():
r[name] = d
-
+
for base in self.__bases__:
for name, d in base.namesAndDescriptions(all):
if name not in r:
@@ -201,7 +201,7 @@
r = self.queryDescriptionFor(name)
if r is not None:
return r
-
+
raise KeyError, name
__getitem__ = getDescriptionFor
@@ -218,7 +218,7 @@
r = base.queryDescriptionFor(name, self)
if r is not self:
return r
-
+
return default
get = queryDescriptionFor
@@ -230,7 +230,7 @@
klass={}
exec "class %s: pass" % self.__name__ in klass
klass=klass[self.__name__]
-
+
self.__d(klass.__dict__)
self._deferred=klass
@@ -240,7 +240,7 @@
def _getInterface(self, ob, name):
"""Retrieve a named interface."""
return None
-
+
def __d(self, dict):
for k, v in self.__attrs.items():
@@ -279,7 +279,7 @@
None is treated as a psuedo interface that implies the loosest
contact possible, no contract. For that reason, all interfaces
sort before None.
-
+
"""
if o1 == o2:
@@ -303,7 +303,7 @@
getattr(getattr(o1, '__module__', None), '__name__', ''))
n2 = (getattr(o2, '__name__', ''),
getattr(getattr(o2, '__module__', None), '__name__', ''))
-
+
return cmp(n1, n2)
def __lt__(self, other):
@@ -348,7 +348,7 @@
def getSignatureInfo(self):
info = {}
for t in sig_traits:
- info[t] = getattr(self, t)
+ info[t] = getattr(self, t)
return info
=== Zope3/src/zope/interface/interfaces.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/interfaces.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/interfaces.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""
@@ -31,7 +31,7 @@
def getDoc():
"""Returns the documentation for the object."""
-
+
def getTaggedValue(tag):
"""Returns the value associated with 'tag'."""
@@ -45,8 +45,8 @@
class IAttribute(IElement):
"""Attribute descriptors"""
-
-
+
+
class IMethod(IAttribute):
"""Method attributes
@@ -81,7 +81,7 @@
are expected, optional arguments and their default values,
the position or arguments in the signature, whether the
method accepts arbitrary arguments and whether the method
- accepts arbitrary keyword arguments.
+ accepts arbitrary keyword arguments.
o Optional tagged data. Interface objects (and their attributes and
methods) can have optional, application specific tagged data
@@ -179,7 +179,7 @@
A true value is returned in the interface extends the other
interface, and false otherwise.
-
+
Normally, an interface doesn't extend itself. If a false value
is passed as the second argument, or via the 'strict' keyword
argument, then a true value will be returned if the interface
@@ -241,7 +241,7 @@
"""
get = queryDescriptionFor
-
+
def __contains__(name):
"""Test whether the name is defined by the interface"""
@@ -256,7 +256,7 @@
"""Type-specific registry
This registry stores objects registered for objects that implement
- a required interface.
+ a required interface.
"""
def register(require, object):
@@ -281,7 +281,7 @@
Note that the implements may be None, it which case a
component will be returned only if it was registered with a
require of None.
-
+
"""
def getAll(implements=None):
@@ -294,9 +294,9 @@
the require interface was None).
"""
-
+
def getAllForObject(object):
- """Get all registered objects for types that object implements.
+ """Get all registered objects for types that object implements.
"""
@@ -318,7 +318,7 @@
interface of None adapt non-components. An adapter that adapts all
components should specify a required interface of
Interface.Interface.
-
+
"""
def register(require, provide, object):
@@ -353,9 +353,9 @@
suitable match can be found. The filter should take a single
argument and return a true value if the object passes the
filter, or false otherwise.
-
+
"""
-
+
def getForObject(object, interface, filter=None):
"""Get an adapter for object that implements the specified interface
@@ -367,7 +367,7 @@
None is returned if nothing is registered.
"""
-
+
def getRegisteredMatching(required_interfaces=None,
provided_interfaces=None):
"""Return information about registered data
@@ -409,7 +409,7 @@
The objects registered here don't need to be implementors. (They
might just be useful to implementation.) What's important is that
they are registered according to a provided interface.
-
+
"""
def register(provide, object):
=== Zope3/src/zope/interface/pyskel.py 1.1.2.5 => 1.1.2.6 ===
--- Zope3/src/zope/interface/pyskel.py:1.1.2.5 Tue Dec 24 11:54:44 2002
+++ Zope3/src/zope/interface/pyskel.py Tue Dec 24 21:21:08 2002
@@ -3,14 +3,14 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""
Generate method skeletons for intefaces.
@@ -107,7 +107,7 @@
# print
# print " #"
# print " ############################################################"
-
+
def resolve(name, _silly=('__doc__',), _globals={}):
# Support for file path syntax; this way I can use TAB to search for
@@ -198,9 +198,7 @@
return map(lambda item: item[1:], items)
-
+
if __name__ == '__main__':
for a in sys.argv[1:]:
skel(a)
-
-
=== Zope3/src/zope/interface/type.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/type.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/type.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
"""Adapter-style interface registry
@@ -39,7 +39,7 @@
#
# Where the registered provides is what was registered and
# provided may be some base interface
-
+
def __init__(self):
self._reg = {}
@@ -58,7 +58,7 @@
def setdefault(self, interface, default=None):
return self._reg.setdefault(interface, default)
-
+
def getAll(self, interface_spec):
result = []
for interface in _flatten(interface_spec):
@@ -78,4 +78,3 @@
# account implementation registries for objects that can't
# have '__implements__' attributes.
return self.getAll(getattr(object, '__implements__', None))
-
=== Zope3/src/zope/interface/verify.py 1.1.2.1 => 1.1.2.2 ===
--- Zope3/src/zope/interface/verify.py:1.1.2.1 Mon Dec 23 14:32:54 2002
+++ Zope3/src/zope/interface/verify.py Tue Dec 24 21:21:08 2002
@@ -2,14 +2,14 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
-#
+#
##############################################################################
from zope.interface.exceptions import BrokenImplementation, DoesNotImplement
@@ -19,7 +19,7 @@
def _verify(iface, candidate, tentative=0, vtype=None):
"""Verify that 'candidate' might correctly implements 'iface'.
-
+
This involves:
o Making sure the candidate defines all the necessary methods
@@ -61,7 +61,7 @@
mess = _incompat(d, meth)
if mess:
raise BrokenMethodImplementation(n, mess)
-
+
return 1
def verifyClass(iface, candidate, tentative=0):