[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 (2009年5月17日) | 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

AltStyle によって変換されたページ (->オリジナル) /