From: Mike Bayer Date: Fri, 13 Nov 2015 16:01:49 +0000 (-0500) Subject: - fix missing argument in TypeDecorator.copy(), fixes #3584, references #2919 X-Git-Tag: rel_1_1_0b1~84^2~70^2~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37565d2ce2b4f0db5023c2549e2ddcb4a4ba0f7c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fix missing argument in TypeDecorator.copy(), fixes #3584, references #2919 --- diff --git a/lib/sqlalchemy/sql/type_api.py b/lib/sqlalchemy/sql/type_api.py index bc67270eb2..c367bc73e0 100644 --- a/lib/sqlalchemy/sql/type_api.py +++ b/lib/sqlalchemy/sql/type_api.py @@ -675,7 +675,7 @@ class TypeDecorator(SchemaEventTarget, TypeEngine): def process_result_value(self, value, dialect): return value[7:] - def copy(self): + def copy(self, **kw): return MyType(self.impl.length) The class-level "impl" attribute is required, and can reference any @@ -1136,7 +1136,7 @@ class TypeDecorator(SchemaEventTarget, TypeEngine): """ return self - def copy(self): + def copy(self, **kw): """Produce a copy of this :class:`.TypeDecorator` instance. This is a shallow copy and is provided to fulfill part of diff --git a/test/sql/test_metadata.py b/test/sql/test_metadata.py index 501df46711..d4039a5fec 100644 --- a/test/sql/test_metadata.py +++ b/test/sql/test_metadata.py @@ -7,7 +7,7 @@ from sqlalchemy import Integer, String, UniqueConstraint, \ CheckConstraint, ForeignKey, MetaData, Sequence, \ ForeignKeyConstraint, PrimaryKeyConstraint, ColumnDefault, Index, event,\ events, Unicode, types as sqltypes, bindparam, \ - Table, Column, Boolean, Enum, func, text + Table, Column, Boolean, Enum, func, text, TypeDecorator from sqlalchemy import schema, exc from sqlalchemy.sql import elements, naming import sqlalchemy as tsa @@ -1547,6 +1547,20 @@ class SchemaTypeTest(fixtures.TestBase): # our test type sets table, though is_(t2.c.y.type.table, t2) + def test_tometadata_copy_decorated(self): + + class MyDecorated(TypeDecorator): + impl = self.MyType + + m1 = MetaData() + + type_ = MyDecorated(schema="z") + t1 = Table('x', m1, Column("y", type_)) + + m2 = MetaData() + t2 = t1.tometadata(m2) + eq_(t2.c.y.type.schema, "z") + def test_tometadata_independent_schema(self): m1 = MetaData()