From: Mike Bayer Date: Sun, 24 Jul 2011 17:36:40 +0000 (-0400) Subject: - fix annotation for aliased() X-Git-Tag: rel_0_6_9~37 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e5737a6d896ba54da07c7ffb0bc56121732ade72;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - fix annotation for aliased() --- diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 0035b57cd5..fc0ab38767 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -3362,7 +3362,7 @@ class Alias(FromClause): def _copy_internals(self, clone=_clone): self._reset_exported() - self.element = _clone(self.element) + self.element = clone(self.element) baseselectable = self.element while isinstance(baseselectable, Alias): baseselectable = baseselectable.element diff --git a/test/sql/test_selectable.py b/test/sql/test_selectable.py index dd0bf52756..8e716fcee4 100644 --- a/test/sql/test_selectable.py +++ b/test/sql/test_selectable.py @@ -821,6 +821,13 @@ class AnnotationsTest(TestBase): b5 = visitors.cloned_traverse(b3, {}, {'binary':visit_binary}) assert str(b5) == ":bar = table1.col2" + def test_annotate_aliased(self): + t1 = table('t1', column('c1')) + s = select([(t1.c.c1 + 3).label('bat')]) + a = s.alias() + a = sql_util._deep_annotate(a, {'foo': 'bar'}) + eq_(a._annotations['foo'], 'bar') + eq_(a.element._annotations['foo'], 'bar') def test_annotate_expressions(self): table1 = table('table1', column('col1'), column('col2'))