Author ethan.furman
Recipients barry, eli.bendersky, ethan.furman, ezio.melotti, mrabarnett, rhettinger, serhiy.storchaka, veky
Date 2020-10-05.12:22:51
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <>
Python-Dev thread [0], summary below:

> As you may have noticed, Enums are starting to pop up all
> over the stdlib [1].
> To facilitate transforming existing module constants to
> IntEnums there is `IntEnum._convert_`.  In Issue36548 [2]
> Serhiy modified the __repr__ of RegexFlag:
>   >>> import re
>   >>> re.I
> I think for converted constants that that looks nice.
>  For anyone that wants the actual value, it is of course
> available as the `.value` attribute:
>   >>> re.I.value
>   2
> I'm looking for arguments relating to:
> - should _convert_ make the default __repr__ be
>   module_name.member_name?
> - should _convert_ make the default __str__ be the same,
>   or be the numeric value?

After discussions with Guido I made a (largely done) PR [3] which:

for stdlib global constants (such as RE)
   - repr() -> uses `module.member_name`
   - str() -> uses `member_name`

for stdlib non-global constants, and enums in general
   - repr() -> uses `class.member_name`
   - str() -> uses `member_name`

The questions I would most appreciate an answer to at this point:

- do you think the change has merit?
- why /shouldn't/ we make the change?

As a reminder, the underlying issue is trying to keep at least the stdlib Enum representations the same for those that are replacing preexisting constants.


[1] I'm working on making their creation faster.  If anyone wanted to convert EnumMeta to C I would be grateful.


Date User Action Args
2020-10-05 12:22:52ethan.furmansetrecipients: + ethan.furman, barry, rhettinger, ezio.melotti, mrabarnett, eli.bendersky, serhiy.storchaka, veky
2020-10-05 12:22:52ethan.furmansetmessageid: <>
2020-10-05 12:22:52ethan.furmanlinkissue40066 messages
2020-10-05 12:22:51ethan.furmancreate