diff -r 4c1b0c4405f6 Lib/_weakrefset.py --- a/Lib/_weakrefset.py Mon Nov 08 13:57:59 2010 +0100 +++ b/Lib/_weakrefset.py Mon Nov 08 09:24:27 2010 -0500 @@ -66,7 +66,10 @@ return sum(x() is not None for x in self.data) def __contains__(self, item): - return ref(item) in self.data + try: + return ref(item) in self.data + except TypeError: + return False def __reduce__(self): return (self.__class__, (list(self),), diff -r 4c1b0c4405f6 Lib/test/test_weakset.py --- a/Lib/test/test_weakset.py Mon Nov 08 13:57:59 2010 +0100 +++ b/Lib/test/test_weakset.py Mon Nov 08 09:24:27 2010 -0500 @@ -62,7 +62,8 @@ def test_contains(self): for c in self.letters: self.assertEqual(c in self.s, c in self.d) - self.assertRaises(TypeError, self.s.__contains__, [[]]) + self.assertNotIn(None, self.s) + self.assertNotIn([], self.s) self.assertIn(self.obj, self.fs) del self.obj self.assertNotIn(SomeClass('F'), self.fs)