bpo-35341: Add generic version of OrderedDict to typing (GH-10850)
(cherry picked from commit 68b56d02ef20479b87c65e523cf3dec1b7b77d40)
Co-authored-by: Ismo Toijala <ismo.toijala@gmail.com>
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 6d8cc53..0d66ebb 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -2075,6 +2075,22 @@
self.assertIsSubclass(MyDefDict, collections.defaultdict)
self.assertNotIsSubclass(collections.defaultdict, MyDefDict)
+ def test_ordereddict_instantiation(self):
+ self.assertIs(type(typing.OrderedDict()), collections.OrderedDict)
+ self.assertIs(type(typing.OrderedDict[KT, VT]()), collections.OrderedDict)
+ self.assertIs(type(typing.OrderedDict[str, int]()), collections.OrderedDict)
+
+ def test_ordereddict_subclass(self):
+
+ class MyOrdDict(typing.OrderedDict[str, int]):
+ pass
+
+ od = MyOrdDict()
+ self.assertIsInstance(od, MyOrdDict)
+
+ self.assertIsSubclass(MyOrdDict, collections.OrderedDict)
+ self.assertNotIsSubclass(collections.OrderedDict, MyOrdDict)
+
@skipUnless(sys.version_info >= (3, 3), 'ChainMap was added in 3.3')
def test_chainmap_instantiation(self):
self.assertIs(type(typing.ChainMap()), collections.ChainMap)
diff --git a/Lib/typing.py b/Lib/typing.py
index cfcbb3b..8cf0d00 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -1242,6 +1242,7 @@
AsyncContextManager = _alias(contextlib.AbstractAsyncContextManager, T_co)
Dict = _alias(dict, (KT, VT), inst=False)
DefaultDict = _alias(collections.defaultdict, (KT, VT))
+OrderedDict = _alias(collections.OrderedDict, (KT, VT))
Counter = _alias(collections.Counter, T)
ChainMap = _alias(collections.ChainMap, (KT, VT))
Generator = _alias(collections.abc.Generator, (T_co, T_contra, V_co))