@@ -6695,6 +6695,22 @@ def test_copy_and_pickle(self):
6695
6695
self .assertEqual (jane2 , jane )
6696
6696
self .assertIsInstance (jane2 , cls )
6697
6697
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
+
6698
6714
6699
6715
class TypedDictTests (BaseTestCase ):
6700
6716
def test_basics_functional_syntax (self ):
@@ -7126,6 +7142,49 @@ class TD(TypedDict):
7126
7142
self .assertIs (type (a ), dict )
7127
7143
self .assertEqual (a , {'a' : 1 })
7128
7144
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
+
7129
7188
7130
7189
class RequiredTests (BaseTestCase ):
7131
7190
0 commit comments