From 3a56c4f019052c5dcd4e1cb5fd01a5680e6fc80e Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 24 Feb 2015 15:29:30 -0500 Subject: - repair issue in declared_attr.cascading such that within a subclass, the value returned by the descriptor is not available because the superclass is already mapped with the InstrumentedAttribute, until the subclass is mapped. We add a setattr() to set up that attribute so that the __mapper_args__ hook and possibly others have access to the "cascaded" version of the attribute within the call. --- lib/sqlalchemy/ext/declarative/base.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/sqlalchemy/ext/declarative') diff --git a/lib/sqlalchemy/ext/declarative/base.py b/lib/sqlalchemy/ext/declarative/base.py index 6735abf4c..d19257366 100644 --- a/lib/sqlalchemy/ext/declarative/base.py +++ b/lib/sqlalchemy/ext/declarative/base.py @@ -202,6 +202,7 @@ class _MapperConfig(object): if not oldclassprop and obj._cascading: dict_[name] = column_copies[obj] = \ ret = obj.__get__(obj, cls) + setattr(cls, name, ret) else: if oldclassprop: util.warn_deprecated( @@ -439,6 +440,7 @@ class _MapperConfig(object): def _prepare_mapper_arguments(self): properties = self.properties + if self.mapper_args_fn: mapper_args = self.mapper_args_fn() else: -- cgit v1.2.1