Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-100458: Clarify Enum.__format__() change of mixed-in types in the whatsnew/3.11.rst#100387

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
ethanfurman merged 7 commits intopython:mainfromanze3db:main
May 1, 2023

Conversation

@anze3db
Copy link
Contributor

@anze3dbanze3db commentedDec 21, 2022
edited
Loading

Hey! 👋

Please correct me if I'm wrong, but the description of the changeEnum.format() change in 3.11.rst doesn't seem accurate. The behavior in older Python versions was to return the member's value and not the member's key as is currently stated. Example code:

fromenumimportEnumclassFoo(str,Enum):BAR="baz"print("{}".format(Foo.BAR))classFoo(int,Enum):BAR=1print("{}".format(Foo.BAR))

Running this on Python 3.10 prints:

bar1

And not

BARBAR

as the changelog states:

ChangedEnum.format() (the default forformat(),str.format() andf-strings) of enums with mixed-in types (e.g.int,str) to also include the class name in the output, not just the member’s key. This matches the existing behavior ofenum.Enum.str(), returning e.g. 'AnEnum.MEMBER' for an enum AnEnum(str, Enum) instead of just 'MEMBER'.

I noticed this because we were using thestr mixin with all Enum classes as a hack to get to the value without needing to writeFoo.BAR.value 🫣 The new behavior in Python 3.11 broke our code and the current phrasing in the changelog makes it feel this was just a minor bugfix. Should this change be a bit more prominent since it can be a breaking change?

By the way, thank you for addingStrEnum, it's exactly what we needed!

PS: Not sure if this needs a GitHub issue number, it's not exactly a typo, but it's still a minor change.I'm happy to open an issue if needed. Issue linked below. Also let me know if I need to open the PR against any other branches as well. 🙇

bebound and artemisart reacted with thumbs up emoji
@bedevere-botbedevere-bot added awaiting review docsDocumentation in the Doc dir skip news labelsDec 21, 2022
@ghost
Copy link

ghost commentedDec 21, 2022
edited by ghost
Loading

All commit authors signed the Contributor License Agreement.
CLA signed

@anze3dbanze3db changed the titleClarify Enum.__format__() change of mixed-in types in the whatsnew/3.11.rstgh-100458: Clarify Enum.__format__() change of mixed-in types in the whatsnew/3.11.rstDec 23, 2022
@anze3db
Copy link
ContributorAuthor

@JosephSBoyle thank you! I've added your changes. Let me know if there is anything else needed from my side. Should I also open a PR against the 3.11 branch?

@ethanfurmanethanfurman added 3.11only security fixes 3.12only security fixes labelsDec 27, 2022
@ethanfurman
Copy link
Member

@anze3db No need, once this is committed a backport PR will be automatically created.

anze3db reacted with thumbs up emoji

@AlexWaygoodAlexWaygood added the needs backport to 3.11only security fixes labelDec 27, 2022
@anze3db
Copy link
ContributorAuthor

@JosephSBoyle there was more than a month of inactivity on this PR 😞 Anything I can do to help this getting merged?

@JosephSBoyle
Copy link
Contributor

Hi@anze3db, I'm not a maintainer so perhaps this is a better question for@AlexWaygood. If the assigned reviewer is busy perhaps another reviewer can be assigned.

anze3db reacted with confused emoji

@AlexWaygoodAlexWaygood self-requested a reviewJanuary 31, 2023 09:39
@Bktero
Copy link

Bktero commentedMar 22, 2023
edited
Loading

Will this PR finds its way to the next version of Python?

Further question: is this change documented herehttps://docs.python.org/3/library/enum.html ? I can't spot it...

Copy link
Member

@ethanfurmanethanfurman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

My apologies -- I didn't get the [Submit Review] button pressed.

anze3db reacted with hooray emoji
(the default for:func:`format`,:meth:`str.format` and:term:`f-string`\s)
of enums with mixed-in types (e.g.:class:`int`,:class:`str`)
toalsoinclude the class name in the output, notjustthe member'skey.
to include the class nameand member keyin the output, not the member'svalue.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Suggested change
toinclude the class name and memberkey in the output,not the member's value.
toshow the class name and membername in the output,instead of the member's value.

anze3db reacted with thumbs up emoji
toalsoinclude the class name in the output, notjustthe member'skey.
to include the class nameand member keyin the output, not the member'svalue.
This matches the existing behavior of:meth:`enum.Enum.__str__`,
returning e.g. ``'AnEnum.MEMBER'`` for an enum ``AnEnum(str, Enum)``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Suggested change
returning e.g. ``'AnEnum.MEMBER'`` for an enum ``AnEnum(str, Enum)``
returning e.g. ``'AnEnum.MEMBER'`` for an enum ``AnEnum(str, Enum)``.

anze3db reacted with thumbs up emoji
This matches the existing behavior of:meth:`enum.Enum.__str__`,
returning e.g. ``'AnEnum.MEMBER'`` for an enum ``AnEnum(str, Enum)``
instead of just ``'MEMBER'``.
instead of the member's value. Those wishing to keep the old formatting behavior
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Suggested change
instead of the member's value.Those wishing to keep the old formatting behavior
Those wishing to keep the old formatting behavior

anze3db reacted with thumbs up emoji
@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phraseI have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@AlexWaygoodAlexWaygood removed their request for reviewMarch 22, 2023 16:54
@anze3db
Copy link
ContributorAuthor

I have made the requested changes; please review again.

@bedevere-bot
Copy link

Thanks for making the requested changes!

@ethanfurman: please review the changes made to this pull request.

@anze3db
Copy link
ContributorAuthor

@ethanfurman just a friendly reminder to re-review this if you have the time, thanks!

Copy link
Member

@ethanfurmanethanfurman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Did some rewriting in an attempt to make it clearer.

Thoughts on the new changes?

@miss-islington
Copy link
Contributor

Thanks@anze3db for the PR, and@ethanfurman for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull requestMay 1, 2023
…n the whatsnew/3.11.rst (pythonGH-100387)(cherry picked from commite665563)Co-authored-by: Anže Pečar <anze@pecar.me>Co-authored-by: JosephSBoyle <48555120+JosephSBoyle@users.noreply.github.com>Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
@bedevere-bot
Copy link

GH-104060 is a backport of this pull request to the3.11 branch.

@bedevere-botbedevere-bot removed the needs backport to 3.11only security fixes labelMay 1, 2023
ethanfurman added a commit that referenced this pull requestMay 1, 2023
…in the whatsnew/3.11.rst (GH-100387) (GH-104060)Co-authored-by: Anže Pečar <anze@pecar.me>Co-authored-by: JosephSBoyle <48555120+JosephSBoyle@users.noreply.github.com>Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
carljm added a commit to carljm/cpython that referenced this pull requestMay 1, 2023
* main: (463 commits)pythongh-104057: Fix direct invocation of test_super (python#104064)pythongh-87092: Expose assembler to unit tests (python#103988)pythongh-97696: asyncio eager tasks factory (python#102853)pythongh-84436: Immortalize in _PyStructSequence_InitBuiltinWithFlags() (pythongh-104054)pythongh-104057: Fix direct invocation of test_module (pythonGH-104059)pythongh-100458: Clarify Enum.__format__() change of mixed-in types in the whatsnew/3.11.rst (pythonGH-100387)pythongh-104018: disallow "z" format specifier in %-format of byte strings (pythonGH-104033)pythongh-104016: Fixed off by 1 error in f string tokenizer (python#104047)pythonGH-103629: Update Unpack's repr in compliance with PEP 692 (python#104048)pythongh-102799: replace sys.exc_info by sys.exception in inspect and traceback modules (python#104032)  Fix typo in "expected" word in few source files (python#104034)pythongh-103824: fix use-after-free error in Parser/tokenizer.c (python#103993)pythongh-104035: Do not ignore user-defined `__{get,set}state__` in slotted frozen dataclasses (python#104041)pythongh-104028: Reduce object creation while calling callback function from gc (pythongh-104030)pythongh-104036: Fix direct invocation of test_typing (python#104037)pythongh-102213: Optimize the performance of `__getattr__` (pythonGH-103761)pythongh-103895: Improve how invalid `Exception.__notes__` are displayed (python#103897)  Adjust expression from `==` to `!=` in alignment with the meaning of the paragraph. (pythonGH-104021)pythongh-88496: Fix IDLE test hang on macOS (python#104025)  Improve int test coverage (python#104024)  ...
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@ethanfurmanethanfurmanethanfurman approved these changes

+1 more reviewer

@JosephSBoyleJosephSBoyleJosephSBoyle approved these changes

Reviewers whose approvals may not affect merge requirements

Assignees

@ethanfurmanethanfurman

Labels

3.11only security fixes3.12only security fixesdocsDocumentation in the Doc dirskip news

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

7 participants

@anze3db@ethanfurman@JosephSBoyle@Bktero@bedevere-bot@miss-islington@AlexWaygood

[8]ページ先頭

©2009-2025 Movatter.jp