diff options
author | Raymond Hettinger <python@rcn.com> | 2017-01-16 22:42:37 -0800 |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2017-01-16 22:42:37 -0800 |
commit | 80490525e0e9c08860b0de0c416dbe71c6593af7 (patch) | |
tree | aabf82fd00fdbfe92a1d416223c5d9849b61c5df | |
parent | a105dd3dc0b054f0d7977e19b682a0016b67790f (diff) | |
download | cpython-git-80490525e0e9c08860b0de0c416dbe71c6593af7.tar.gz |
Issue #29011: Fix an important omission by adding Deque to the typing module.
-rw-r--r-- | Doc/library/typing.rst | 4 | ||||
-rw-r--r-- | Lib/test/test_typing.py | 11 | ||||
-rw-r--r-- | Lib/typing.py | 10 | ||||
-rw-r--r-- | Misc/NEWS | 20 |
4 files changed, 41 insertions, 4 deletions
diff --git a/Doc/library/typing.rst b/Doc/library/typing.rst index 923cbb8da9..f89d886cd7 100644 --- a/Doc/library/typing.rst +++ b/Doc/library/typing.rst @@ -557,6 +557,10 @@ The module defines the following classes, functions and decorators: As a shorthand for this type, :class:`bytes` can be used to annotate arguments of any of the types mentioned above. +.. class:: Deque(deque, MutableSequence[T]) + + A generic version of :class:`collections.deque`. + .. class:: List(list, MutableSequence[T]) Generic version of :class:`list`. diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index d203ce3d59..7585412f4f 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -1572,6 +1572,9 @@ class CollectionsAbcTests(BaseTestCase): def test_list(self): self.assertIsSubclass(list, typing.List) + def test_deque(self): + self.assertIsSubclass(collections.deque, typing.Deque) + def test_set(self): self.assertIsSubclass(set, typing.Set) self.assertNotIsSubclass(frozenset, typing.Set) @@ -1642,6 +1645,14 @@ class CollectionsAbcTests(BaseTestCase): self.assertIsSubclass(MyDefDict, collections.defaultdict) self.assertNotIsSubclass(collections.defaultdict, MyDefDict) + def test_no_deque_instantiation(self): + with self.assertRaises(TypeError): + typing.Deque() + with self.assertRaises(TypeError): + typing.Deque[T]() + with self.assertRaises(TypeError): + typing.Deque[int]() + def test_no_set_instantiation(self): with self.assertRaises(TypeError): typing.Set() diff --git a/Lib/typing.py b/Lib/typing.py index 34845b747a..2821c3cb2d 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -59,6 +59,7 @@ __all__ = [ 'SupportsRound', # Concrete collection types. + 'Deque', 'Dict', 'DefaultDict', 'List', @@ -1771,6 +1772,15 @@ class List(list, MutableSequence[T], extra=list): "use list() instead") return _generic_new(list, cls, *args, **kwds) +class Deque(collections.deque, MutableSequence[T], extra=collections.deque): + + __slots__ = () + + def __new__(cls, *args, **kwds): + if _geqv(cls, Deque): + raise TypeError("Type Deque cannot be instantiated; " + "use deque() instead") + return _generic_new(collections.deque, cls, *args, **kwds) class Set(set, MutableSet[T], extra=set): @@ -2,6 +2,18 @@ Python News +++++++++++ +What's New in Python 3.5.4? +=========================== + +Core and Builtins +----------------- + +Library +------- + +- Issue #29011: Fix an important omission by adding Deque to the typing module. + + What's New in Python 3.5.3? =========================== @@ -528,17 +540,17 @@ Library - Issue #27972: Prohibit Tasks to await on themselves. -- Issue #26923: Fix asyncio.Gather to refuse being cancelled once all +- Issue #26923: Fix asyncio.Gather to refuse being cancelled once all children are done. Patch by Johannes Ebke. -- Issue #26796: Don't configure the number of workers for default +- Issue #26796: Don't configure the number of workers for default threadpool executor. Initial patch by Hans Lawrenz. - Issue #28600: Optimize loop.call_soon(). -- Issue #28613: Fix get_event_loop() return the current loop if +- Issue #28613: Fix get_event_loop() return the current loop if called from coroutines/callbacks. - Issue #28639: Fix inspect.isawaitable to always return bool @@ -553,7 +565,7 @@ Library - Issue #24142: Reading a corrupt config file left the parser in an invalid state. Original patch by Florian Höch. -- Issue #28990: Fix SSL hanging if connection is closed before handshake +- Issue #28990: Fix SSL hanging if connection is closed before handshake completed. (Patch by HoHo-Ho) |