mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-37479: on Enum subclasses with mixins, __format__ uses overridden __str__ (GH-14545)
* bpo-37479: on Enum subclasses with mixins, __format__ uses overridden __str__
This commit is contained in:
parent
b4e68960b9
commit
2f19e82fbe
5 changed files with 63 additions and 6 deletions
|
@ -445,12 +445,63 @@ class TestEnum(unittest.TestCase):
|
|||
self.assertEqual('{:<20}'.format(Season.SPRING),
|
||||
'{:<20}'.format(str(Season.SPRING)))
|
||||
|
||||
def test_format_enum_custom(self):
|
||||
def test_str_override_enum(self):
|
||||
class EnumWithStrOverrides(Enum):
|
||||
one = auto()
|
||||
two = auto()
|
||||
|
||||
def __str__(self):
|
||||
return 'Str!'
|
||||
self.assertEqual(str(EnumWithStrOverrides.one), 'Str!')
|
||||
self.assertEqual('{}'.format(EnumWithStrOverrides.one), 'Str!')
|
||||
|
||||
def test_format_override_enum(self):
|
||||
class EnumWithFormatOverride(Enum):
|
||||
one = 1.0
|
||||
two = 2.0
|
||||
def __format__(self, spec):
|
||||
return 'Format!!'
|
||||
self.assertEqual(str(EnumWithFormatOverride.one), 'EnumWithFormatOverride.one')
|
||||
self.assertEqual('{}'.format(EnumWithFormatOverride.one), 'Format!!')
|
||||
|
||||
def test_str_and_format_override_enum(self):
|
||||
class EnumWithStrFormatOverrides(Enum):
|
||||
one = auto()
|
||||
two = auto()
|
||||
def __str__(self):
|
||||
return 'Str!'
|
||||
def __format__(self, spec):
|
||||
return 'Format!'
|
||||
self.assertEqual(str(EnumWithStrFormatOverrides.one), 'Str!')
|
||||
self.assertEqual('{}'.format(EnumWithStrFormatOverrides.one), 'Format!')
|
||||
|
||||
def test_str_override_mixin(self):
|
||||
class MixinEnumWithStrOverride(float, Enum):
|
||||
one = 1.0
|
||||
two = 2.0
|
||||
def __str__(self):
|
||||
return 'Overridden!'
|
||||
self.assertEqual(str(MixinEnumWithStrOverride.one), 'Overridden!')
|
||||
self.assertEqual('{}'.format(MixinEnumWithStrOverride.one), 'Overridden!')
|
||||
|
||||
def test_str_and_format_override_mixin(self):
|
||||
class MixinWithStrFormatOverrides(float, Enum):
|
||||
one = 1.0
|
||||
two = 2.0
|
||||
def __str__(self):
|
||||
return 'Str!'
|
||||
def __format__(self, spec):
|
||||
return 'Format!'
|
||||
self.assertEqual(str(MixinWithStrFormatOverrides.one), 'Str!')
|
||||
self.assertEqual('{}'.format(MixinWithStrFormatOverrides.one), 'Format!')
|
||||
|
||||
def test_format_override_mixin(self):
|
||||
class TestFloat(float, Enum):
|
||||
one = 1.0
|
||||
two = 2.0
|
||||
def __format__(self, spec):
|
||||
return 'TestFloat success!'
|
||||
self.assertEqual(str(TestFloat.one), 'TestFloat.one')
|
||||
self.assertEqual('{}'.format(TestFloat.one), 'TestFloat success!')
|
||||
|
||||
def assertFormatIsValue(self, spec, member):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue