diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-01 12:45:51 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-01 12:45:51 -0400 |
commit | 3b7ef1b32dfd8e9d93ffd99f4c40a1d020b083d1 (patch) | |
tree | 10bd99872d1fd98ce20ad0980c5147f5e365c538 /lib/sqlalchemy/topological.py | |
parent | 1258d1ed9e8064e08fd77d2dc3938fcebc130800 (diff) | |
download | sqlalchemy-3b7ef1b32dfd8e9d93ffd99f4c40a1d020b083d1.tar.gz |
- id(obj) is no longer used internally within topological.py,
as the sorting functions now require hashable objects
only. [ticket:1756]
Diffstat (limited to 'lib/sqlalchemy/topological.py')
-rw-r--r-- | lib/sqlalchemy/topological.py | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/lib/sqlalchemy/topological.py b/lib/sqlalchemy/topological.py index 9e584ff4e..d061aec04 100644 --- a/lib/sqlalchemy/topological.py +++ b/lib/sqlalchemy/topological.py @@ -161,21 +161,20 @@ def _sort(tuples, allitems, allow_cycles=False, ignore_self_cycles=False): edges = _EdgeCollection() for item in list(allitems) + [t[0] for t in tuples] + [t[1] for t in tuples]: - item_id = id(item) - if item_id not in nodes: - nodes[item_id] = _Node(item) + if item not in nodes: + nodes[item] = _Node(item) for t in tuples: - id0, id1 = id(t[0]), id(t[1]) - if t[0] is t[1]: + t0, t1 = t[0], t[1] + if t0 is t1: if allow_cycles: - n = nodes[id0] + n = nodes[t0] n.cycles = set([n]) elif not ignore_self_cycles: raise CircularDependencyError("Self-referential dependency detected: %r" % t) continue - childnode = nodes[id1] - parentnode = nodes[id0] + childnode = nodes[t1] + parentnode = nodes[t0] edges.add((parentnode, childnode)) queue = [] @@ -207,11 +206,11 @@ def _sort(tuples, allitems, allow_cycles=False, ignore_self_cycles=False): continue else: # long cycles not allowed - raise CircularDependencyError("Circular dependency detected: %r %r " % (edges, queue)) + raise CircularDependencyError("Circular dependency detected: %r" % edges) node = queue.pop() if not hasattr(node, '_cyclical'): output.append(node) - del nodes[id(node.item)] + del nodes[node.item] for childnode in edges.pop_node(node): queue.append(childnode) return output |