]> granicus.if.org Git - python/commitdiff
bpo-32467: Let collections.abc.ValuesView inherit from Collection (#5152)
authorRaymond Hettinger <rhettinger@users.noreply.github.com>
Fri, 12 Jan 2018 05:53:49 +0000 (21:53 -0800)
committerGitHub <noreply@github.com>
Fri, 12 Jan 2018 05:53:49 +0000 (21:53 -0800)
Doc/library/collections.abc.rst
Lib/_collections_abc.py
Lib/test/test_collections.py
Misc/NEWS.d/next/Library/2018-01-11-00-33-42.bpo-32467.YVEOv6.rst [new file with mode: 0644]

index 60154532094423bdcd61336d78cbbc06c530fa68..2a3fb142f7297e56d4294987f9078764ea509894 100644 (file)
@@ -87,7 +87,8 @@ ABC                        Inherits from          Abstract Methods        Mixin
                            :class:`Set`                                   ``__iter__``
 :class:`KeysView`          :class:`MappingView`,                          ``__contains__``,
                            :class:`Set`                                   ``__iter__``
-:class:`ValuesView`        :class:`MappingView`                           ``__contains__``, ``__iter__``
+:class:`ValuesView`        :class:`MappingView`,                          ``__contains__``, ``__iter__``
+                           :class:`Collection`
 :class:`Awaitable`                                ``__await__``
 :class:`Coroutine`         :class:`Awaitable`     ``send``, ``throw``     ``close``
 :class:`AsyncIterable`                            ``__aiter__``
index a5c7bfcda1d755ac673cb9555be778817ccffec1..dbe30dff1fe190a2d8cb79abb886f0f1f9939754 100644 (file)
@@ -746,7 +746,7 @@ class ItemsView(MappingView, Set):
 ItemsView.register(dict_items)
 
 
-class ValuesView(MappingView):
+class ValuesView(MappingView, Collection):
 
     __slots__ = ()
 
index cb662355bb708073e17d011d128361c3dfc287ac..a55239e57302e72aeb24a6604d2903a95f4b2e76 100644 (file)
@@ -843,13 +843,13 @@ class TestOneTrickPonyABCs(ABCTestCase):
             self.assertFalse(issubclass(type(x), Collection), repr(type(x)))
         # Check some non-collection iterables
         non_col_iterables = [_test_gen(), iter(b''), iter(bytearray()),
-                             (x for x in []), dict().values()]
+                             (x for x in [])]
         for x in non_col_iterables:
             self.assertNotIsInstance(x, Collection)
             self.assertFalse(issubclass(type(x), Collection), repr(type(x)))
         # Check some collections
         samples = [set(), frozenset(), dict(), bytes(), str(), tuple(),
-                   list(), dict().keys(), dict().items()]
+                   list(), dict().keys(), dict().items(), dict().values()]
         for x in samples:
             self.assertIsInstance(x, Collection)
             self.assertTrue(issubclass(type(x), Collection), repr(type(x)))
diff --git a/Misc/NEWS.d/next/Library/2018-01-11-00-33-42.bpo-32467.YVEOv6.rst b/Misc/NEWS.d/next/Library/2018-01-11-00-33-42.bpo-32467.YVEOv6.rst
new file mode 100644 (file)
index 0000000..58bf066
--- /dev/null
@@ -0,0 +1 @@
+collections.abc.ValuesView now inherits from collections.abc.Collection.