Issue #9214:  Fix set operations on KeysView and ItemsView.
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 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 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 @@
 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.