@@ -859,7 +859,12 @@ def __init__(self, arg):
859859
860860from  _testinternalcapi  import  has_inline_values 
861861
862- Py_TPFLAGS_MANAGED_DICT  =  (1  <<  2 )
862+ Py_TPFLAGS_INLINE_VALUES  =  (1  <<  2 )
863+ Py_TPFLAGS_MANAGED_DICT  =  (1  <<  4 )
864+ 
865+ class  NoManagedDict :
866+     __slots__  =  ('a' ,)
867+ 
863868
864869class  Plain :
865870    pass 
@@ -874,11 +879,31 @@ def __init__(self):
874879        self .d  =  4 
875880
876881
882+ class  VarSizedSubclass (tuple ):
883+     pass 
884+ 
885+ 
877886class  TestInlineValues (unittest .TestCase ):
878887
879-     def  test_flags (self ):
880-         self .assertEqual (Plain .__flags__  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
881-         self .assertEqual (WithAttrs .__flags__  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
888+     def  test_no_flags_for_slots_class (self ):
889+         flags  =  NoManagedDict .__flags__ 
890+         self .assertEqual (flags  &  Py_TPFLAGS_MANAGED_DICT , 0 )
891+         self .assertEqual (flags  &  Py_TPFLAGS_INLINE_VALUES , 0 )
892+         self .assertFalse (has_inline_values (NoManagedDict ()))
893+ 
894+     def  test_both_flags_for_regular_class (self ):
895+         for  cls  in  (Plain , WithAttrs ):
896+             with  self .subTest (cls = cls .__name__ ):
897+                 flags  =  cls .__flags__ 
898+                 self .assertEqual (flags  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
899+                 self .assertEqual (flags  &  Py_TPFLAGS_INLINE_VALUES , Py_TPFLAGS_INLINE_VALUES )
900+                 self .assertTrue (has_inline_values (cls ()))
901+ 
902+     def  test_managed_dict_only_for_varsized_subclass (self ):
903+         flags  =  VarSizedSubclass .__flags__ 
904+         self .assertEqual (flags  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
905+         self .assertEqual (flags  &  Py_TPFLAGS_INLINE_VALUES , 0 )
906+         self .assertFalse (has_inline_values (VarSizedSubclass ()))
882907
883908    def  test_has_inline_values (self ):
884909        c  =  Plain ()
0 commit comments