From a3c1774859eb80552bdf9beccd4160e246dfe014 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 14 Mar 2011 15:01:17 -0400 Subject: - Arguments in __mapper_args__ that aren't "hashable" aren't mistaken for always-hashable, possibly-column arguments. [ticket:2091] --- lib/sqlalchemy/ext/declarative.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/sqlalchemy/ext/declarative.py b/lib/sqlalchemy/ext/declarative.py index 0372d4dac..e521ddbbf 100755 --- a/lib/sqlalchemy/ext/declarative.py +++ b/lib/sqlalchemy/ext/declarative.py @@ -782,7 +782,7 @@ it as part of ``__table_args__``:: class MyMixin(object): a = Column(Integer) b = Column(Integer) - + @declared_attr def __table_args__(cls): return (Index('test_idx_%s' % cls.__tablename__, 'a', 'b'),) @@ -944,9 +944,10 @@ def _as_declarative(cls, classname, dict_): # make sure that column copies are used rather # than the original columns from any mixins - for k, v in mapper_args.iteritems(): - mapper_args[k] = column_copies.get(v,v) - + for k in ('version_id_col', 'polymorphic_on',): + if k in mapper_args: + v = mapper_args[k] + mapper_args[k] = column_copies.get(v,v) if classname in cls._decl_class_registry: util.warn("The classname %r is already in the registry of this" @@ -1122,6 +1123,7 @@ def _as_declarative(cls, classname, dict_): # change this ordering when we do [ticket:1892] our_stuff[k] = p.columns + [col] + cls.__mapper__ = mapper_cls(cls, table, properties=our_stuff, -- cgit v1.2.1