[Python-checkins] r84748 - python/branches/py3k/Lib/collections.py
raymond.hettinger
python-checkins at python.org
Sun Sep 12 20:13:47 CEST 2010
Author: raymond.hettinger
Date: Sun Sep 12 20:13:46 2010
New Revision: 84748
Log:
Use weakrefs for both forward and backward links.
Modified:
python/branches/py3k/Lib/collections.py
Modified: python/branches/py3k/Lib/collections.py
==============================================================================
--- python/branches/py3k/Lib/collections.py (original)
+++ python/branches/py3k/Lib/collections.py Sun Sep 12 20:13:46 2010
@@ -31,7 +31,9 @@
# The internal self.__map dictionary maps keys to links in a doubly linked list.
# The circular doubly linked list starts and ends with a sentinel element.
# The sentinel element never gets deleted (this simplifies the algorithm).
- # The back links are weakref proxies (to prevent circular references).
+ # The prev/next links are weakref proxies (to prevent circular references).
+ # Individual links are kept alive by the hard reference in self.__map.
+ # Those hard references disappear when a key is deleted from an OrderedDict.
def __init__(self, *args, **kwds):
'''Initialize an ordered dictionary. Signature is the same as for
@@ -60,8 +62,7 @@
root = self.__root
last = root.prev
link.prev, link.next, link.key = last, root, key
- last.next = link
- root.prev = proxy(link)
+ last.next = root.prev = proxy(link)
dict.__setitem__(self, key, value)
def __delitem__(self, key, dict_delitem=dict.__delitem__):
More information about the Python-checkins
mailing list