Message378019
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
> re.IGNORECASE
>
> 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.
[0] https://mail.python.org/archives/list/python-dev@python.org/message/CHQW6THTDYNPPFWQ2KDDTUYSAJDCZFNP/
[1] I'm working on making their creation faster. If anyone wanted to convert EnumMeta to C I would be grateful.
[2] https://bugs.python.org/issue36548
[3] https://github.com/python/cpython/pull/22392 |
|
Date |
User |
Action |
Args |
2020-10-05 12:22:52 | ethan.furman | set | recipients:
+ ethan.furman, barry, rhettinger, ezio.melotti, mrabarnett, eli.bendersky, serhiy.storchaka, veky |
2020-10-05 12:22:52 | ethan.furman | set | messageid: <1601900572.11.0.551033207382.issue40066@roundup.psfhosted.org> |
2020-10-05 12:22:52 | ethan.furman | link | issue40066 messages |
2020-10-05 12:22:51 | ethan.furman | create | |
|