This commit is contained in:
Mike Bayer
2013-06-08 19:07:52 -04:00
parent 85368d25ed
commit a144f55e65
2 changed files with 6 additions and 15 deletions
+1 -4
View File
@@ -812,11 +812,8 @@ class ClauseAdapter(visitors.ReplacingCloningVisitor):
def __init__(self, selectable, equivalents=None,
include=None, exclude=None,
include_fn=None, exclude_fn=None,
adapt_on_names=False,
traverse_options=None):
adapt_on_names=False):
self.__traverse_options__ = {'stop_on': [selectable]}
if traverse_options:
self.__traverse_options__.update(traverse_options)
self.selectable = selectable
if include:
assert not include_fn
+5 -11
View File
@@ -256,12 +256,8 @@ def cloned_traverse(obj, opts, visitors):
"""clone the given expression structure, allowing
modifications by visitors."""
if "cloned" in opts:
cloned = opts['cloned']
else:
cloned = util.column_dict()
stop_on = util.column_set(opts.get('stop_on', []))
cloned = {}
stop_on = set(opts.get('stop_on', []))
def clone(elem):
if elem in stop_on:
@@ -284,14 +280,12 @@ def replacement_traverse(obj, opts, replace):
"""clone the given expression structure, allowing element
replacement by a given replacement function."""
cloned = util.column_dict()
stop_on = util.column_set([id(x) for x in opts.get('stop_on', [])])
unconditional = opts.get('unconditional', False)
cloned = {}
stop_on = set([id(x) for x in opts.get('stop_on', [])])
def clone(elem, **kw):
if id(elem) in stop_on or \
(not unconditional
and 'no_replacement_traverse' in elem._annotations):
'no_replacement_traverse' in elem._annotations:
return elem
else:
newelem = replace(elem)