@@ -6695,6 +6695,22 @@ def test_copy_and_pickle(self):
66956695 self .assertEqual (jane2 , jane )
66966696 self .assertIsInstance (jane2 , cls )
66976697
6698+ def test_orig_bases (self ):
6699+ T = TypeVar ('T' )
6700+
6701+ class SimpleNamedTuple (NamedTuple ):
6702+ pass
6703+
6704+ class GenericNamedTuple (NamedTuple , Generic [T ]):
6705+ pass
6706+
6707+ self .assertEqual (SimpleNamedTuple .__orig_bases__ , (NamedTuple ,))
6708+ self .assertEqual (GenericNamedTuple .__orig_bases__ , (NamedTuple , Generic [T ]))
6709+
6710+ CallNamedTuple = NamedTuple ('CallNamedTuple' , [])
6711+
6712+ self .assertEqual (CallNamedTuple .__orig_bases__ , (NamedTuple ,))
6713+
66986714
66996715class TypedDictTests (BaseTestCase ):
67006716 def test_basics_functional_syntax (self ):
@@ -7126,6 +7142,49 @@ class TD(TypedDict):
71267142 self .assertIs (type (a ), dict )
71277143 self .assertEqual (a , {'a' : 1 })
71287144
7145+ def test_orig_bases (self ):
7146+ T = TypeVar ('T' )
7147+
7148+ class Parent (TypedDict ):
7149+ pass
7150+
7151+ class Child (Parent ):
7152+ pass
7153+
7154+ class OtherChild (Parent ):
7155+ pass
7156+
7157+ class MixedChild (Child , OtherChild , Parent ):
7158+ pass
7159+
7160+ class GenericParent (TypedDict , Generic [T ]):
7161+ pass
7162+
7163+ class GenericChild (GenericParent [int ]):
7164+ pass
7165+
7166+ class OtherGenericChild (GenericParent [str ]):
7167+ pass
7168+
7169+ class MixedGenericChild (GenericChild , OtherGenericChild , GenericParent [float ]):
7170+ pass
7171+
7172+ class MultipleGenericBases (GenericParent [int ], GenericParent [float ]):
7173+ pass
7174+
7175+ CallTypedDict = TypedDict ('CallTypedDict' , {})
7176+
7177+ self .assertEqual (Parent .__orig_bases__ , (TypedDict ,))
7178+ self .assertEqual (Child .__orig_bases__ , (Parent ,))
7179+ self .assertEqual (OtherChild .__orig_bases__ , (Parent ,))
7180+ self .assertEqual (MixedChild .__orig_bases__ , (Child , OtherChild , Parent ,))
7181+ self .assertEqual (GenericParent .__orig_bases__ , (TypedDict , Generic [T ]))
7182+ self .assertEqual (GenericChild .__orig_bases__ , (GenericParent [int ],))
7183+ self .assertEqual (OtherGenericChild .__orig_bases__ , (GenericParent [str ],))
7184+ self .assertEqual (MixedGenericChild .__orig_bases__ , (GenericChild , OtherGenericChild , GenericParent [float ]))
7185+ self .assertEqual (MultipleGenericBases .__orig_bases__ , (GenericParent [int ], GenericParent [float ]))
7186+ self .assertEqual (CallTypedDict .__orig_bases__ , (TypedDict ,))
7187+
71297188
71307189class RequiredTests (BaseTestCase ):
71317190
0 commit comments