[Python-checkins] r72755 - in python/branches/release30-maint: Lib/_weakrefset.py Lib/test/test_weakset.py
robert.schuppenies
python-checkins at python.org
Mon May 18 00:03:27 CEST 2009
Author: robert.schuppenies
Date: Mon May 18 00:03:27 2009
New Revision: 72755
Log:
Merged revisions 72751 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r72751 | robert.schuppenies | 2009-05-17 10:32:20 -0700 (Sun, 17 May 2009) | 2 lines
Issue 5964: Fixed WeakSet __eq__ comparison to handle non-WeakSet objects.
........
Modified:
python/branches/release30-maint/ (props changed)
python/branches/release30-maint/Lib/_weakrefset.py
python/branches/release30-maint/Lib/test/test_weakset.py
Modified: python/branches/release30-maint/Lib/_weakrefset.py
==============================================================================
--- python/branches/release30-maint/Lib/_weakrefset.py (original)
+++ python/branches/release30-maint/Lib/_weakrefset.py Mon May 18 00:03:27 2009
@@ -118,6 +118,8 @@
return self.data >= set(ref(item) for item in other)
def __eq__(self, other):
+ if not isinstance(other, self.__class__):
+ return NotImplemented
return self.data == set(ref(item) for item in other)
def symmetric_difference(self, other):
Modified: python/branches/release30-maint/Lib/test/test_weakset.py
==============================================================================
--- python/branches/release30-maint/Lib/test/test_weakset.py (original)
+++ python/branches/release30-maint/Lib/test/test_weakset.py Mon May 18 00:03:27 2009
@@ -134,13 +134,11 @@
def test_gc(self):
# Create a nest of cycles to exercise overall ref count check
- class A:
- pass
- s = set(A() for i in range(1000))
+ s = WeakSet(Foo() for i in range(1000))
for elem in s:
elem.cycle = s
elem.sub = elem
- elem.set = set([elem])
+ elem.set = WeakSet([elem])
def test_subclass_with_custom_hash(self):
# Bug #1257731
@@ -169,17 +167,12 @@
t = WeakSet(s)
self.assertNotEqual(id(s), id(t))
- def test_set_literal(self):
- s = set([1,2,3])
- t = {1,2,3}
- self.assertEqual(s, t)
-
def test_hash(self):
self.assertRaises(TypeError, hash, self.s)
def test_clear(self):
self.s.clear()
- self.assertEqual(self.s, set())
+ self.assertEqual(self.s, WeakSet([]))
self.assertEqual(len(self.s), 0)
def test_copy(self):
@@ -304,6 +297,16 @@
t ^= t
self.assertEqual(t, WeakSet())
+ def test_eq(self):
+ # issue 5964
+ self.assertTrue(self.s == self.s)
+ self.assertTrue(self.s == WeakSet(self.items))
+ self.assertFalse(self.s == set(self.items))
+ self.assertFalse(self.s == list(self.items))
+ self.assertFalse(self.s == tuple(self.items))
+ self.assertFalse(self.s == WeakSet([Foo]))
+ self.assertFalse(self.s == 1)
+
def test_main(verbose=None):
support.run_unittest(TestWeakSet)
More information about the Python-checkins
mailing list