From 405c223ae50e78dacac08783c414619db20df0b7 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 29 Jul 2014 13:32:05 -0400 Subject: [PATCH] - Fixed 0.9.7 regression caused by :ticket:`3067` in conjunction with a mis-named unit test such that so-called "schema" types like :class:`.Boolean` and :class:`.Enum` could no longer be pickled. fixes #3144 diff --git a/lib/sqlalchemy/sql/elements.py b/lib/sqlalchemy/sql/elements.py index 6114460..6cbf583 100644 --- a/lib/sqlalchemy/sql/elements.py +++ b/lib/sqlalchemy/sql/elements.py @@ -3276,6 +3276,9 @@ class _defer_name(_truncated_label): else: return super(_defer_name, cls).__new__(cls, value) + def __reduce__(self): + return self.__class__, (util.text_type(self), ) + class _defer_none_name(_defer_name): """indicate a 'deferred' name that was ultimately the value None.""" diff --git a/test/sql/test_types.py b/test/sql/test_types.py index 03d3997..efa0f90 100644 --- a/test/sql/test_types.py +++ b/test/sql/test_types.py @@ -234,9 +234,9 @@ class TypeAffinityTest(fixtures.TestBase): assert t1.dialect_impl(d)._type_affinity is postgresql.UUID -class PickleMetadataTest(fixtures.TestBase): +class PickleTypesTest(fixtures.TestBase): - def testmeta(self): + def test_pickle_types(self): for loads, dumps in picklers(): column_types = [ Column('Boo', Boolean()),