From 9128732de668e5777e135a423d3fa8b9bbd71fe1 Mon Sep 17 00:00:00 2001 From: Daniel Stutzbach Date: Tue, 24 Aug 2010 21:09:30 +0000 Subject: Merged revisions 84301 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r84301 | daniel.stutzbach | 2010-08-24 15:49:57 -0500 (Tue, 24 Aug 2010) | 1 line Issue 8750: Fixed MutableSet's methods to correctly handle reflexive operations, namely x -= x and x ^= x ........ --- Lib/_abcoll.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'Lib/_abcoll.py') diff --git a/Lib/_abcoll.py b/Lib/_abcoll.py index e9234af382..73e668c11c 100644 --- a/Lib/_abcoll.py +++ b/Lib/_abcoll.py @@ -305,18 +305,24 @@ class MutableSet(Set): return self def __ixor__(self, it): - if not isinstance(it, Set): - it = self._from_iterable(it) - for value in it: - if value in self: - self.discard(value) - else: - self.add(value) + if it is self: + self.clear() + else: + if not isinstance(it, Set): + it = self._from_iterable(it) + for value in it: + if value in self: + self.discard(value) + else: + self.add(value) return self def __isub__(self, it): - for value in it: - self.discard(value) + if it is self: + self.clear() + else: + for value in it: + self.discard(value) return self MutableSet.register(set) -- cgit v1.2.1