Log message for revision 99806:
  - In Python 2.4, it's a ``builtin method``, not a ``wrapper slot``. Yuck.
  
  

Changed:
  U   Zope/trunk/src/OFS/SimpleItem.py

-=-
Modified: Zope/trunk/src/OFS/SimpleItem.py
===================================================================
--- Zope/trunk/src/OFS/SimpleItem.py    2009-05-07 23:18:39 UTC (rev 99805)
+++ Zope/trunk/src/OFS/SimpleItem.py    2009-05-07 23:56:53 UTC (rev 99806)
@@ -243,6 +243,7 @@
             # exception value? To be able to do so, the exception
             # constructor needs to be able to take more than two
             # arguments (some Zope 3 exceptions can't).
+            can_raise = False
             ctor = getattr(error_type, '__init__', None)
             if inspect.ismethoddescriptor(ctor):
                 # If it's a method descriptor, it means we've got a
@@ -252,9 +253,14 @@
             else:
                 if inspect.ismethod(ctor):
                     ctor = getattr(ctor, 'im_func', None)
-                can_raise = (
-                    ctor is not None and inspect.isfunction(ctor)
-                    and len(inspect.getargspec(error_type.__init__)[0]) > 2)
+                if inspect.isbuiltin(ctor):
+                    # In Python 2.4, the ``__init__`` method of the
+                    # base ``Exception`` class is a ``builtin
+                    # method``.
+                    can_raise = True
+                elif ctor is not None and inspect.isfunction(ctor):
+                    can_raise = (
+                        len(inspect.getargspec(error_type.__init__)[0]) > 2)
 
             if not (can_raise and handle_errors):
                 # If we have been asked not to handle errors and we

_______________________________________________
Zope-Checkins maillist  -  Zope-Checkins@zope.org
http://mail.zope.org/mailman/listinfo/zope-checkins

Reply via email to