_auto_called cleanup (GH-22285)
(cherry picked from commit fc23a9483e
)
Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
This commit is contained in:
parent
48f99250ff
commit
4465df6266
|
@ -104,9 +104,9 @@ class _EnumDict(dict):
|
|||
# enum overwriting a descriptor?
|
||||
raise TypeError('%r already defined as: %r' % (key, self[key]))
|
||||
if isinstance(value, auto):
|
||||
self._auto_called = True
|
||||
if value.value == _auto_null:
|
||||
value.value = self._generate_next_value(key, 1, len(self._member_names), self._last_values[:])
|
||||
self._auto_called = True
|
||||
value = value.value
|
||||
self._member_names.append(key)
|
||||
self._last_values.append(value)
|
||||
|
|
|
@ -1813,6 +1813,17 @@ class TestEnum(unittest.TestCase):
|
|||
def _generate_next_value_(name, start, count, last):
|
||||
return name
|
||||
|
||||
def test_auto_order_wierd(self):
|
||||
weird_auto = auto()
|
||||
weird_auto.value = 'pathological case'
|
||||
class Color(Enum):
|
||||
red = weird_auto
|
||||
def _generate_next_value_(name, start, count, last):
|
||||
return name
|
||||
blue = auto()
|
||||
self.assertEqual(list(Color), [Color.red, Color.blue])
|
||||
self.assertEqual(Color.red.value, 'pathological case')
|
||||
self.assertEqual(Color.blue.value, 'blue')
|
||||
|
||||
def test_duplicate_auto(self):
|
||||
class Dupes(Enum):
|
||||
|
|
Loading…
Reference in New Issue