]> granicus.if.org Git - python/commit
SF 742860: WeakKeyDictionary __delitem__ uses iterkeys
authorTim Peters <tim.peters@gmail.com>
Sun, 25 May 2003 01:45:11 +0000 (01:45 +0000)
committerTim Peters <tim.peters@gmail.com>
Sun, 25 May 2003 01:45:11 +0000 (01:45 +0000)
commit886128f4f8b30b7e3623418eab063a3a8dd3495c
tree4f4e74b0d3fcd6251c52ca8419f0b1eff178ff22
parent6f805942290b8d83f0e229de98c8d0d7a2a7c3e8
SF 742860: WeakKeyDictionary __delitem__ uses iterkeys

Someone review this, please!  Final releases are getting close, Fred
(the weakref guy) won't be around until Tuesday, and the pre-patch
code can indeed raise spurious RuntimeErrors in the presence of
threads or mutating comparison functions.

See the bug report for my confusions:  I can't see any reason for why
__delitem__ iterated over the keys.  The new one-liner implementation
is much faster, can't raise RuntimeError, and should be better-behaved
in all respects wrt threads.

New tests test_weak_keyed_bad_delitem and
test_weak_keyed_cascading_deletes fail before this patch.

Bugfix candidate for 2.2.3 too, if someone else agrees with this patch.
Lib/test/test_weakref.py
Lib/weakref.py
Misc/NEWS