[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