From: Mike Bayer Date: Thu, 12 Jan 2012 05:49:02 +0000 (-0500) Subject: another serializable for [ticket:2371] X-Git-Tag: rel_0_7_5~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7026ffe57c76821af3f1d5d01721e4035dc82de9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git another serializable for [ticket:2371] --- diff --git a/lib/sqlalchemy/exc.py b/lib/sqlalchemy/exc.py index 4f776b8371..64f25a22ff 100644 --- a/lib/sqlalchemy/exc.py +++ b/lib/sqlalchemy/exc.py @@ -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""" diff --git a/test/engine/test_execute.py b/test/engine/test_execute.py index 44e44982fe..d7293c136f 100644 --- a/test/engine/test_execute.py +++ b/test/engine/test_execute.py @@ -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))