From: Mike Bayer Date: Fri, 26 Sep 2014 14:59:39 +0000 (-0400) Subject: comments X-Git-Tag: rel_1_0_0b1~70^2~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cb0c1eda24e1546fcdc9b4e46adc1c5fb14b60d0;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git comments --- diff --git a/lib/sqlalchemy/ext/declarative/base.py b/lib/sqlalchemy/ext/declarative/base.py index 9cf07e208e..291608b6cc 100644 --- a/lib/sqlalchemy/ext/declarative/base.py +++ b/lib/sqlalchemy/ext/declarative/base.py @@ -254,7 +254,6 @@ class _MapperConfig(object): for k in list(dict_): - # TODO: improve this ? all dunders ? if k in ('__table__', '__tablename__', '__mapper_args__'): continue @@ -276,12 +275,18 @@ class _MapperConfig(object): "%s: possibly a copy-and-paste error with a comma " "left at the end of the line?" % k) continue - if not isinstance(value, (Column, MapperProperty)): + elif not isinstance(value, (Column, MapperProperty)): + # using @declared_attr for some object that + # isn't Column/MapperProperty; remove from the dict_ + # and place the evaulated value onto the class. if not k.startswith('__'): dict_.pop(k) setattr(cls, k, value) continue - if k == 'metadata': + # we expect to see the name 'metadata' in some valid cases; + # however at this point we see it's assigned to something trying + # to be mapped, so raise for that. + elif k == 'metadata': raise exc.InvalidRequestError( "Attribute name 'metadata' is reserved " "for the MetaData instance when using a "