mirror of
https://github.com/python/cpython.git
synced 2025-10-06 23:21:06 +00:00
bpo-44929: [Enum] Fix global repr (GH-27789)
* Fix typo in __repr__ code * Add more tests for global int flag reprs * use last module if multi-module string - when an enum's `__module__` contains several module names, only use the last one Co-authored-by: Łukasz Langa <lukasz@langa.pl> Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
This commit is contained in:
parent
a3c11cebf1
commit
24da544014
3 changed files with 74 additions and 15 deletions
19
Lib/enum.py
19
Lib/enum.py
|
@ -1390,17 +1390,28 @@ def _power_of_two(value):
|
|||
return value == 2 ** _high_bit(value)
|
||||
|
||||
def global_enum_repr(self):
|
||||
return '%s.%s' % (self.__class__.__module__, self._name_)
|
||||
"""
|
||||
use module.enum_name instead of class.enum_name
|
||||
|
||||
the module is the last module in case of a multi-module name
|
||||
"""
|
||||
module = self.__class__.__module__.split('.')[-1]
|
||||
return '%s.%s' % (module, self._name_)
|
||||
|
||||
def global_flag_repr(self):
|
||||
module = self.__class__.__module__
|
||||
"""
|
||||
use module.flag_name instead of class.flag_name
|
||||
|
||||
the module is the last module in case of a multi-module name
|
||||
"""
|
||||
module = self.__class__.__module__.split('.')[-1]
|
||||
cls_name = self.__class__.__name__
|
||||
if self._name_ is None:
|
||||
return "%x" % (module, cls_name, self._value_)
|
||||
return "%s.%s(0x%x)" % (module, cls_name, self._value_)
|
||||
if _is_single_bit(self):
|
||||
return '%s.%s' % (module, self._name_)
|
||||
if self._boundary_ is not FlagBoundary.KEEP:
|
||||
return module + module.join(self.name.split('|'))
|
||||
return '|'.join(['%s.%s' % (module, name) for name in self.name.split('|')])
|
||||
else:
|
||||
name = []
|
||||
for n in self._name_.split('|'):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue