@@ -841,7 +841,12 @@ def __init__(self, obj):
841841
842842from  _testinternalcapi  import  has_inline_values 
843843
844- Py_TPFLAGS_MANAGED_DICT  =  (1  <<  2 )
844+ Py_TPFLAGS_INLINE_VALUES  =  (1  <<  2 )
845+ Py_TPFLAGS_MANAGED_DICT  =  (1  <<  4 )
846+ 
847+ class  NoManagedDict :
848+     __slots__  =  ('a' ,)
849+ 
845850
846851class  Plain :
847852    pass 
@@ -856,11 +861,31 @@ def __init__(self):
856861        self .d  =  4 
857862
858863
864+ class  VarSizedSubclass (tuple ):
865+     pass 
866+ 
867+ 
859868class  TestInlineValues (unittest .TestCase ):
860869
861-     def  test_flags (self ):
862-         self .assertEqual (Plain .__flags__  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
863-         self .assertEqual (WithAttrs .__flags__  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
870+     def  test_no_flags_for_slots_class (self ):
871+         flags  =  NoManagedDict .__flags__ 
872+         self .assertEqual (flags  &  Py_TPFLAGS_MANAGED_DICT , 0 )
873+         self .assertEqual (flags  &  Py_TPFLAGS_INLINE_VALUES , 0 )
874+         self .assertFalse (has_inline_values (NoManagedDict ()))
875+ 
876+     def  test_both_flags_for_regular_class (self ):
877+         for  cls  in  (Plain , WithAttrs ):
878+             with  self .subTest (cls = cls .__name__ ):
879+                 flags  =  cls .__flags__ 
880+                 self .assertEqual (flags  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
881+                 self .assertEqual (flags  &  Py_TPFLAGS_INLINE_VALUES , Py_TPFLAGS_INLINE_VALUES )
882+                 self .assertTrue (has_inline_values (cls ()))
883+ 
884+     def  test_managed_dict_only_for_varsized_subclass (self ):
885+         flags  =  VarSizedSubclass .__flags__ 
886+         self .assertEqual (flags  &  Py_TPFLAGS_MANAGED_DICT , Py_TPFLAGS_MANAGED_DICT )
887+         self .assertEqual (flags  &  Py_TPFLAGS_INLINE_VALUES , 0 )
888+         self .assertFalse (has_inline_values (VarSizedSubclass ()))
864889
865890    def  test_has_inline_values (self ):
866891        c  =  Plain ()
0 commit comments