summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Stasiak <jakub@stasiak.at>2014-06-04 11:21:29 +0100
committerJakub Stasiak <jakub@stasiak.at>2014-06-04 11:21:29 +0100
commitf07c6784b6d4d9931aafd3ddd0e5d1016886cea0 (patch)
tree7d89d7b9197b1846ecd544076692f87602ec1202
parent9b62942e80252ae99c349091ffe3d858c8447fb4 (diff)
downloadsqlalchemy-pr/97.tar.gz
Remove another clone->clone reference cyclepr/97
-rw-r--r--lib/sqlalchemy/sql/visitors.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/visitors.py b/lib/sqlalchemy/sql/visitors.py
index d9ad04fc0..5bbbb40e2 100644
--- a/lib/sqlalchemy/sql/visitors.py
+++ b/lib/sqlalchemy/sql/visitors.py
@@ -26,6 +26,7 @@ http://techspot.zzzeek.org/2008/01/23/expression-transformations/
from collections import deque
from .. import util
import operator
+import weakref
from .. import exc
__all__ = ['VisitableType', 'Visitable', 'ClauseVisitor',
@@ -306,8 +307,9 @@ def replacement_traverse(obj, opts, replace):
else:
if elem not in cloned:
cloned[elem] = newelem = elem._clone()
- newelem._copy_internals(clone=clone, **kw)
+ newelem._copy_internals(clone=weak_clone, **kw)
return cloned[elem]
+ weak_clone = weakref.proxy(clone)
if obj is not None:
obj = clone(obj, **opts)