]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
another serializable for [ticket:2371]
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 12 Jan 2012 05:49:02 +0000 (00:49 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 12 Jan 2012 05:49:02 +0000 (00:49 -0500)
lib/sqlalchemy/exc.py
test/engine/test_execute.py

index 4f776b8371e13fb9706862504a13534f2176b531..64f25a22ff16cffe73ee080eedce20e9d9f14a8f 100644 (file)
@@ -44,12 +44,19 @@ class CircularDependencyError(SQLAlchemyError):
       see :ref:`use_alter`.
       
     """
-    def __init__(self, message, cycles, edges):
-        message += " Cycles: %r all edges: %r" % (cycles, edges)
+    def __init__(self, message, cycles, edges, msg=None):
+        if msg is None:
+            message += " Cycles: %r all edges: %r" % (cycles, edges)
+        else:
+            message = msg
         SQLAlchemyError.__init__(self, message)
         self.cycles = cycles
         self.edges = edges
 
+    def __reduce__(self):
+        return self.__class__, (None, self.cycles, 
+                            self.edges, self.args[0])
+
 class CompileError(SQLAlchemyError):
     """Raised when an error occurs during SQL compilation"""
 
index 44e44982fe729eb751a1f0a33cf0480c8b406c8a..d7293c136fb1d0b39ece4ee7ab3034f5993ac1e0 100644 (file)
@@ -220,7 +220,8 @@ class ExecuteTest(fixtures.TestBase):
                             {"foo":"bar"}, 
                             orig),
             tsa.exc.NoReferencedTableError("message", "tname"),
-            tsa.exc.NoReferencedColumnError("message", "tname", "cname")
+            tsa.exc.NoReferencedColumnError("message", "tname", "cname"),
+            tsa.exc.CircularDependencyError("some message", [1, 2, 3], [(1, 2), (3, 4)]),
         ):
             for loads, dumps in picklers():
                 repickled = loads(dumps(sa_exc))