From 01c4f3e8253b708df2266e6847ffc649603eec02 Mon Sep 17 00:00:00 2001 From: Michael Merickel Date: Sat, 16 Jul 2011 14:51:11 -0500 Subject: Modified the order of the WeakOrderedSet to remember the most recent. --- pyramid/util.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pyramid/util.py b/pyramid/util.py index a4b69ed96..7fd1b0dc6 100644 --- a/pyramid/util.py +++ b/pyramid/util.py @@ -151,6 +151,17 @@ class WeakOrderedSet(object): The values may be iterated over or the last item added may be accessed via the ``last`` property. + + If items are added more than once, the most recent addition will + be remembered in the order: + + order = WeakOrderedSet() + order.add('1') + order.add('2') + order.add('1') + + list(order) == ['2', '1'] + order.last == '1' """ def __init__(self): @@ -161,6 +172,8 @@ class WeakOrderedSet(object): """ Add an item to the set.""" oid = id(item) if oid in self._items: + self._order.remove(oid) + self._order.append(oid) return ref = weakref.ref(item, lambda x: self.remove(item)) self._items[oid] = ref -- cgit v1.2.3