mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	merge
This commit is contained in:
		
						commit
						e12c313f5e
					
				
					 4 changed files with 27 additions and 0 deletions
				
			
		|  | @ -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 | ||||
|    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`. | ||||
|  |  | |||
|  | @ -1572,6 +1572,9 @@ def test_bytestring(self): | |||
|     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 MyDefDict(typing.DefaultDict[str, int]): | |||
|         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() | ||||
|  |  | |||
|  | @ -59,6 +59,7 @@ | |||
|     'SupportsRound', | ||||
| 
 | ||||
|     # Concrete collection types. | ||||
|     'Deque', | ||||
|     'Dict', | ||||
|     'DefaultDict', | ||||
|     'List', | ||||
|  | @ -1771,6 +1772,15 @@ def __new__(cls, *args, **kwds): | |||
|                             "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): | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,6 +47,8 @@ Library | |||
| - Issue #29219: Fixed infinite recursion in the repr of uninitialized | ||||
|   ctypes.CDLL instances. | ||||
| 
 | ||||
| - Issue #29011:  Fix an important omission by adding Deque to the typing module. | ||||
| 
 | ||||
| - Issue #28969: Fixed race condition in C implementation of functools.lru_cache. | ||||
|   KeyError could be raised when cached function with full cache was | ||||
|   simultaneously called from differen threads with the same uncached arguments. | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Raymond Hettinger
						Raymond Hettinger