From cb0c1eda24e1546fcdc9b4e46adc1c5fb14b60d0 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Fri, 26 Sep 2014 10:59:39 -0400 Subject: [PATCH] comments --- lib/sqlalchemy/ext/declarative/base.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 " -- 2.47.2