@@ -708,6 +708,31 @@ class D[U](T):
708
708
self .assertIn (int , C .D .__bases__ )
709
709
self .assertIs (C .D .x , str )
710
710
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
+
711
736
class TypeParamsManglingTest (unittest .TestCase ):
712
737
def test_mangling (self ):
713
738
class Foo [__T ]:
0 commit comments