[Zodb-checkins] SVN: ZODB/trunk/src/ZEO/zrpc/ Updated to reflect differences in exception meta types ebtween Python

Jim Fulton jim at zope.com
Mon Jun 25 11:19:12 EDT 2007


Log message for revision 77055:
  Updated to reflect differences in exception meta types ebtween Python
  2.4 and 2.5.
  

Changed:
  U   ZODB/trunk/src/ZEO/zrpc/connection.py
  U   ZODB/trunk/src/ZEO/zrpc/marshal.py

-=-
Modified: ZODB/trunk/src/ZEO/zrpc/connection.py
===================================================================
--- ZODB/trunk/src/ZEO/zrpc/connection.py	2007-06-25 15:18:49 UTC (rev 77054)
+++ ZODB/trunk/src/ZEO/zrpc/connection.py	2007-06-25 15:19:07 UTC (rev 77055)
@@ -17,7 +17,6 @@
 import select
 import sys
 import threading
-import types
 import logging
 
 import traceback, time
@@ -33,6 +32,8 @@
 REPLY = ".reply" # message name used for replies
 ASYNC = 1
 
+exception_type_type = type(Exception)
+
 ##############################################################################
 # Dedicated Client select loop:
 client_timeout = 30.0
@@ -361,7 +362,7 @@
         assert tag in "CS"
         self.tag = tag
         self.logger = logging.getLogger('ZEO.zrpc.Connection(%c)' % tag)
-        if isinstance(addr, types.TupleType):
+        if isinstance(addr, tuple):
             self.log_label = "(%s:%d) " % addr
         else:
             self.log_label = "(%s) " % addr
@@ -604,7 +605,7 @@
             self.log("Asynchronous call raised exception: %s" % self,
                      level=logging.ERROR, exc_info=True)
             return
-        if type(err_value) is not types.InstanceType:
+        if not isinstance(err_value, Exception):
             err_value = err_type, err_value
 
         # encode() can pass on a wide variety of exceptions from cPickle.
@@ -664,8 +665,8 @@
             raise DisconnectedError()
         msgid = self.send_call(method, args, 0)
         r_flags, r_args = self.wait(msgid)
-        if (isinstance(r_args, types.TupleType) and len(r_args) > 1
-            and type(r_args[0]) == types.ClassType
+        if (isinstance(r_args, tuple) and len(r_args) > 1
+            and type(r_args[0]) == exception_type_type
             and issubclass(r_args[0], Exception)):
             inst = r_args[1]
             raise inst # error raised by server
@@ -687,8 +688,8 @@
 
     def _deferred_wait(self, msgid):
         r_flags, r_args = self.wait(msgid)
-        if (isinstance(r_args, types.TupleType)
-            and type(r_args[0]) == types.ClassType
+        if (isinstance(r_args, tuple)
+            and type(r_args[0]) == exception_type_type
             and issubclass(r_args[0], Exception)):
             inst = r_args[1]
             raise inst # error raised by server

Modified: ZODB/trunk/src/ZEO/zrpc/marshal.py
===================================================================
--- ZODB/trunk/src/ZEO/zrpc/marshal.py	2007-06-25 15:18:49 UTC (rev 77054)
+++ ZODB/trunk/src/ZEO/zrpc/marshal.py	2007-06-25 15:19:07 UTC (rev 77055)
@@ -13,7 +13,6 @@
 ##############################################################################
 import cPickle
 from cStringIO import StringIO
-import types
 import logging
 
 from ZEO.zrpc.error import ZRPCError
@@ -56,6 +55,8 @@
 _globals = globals()
 _silly = ('__doc__',)
 
+exception_type_type = type(Exception)
+
 def find_global(module, name):
     """Helper for message unpickler"""
     try:
@@ -73,7 +74,7 @@
         return r
 
     # TODO:  is there a better way to do this?
-    if type(r) == types.ClassType and issubclass(r, Exception):
+    if type(r) == exception_type_type and issubclass(r, Exception):
         return r
 
     raise ZRPCError("Unsafe global: %s.%s" % (module, name))



More information about the Zodb-checkins mailing list