summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2010-08-22 08:01:58 (GMT)
committerRaymond Hettinger <python@rcn.com>2010-08-22 08:01:58 (GMT)
commit917bba1f2a382d5251b94eeadc344ec6ed3eaa97 (patch)
treedd89a8e06736c0618f0a3f26de8501790a2f059a
parent058981b2ec2d96d58aea3fc285fee062a32a5854 (diff)
downloadcpython-917bba1f2a382d5251b94eeadc344ec6ed3eaa97.zip
cpython-917bba1f2a382d5251b94eeadc344ec6ed3eaa97.tar.gz
cpython-917bba1f2a382d5251b94eeadc344ec6ed3eaa97.tar.bz2
Issue #9214: Fix set operations on KeysView and ItemsView.
-rw-r--r--Lib/_abcoll.py8
-rw-r--r--Misc/NEWS3
2 files changed, 11 insertions, 0 deletions
diff --git a/Lib/_abcoll.py b/Lib/_abcoll.py
index a442d7c..e9234af 100644
--- a/Lib/_abcoll.py
+++ b/Lib/_abcoll.py
@@ -390,6 +390,10 @@ class MappingView(Sized):
class KeysView(MappingView, Set):
+ @classmethod
+ def _from_iterable(self, it):
+ return set(it)
+
def __contains__(self, key):
return key in self._mapping
@@ -400,6 +404,10 @@ class KeysView(MappingView, Set):
class ItemsView(MappingView, Set):
+ @classmethod
+ def _from_iterable(self, it):
+ return set(it)
+
def __contains__(self, item):
key, value = item
try:
diff --git a/Misc/NEWS b/Misc/NEWS
index e10f33d..d4fb9f2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,9 @@ Core and Builtins
Library
-------
+- Issue #9214: Set operations on KeysView or ItemsView in the collections
+ module now correctly return a set. (Patch by Eli Bendersky.)
+
- Issue #9617: Signals received during a low-level write operation aren't
ignored by the buffered IO layer anymore.