@@ -708,6 +708,31 @@ class D[U](T):
708708 self .assertIn (int , C .D .__bases__ )
709709 self .assertIs (C .D .x , str )
710710
711+
712+ class DynamicClassTest (unittest .TestCase ):
713+ def _set_type_params (self , ns , params ):
714+ ns ['__type_params__' ] = params
715+
716+ def test_types_new_class_with_callback (self ):
717+ T = TypeVar ('T' , infer_variance = True )
718+ Klass = types .new_class ('Klass' , (Generic [T ],), {},
719+ lambda ns : self ._set_type_params (ns , (T ,)))
720+
721+ self .assertEqual (Klass .__bases__ , (Generic ,))
722+ self .assertEqual (Klass .__orig_bases__ , (Generic [T ],))
723+ self .assertEqual (Klass .__type_params__ , (T ,))
724+ self .assertEqual (Klass .__parameters__ , (T ,))
725+
726+ def test_types_new_class_no_callback (self ):
727+ T = TypeVar ('T' , infer_variance = True )
728+ Klass = types .new_class ('Klass' , (Generic [T ],), {})
729+
730+ self .assertEqual (Klass .__bases__ , (Generic ,))
731+ self .assertEqual (Klass .__orig_bases__ , (Generic [T ],))
732+ self .assertEqual (Klass .__type_params__ , ()) # must be explicitly set
733+ self .assertEqual (Klass .__parameters__ , (T ,))
734+
735+
711736class TypeParamsManglingTest (unittest .TestCase ):
712737 def test_mangling (self ):
713738 class Foo [__T ]:
0 commit comments