@@ -776,6 +776,31 @@ class D[U](T):
776
776
self .assertIn (int , C .D .__bases__ )
777
777
self .assertIs (C .D .x , str )
778
778
779
+
780
+ class DynamicClassTest (unittest .TestCase ):
781
+ def _set_type_params (self , ns , params ):
782
+ ns ['__type_params__' ] = params
783
+
784
+ def test_types_new_class_with_callback (self ):
785
+ T = TypeVar ('T' , infer_variance = True )
786
+ Klass = types .new_class ('Klass' , (Generic [T ],), {},
787
+ lambda ns : self ._set_type_params (ns , (T ,)))
788
+
789
+ self .assertEqual (Klass .__bases__ , (Generic ,))
790
+ self .assertEqual (Klass .__orig_bases__ , (Generic [T ],))
791
+ self .assertEqual (Klass .__type_params__ , (T ,))
792
+ self .assertEqual (Klass .__parameters__ , (T ,))
793
+
794
+ def test_types_new_class_no_callback (self ):
795
+ T = TypeVar ('T' , infer_variance = True )
796
+ Klass = types .new_class ('Klass' , (Generic [T ],), {})
797
+
798
+ self .assertEqual (Klass .__bases__ , (Generic ,))
799
+ self .assertEqual (Klass .__orig_bases__ , (Generic [T ],))
800
+ self .assertEqual (Klass .__type_params__ , ()) # must be explicitly set
801
+ self .assertEqual (Klass .__parameters__ , (T ,))
802
+
803
+
779
804
class TypeParamsManglingTest (unittest .TestCase ):
780
805
def test_mangling (self ):
781
806
class Foo [__T ]:
0 commit comments