@@ -660,12 +660,35 @@ def __repr__(self):
660660 self .assertEqual (repr (MyEnum .A ), '<MyEnum.A: 0x1>' )
661661 #
662662 class SillyInt (HexInt ):
663+ __qualname__ = 'SillyInt'
663664 pass
664665 class MyOtherEnum (SillyInt , enum .Enum ):
666+ __qualname__ = 'MyOtherEnum'
665667 D = 4
666668 E = 5
667669 F = 6
668670 self .assertIs (MyOtherEnum ._member_type_ , SillyInt )
671+ globals ()['SillyInt' ] = SillyInt
672+ globals ()['MyOtherEnum' ] = MyOtherEnum
673+ test_pickle_dump_load (self .assertIs , MyOtherEnum .E )
674+ test_pickle_dump_load (self .assertIs , MyOtherEnum )
675+ #
676+ # This did not work in 3.9, but does now with pickling by name
677+ class UnBrokenInt (int ):
678+ __qualname__ = 'UnBrokenInt'
679+ def __new__ (cls , value ):
680+ return int .__new__ (cls , value )
681+ class MyUnBrokenEnum (UnBrokenInt , Enum ):
682+ __qualname__ = 'MyUnBrokenEnum'
683+ G = 7
684+ H = 8
685+ I = 9
686+ self .assertIs (MyUnBrokenEnum ._member_type_ , UnBrokenInt )
687+ self .assertIs (MyUnBrokenEnum (7 ), MyUnBrokenEnum .G )
688+ globals ()['UnBrokenInt' ] = UnBrokenInt
689+ globals ()['MyUnBrokenEnum' ] = MyUnBrokenEnum
690+ test_pickle_dump_load (self .assertIs , MyUnBrokenEnum .I )
691+ test_pickle_dump_load (self .assertIs , MyUnBrokenEnum )
669692
670693 def test_too_many_data_types (self ):
671694 with self .assertRaisesRegex (TypeError , 'too many data types' ):
0 commit comments