Make sure that WeakValueDictionary[] raises KeyError instead of TypeError

for keys that are not in the dictionary.
This commit is contained in:
Fred Drake 2001-08-03 04:11:27 +00:00
parent 5d54879647
commit 4fd06e0170
2 changed files with 6 additions and 1 deletions

View File

@ -252,6 +252,11 @@ class MappingTestCase(TestBase):
del objects, o del objects, o
self.assert_(len(dict) == 0, self.assert_(len(dict) == 0,
"deleting the values did not clear the dictionary") "deleting the values did not clear the dictionary")
# regression on SF bug #447152:
dict = weakref.WeakValueDictionary()
self.assertRaises(KeyError, dict.__getitem__, 1)
dict[2] = C()
self.assertRaises(KeyError, dict.__getitem__, 2)
def test_weak_keys(self): def test_weak_keys(self):
# #

View File

@ -41,7 +41,7 @@ class WeakValueDictionary(UserDict.UserDict):
# way in). # way in).
def __getitem__(self, key): def __getitem__(self, key):
o = self.data.get(key)() o = self.data[key]()
if o is None: if o is None:
raise KeyError, key raise KeyError, key
else: else: