@@ -660,12 +660,35 @@ def __repr__(self):
660
660
self .assertEqual (repr (MyEnum .A ), '<MyEnum.A: 0x1>' )
661
661
#
662
662
class SillyInt (HexInt ):
663
+ __qualname__ = 'SillyInt'
663
664
pass
664
665
class MyOtherEnum (SillyInt , enum .Enum ):
666
+ __qualname__ = 'MyOtherEnum'
665
667
D = 4
666
668
E = 5
667
669
F = 6
668
670
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 )
669
692
670
693
def test_too_many_data_types (self ):
671
694
with self .assertRaisesRegex (TypeError , 'too many data types' ):
0 commit comments