@@ -776,6 +776,31 @@ class D[U](T):
776776 self .assertIn (int , C .D .__bases__ )
777777 self .assertIs (C .D .x , str )
778778
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+
779804class TypeParamsManglingTest (unittest .TestCase ):
780805 def test_mangling (self ):
781806 class Foo [__T ]:
0 commit comments