mirror of https://github.com/python/cpython
merge
This commit is contained in:
commit
f6b96c7bb5
|
@ -563,6 +563,10 @@ The module defines the following classes, functions and decorators:
|
||||||
As a shorthand for this type, :class:`bytes` can be used to
|
As a shorthand for this type, :class:`bytes` can be used to
|
||||||
annotate arguments of any of the types mentioned above.
|
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])
|
.. class:: List(list, MutableSequence[T])
|
||||||
|
|
||||||
Generic version of :class:`list`.
|
Generic version of :class:`list`.
|
||||||
|
|
|
@ -1572,6 +1572,9 @@ class CollectionsAbcTests(BaseTestCase):
|
||||||
def test_list(self):
|
def test_list(self):
|
||||||
self.assertIsSubclass(list, typing.List)
|
self.assertIsSubclass(list, typing.List)
|
||||||
|
|
||||||
|
def test_deque(self):
|
||||||
|
self.assertIsSubclass(collections.deque, typing.Deque)
|
||||||
|
|
||||||
def test_set(self):
|
def test_set(self):
|
||||||
self.assertIsSubclass(set, typing.Set)
|
self.assertIsSubclass(set, typing.Set)
|
||||||
self.assertNotIsSubclass(frozenset, typing.Set)
|
self.assertNotIsSubclass(frozenset, typing.Set)
|
||||||
|
@ -1642,6 +1645,14 @@ class CollectionsAbcTests(BaseTestCase):
|
||||||
self.assertIsSubclass(MyDefDict, collections.defaultdict)
|
self.assertIsSubclass(MyDefDict, collections.defaultdict)
|
||||||
self.assertNotIsSubclass(collections.defaultdict, MyDefDict)
|
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):
|
def test_no_set_instantiation(self):
|
||||||
with self.assertRaises(TypeError):
|
with self.assertRaises(TypeError):
|
||||||
typing.Set()
|
typing.Set()
|
||||||
|
|
|
@ -59,6 +59,7 @@ __all__ = [
|
||||||
'SupportsRound',
|
'SupportsRound',
|
||||||
|
|
||||||
# Concrete collection types.
|
# Concrete collection types.
|
||||||
|
'Deque',
|
||||||
'Dict',
|
'Dict',
|
||||||
'DefaultDict',
|
'DefaultDict',
|
||||||
'List',
|
'List',
|
||||||
|
@ -1771,6 +1772,15 @@ class List(list, MutableSequence[T], extra=list):
|
||||||
"use list() instead")
|
"use list() instead")
|
||||||
return _generic_new(list, cls, *args, **kwds)
|
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):
|
class Set(set, MutableSet[T], extra=set):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue