@@ -467,21 +467,14 @@ def add_coerce_type(typ):
467
467
for val in cls :
468
468
add_coerce_type (type (val .value ))
469
469
470
- for prop in cls .enum_properties :
471
- values = classdict ._ep_properties_ [prop ]
472
- setattr (
473
- cls ,
474
- f'_value2{ prop } _map_' ,
475
- dict (zip (cls ._value2member_map_ , values ))
476
- )
477
- setattr (
478
- cls ,
479
- prop ,
480
- property (
481
- lambda self , prop = prop :
482
- getattr (cls , f'_value2{ prop } _map_' ).get (self .value )
470
+ # set properties onto the members
471
+ for idx , member in enumerate (cls .__members__ .values ()):
472
+ for prop , values in classdict ._ep_properties_ .items ():
473
+ setattr (
474
+ member ,
475
+ prop ,
476
+ values [idx ]
483
477
)
484
- )
485
478
486
479
# we reverse to maintain precedence order for symmetric lookups
487
480
for prop in reversed ([
@@ -625,6 +618,19 @@ class FlagProperties(
625
618
A Flag that supports properties
626
619
"""
627
620
621
+ def _generate_next_value_ (name , start , count , last_values ):
622
+ """
623
+ Intermixed property tuples can corrupt the last_values list with
624
+ tuples. This method ensures only ints are present in last_values and
625
+ delegates to the super class.
626
+ """
627
+ return enum .Flag ._generate_next_value_ (
628
+ name ,
629
+ start ,
630
+ count ,
631
+ [val [0 ] if isinstance (val , tuple ) else val for val in last_values ]
632
+ )
633
+
628
634
629
635
class IntFlagProperties (
630
636
DecomposeMixin ,
@@ -635,3 +641,16 @@ class IntFlagProperties(
635
641
"""
636
642
An IntFlag that supports properties.
637
643
"""
644
+
645
+ def _generate_next_value_ (name , start , count , last_values ):
646
+ """
647
+ Intermixed property tuples can corrupt the last_values list with
648
+ tuples. This method ensures only ints are present in last_values and
649
+ delegates to the super class.
650
+ """
651
+ return enum .IntFlag ._generate_next_value_ (
652
+ name ,
653
+ start ,
654
+ count ,
655
+ [val [0 ] if isinstance (val , tuple ) else val for val in last_values ]
656
+ )
0 commit comments