[Checkins] SVN: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/ Raise LookupError instead of TypeError on failed adaptation; document __call__.
Tres Seaver
tseaver at palladion.com
Wed Dec 16 20:47:33 EST 2009
Log message for revision 106688:
Raise LookupError instead of TypeError on failed adaptation; document __call__.
Changed:
U zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.ru.txt
U zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.txt
U zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/_zope_interface_coptimizations.c
U zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interface.py
U zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interfaces.py
U zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/tests/test_adapter.py
-=-
Modified: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.ru.txt
===================================================================
--- zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.ru.txt 2009-12-17 01:46:39 UTC (rev 106687)
+++ zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.ru.txt 2009-12-17 01:47:32 UTC (rev 106688)
@@ -683,7 +683,7 @@
>>> I(0)
Traceback (most recent call last):
...
- TypeError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
+ LookupError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
ÑолÑко еÑли алÑÑеÑнаÑивное знаÑение не пеÑедано как вÑоÑой аÑгÑменÑ::
@@ -725,7 +725,7 @@
>>> I(0)
Traceback (most recent call last):
...
- TypeError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
+ LookupError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
__adapt__
Modified: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.txt
===================================================================
--- zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.txt 2009-12-17 01:46:39 UTC (rev 106687)
+++ zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/README.txt 2009-12-17 01:47:32 UTC (rev 106688)
@@ -688,7 +688,7 @@
>>> I(0)
Traceback (most recent call last):
...
- TypeError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
+ LookupError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
@@ -731,7 +731,7 @@
>>> I(0)
Traceback (most recent call last):
...
- TypeError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
+ LookupError: ('Could not adapt', 0, <InterfaceClass __main__.I>)
__adapt__
---------
Modified: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/_zope_interface_coptimizations.c
===================================================================
--- zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/_zope_interface_coptimizations.c 2009-12-17 01:46:39 UTC (rev 106687)
+++ zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/_zope_interface_coptimizations.c 2009-12-17 01:47:32 UTC (rev 106688)
@@ -623,7 +623,7 @@
elif alternate is not _marker:
return alternate
else:
- raise TypeError("Could not adapt", obj, self)
+ raise LookupError("Could not adapt", obj, self)
*/
static PyObject *
ib_call(PyObject *self, PyObject *args, PyObject *kwargs)
@@ -663,7 +663,7 @@
adapter = Py_BuildValue("sOO", "Could not adapt", obj, self);
if (adapter != NULL)
{
- PyErr_SetObject(PyExc_TypeError, adapter);
+ PyErr_SetObject(PyExc_LookupError, adapter);
Py_DECREF(adapter);
}
return NULL;
Modified: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interface.py
===================================================================
--- zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interface.py 2009-12-17 01:46:39 UTC (rev 106687)
+++ zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interface.py 2009-12-17 01:47:32 UTC (rev 106688)
@@ -186,7 +186,7 @@
elif alternate is not _marker:
return alternate
else:
- raise TypeError("Could not adapt", obj, self)
+ raise LookupError("Could not adapt", obj, self)
def __adapt__(self, obj):
"""Adapt an object to the reciever
Modified: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interfaces.py
===================================================================
--- zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interfaces.py 2009-12-17 01:46:39 UTC (rev 106687)
+++ zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/interfaces.py 2009-12-17 01:47:32 UTC (rev 106688)
@@ -140,6 +140,8 @@
"""
+_marker = []
+
class IInterface(ISpecification, IElement):
"""Interface objects
@@ -297,8 +299,21 @@
interface directly and indirectly by base interfaces.
"""
+ def __call__(context, default=_marker, name=''):
+ """ Adapt context to this interface.
+
+ o If 'default' is passed, and no adapter is found, return 'default'.
+
+ o If 'default' is not passed, and no adapter is found, raise
+ a LookupError.
+
+ o If 'name' is passed, look up the corresponding named adapter.
+ """
+
__module__ = Attribute("""The name of the module defining the interface""")
+del _marker # only to make API signature valid
+
class IDeclaration(ISpecification):
"""Interface declaration
Modified: zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/tests/test_adapter.py
===================================================================
--- zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/tests/test_adapter.py 2009-12-17 01:46:39 UTC (rev 106687)
+++ zope.interface/branches/tseaver-raise_lookup_error/src/zope/interface/tests/test_adapter.py 2009-12-17 01:47:32 UTC (rev 106688)
@@ -253,7 +253,7 @@
>>> IY(X()) #doctest: +NORMALIZE_WHITESPACE +ELLIPSIS
Traceback (most recent call last):
...
- TypeError: ('Could not adapt',
+ LookupError: ('Could not adapt',
<zope.interface.tests.test_adapter.X object at ...>,
<InterfaceClass zope.interface.tests.test_adapter.IY>)
More information about the checkins
mailing list