ethanfurman / aenum

Advanced Enumerations for Python
179 stars 13 forks source link

Regression - extend_enum broken on 3.1.1 using py36 #15

Closed Djailla closed 2 years ago

Djailla commented 2 years ago

Here is a sample code :


from aenum import Enum, extend_enum

class TestEnum(Enum):
    ABC = {
        'id': 0,
        'value': 'abc'
    }
    DEF = {
        'id': 1,
        'value': 'def'
    }

rand = uuid.uuid4().hex
new_value = {
    'id': 99,
    'value': 'new',
}
extend_enum(TestEnum, rand, new_value)

That generated this exception :


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~/Workspace/tools/mesos-services-configuration/.venv/lib/python3.6/site-packages/aenum/__init__.py in _finalize_extend_enum(enumeration, new_member, name, bits, mask, is_alias)
   3544         try:
-> 3545             enumeration._value2member_map_[v] = new_member
   3546         except TypeError:

TypeError: unhashable type: 'dict'

During handling of the above exception, another exception occurred:

UnboundLocalError                         Traceback (most recent call last)
<ipython-input-6-28ca1a4c681b> in <module>
     18     'value': 'new',
     19 }
---> 20 extend_enum(TestEnum, rand, new_value)

~/Workspace/tools/mesos-services-configuration/.venv/lib/python3.6/site-packages/aenum/__init__.py in extend_enum(enumeration, name, *args, **kwds)
   3521         else:
   3522             # if we get here, we have a brand new member
-> 3523             return _finalize_extend_enum(enumeration, new_member)
   3524 
   3525 def _finalize_extend_enum(enumeration, new_member, name=None, bits=None, mask=None, is_alias=False):

~/Workspace/tools/mesos-services-configuration/.venv/lib/python3.6/site-packages/aenum/__init__.py in _finalize_extend_enum(enumeration, new_member, name, bits, mask, is_alias)
   3545             enumeration._value2member_map_[v] = new_member
   3546         except TypeError:
-> 3547             _value2member_seq_ += ((v, new_member), )
   3548     if bits:
   3549         enumeration._all_bits_ = bits

UnboundLocalError: local variable '_value2member_seq_' referenced before assignment```
ethanfurman commented 2 years ago

Fixed in 3.1.2.