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