Repository navigation
Enum with str or int Mixin Breaking Change in Python 3.11 #100458
Description
Activity
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Dec 23, 2022 - addeddocsDocumentation in the Doc dirDocumentation in the Doc dir3.11only security fixesonly security fixes
on Dec 23, 2022 @anze3db
StrEnumwas added in 3.11, does that work as a 'slot in' replacement for your use case?docs: https://docs.python.org/3.11/library/enum.html#enum.StrEnum
@JosephSBoyle yes, we replaced the str mixin with
StrEnumto fix this on our end. If we could let people know about this breaking change in the what's new docs it would save me a lot of head scratching, especially since the current note about this change seems wrong (see my attempt of at least making it a bit more accurate: #100387)Reacted by JosephSBoyle, Artyom Palvelev, Parker Keller, IKEGAMI Yuto, Flavia Nshemerirwe and Emanuele IannoneCoincidentally I've also used the mixin approach you describe in professional projects, which suggests that this use is at the very least not uncommon.
As such it makes sense that the docs also suggest a way to achieve the old behaviour, like you say @anze3db. I've added a small suggestion to your PR; hopefully that will help resolve things for others in the same position!
Thank you! The text that you added would have helped me a lot when I was figuring out how to fix this 👍
- added a commit that references this issue
on May 1, 2023 - added a commit that references this issue
on May 1, 2023 - added a commit that references this issue
on May 1, 2023 - added a commit that references this issue
on May 10, 2023 21 remaining items
- added a commit that references this issue
on Dec 16, 2023 - added a commit that references this issue
on Jan 8, 2024 - added a commit that references this issue
on Jan 9, 2024 - added a commit that references this issue
on Jan 19, 2024 - added a commit that references this issue
on Jan 26, 2024 - added a commit that references this issue
on Aug 9, 2024 - added a commit that references this issue
on Aug 14, 2024 - added a commit that references this issue
on Aug 16, 2024 - added a commit that references this issue
on Nov 12, 2024 - added a commit that references this issue
on Aug 9, 2025
Metadata
Metadata
Assignees
Labels
Projects
- StatusShow more project fieldsDone
Bug report
Looks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11:
The same goes for Enum classes with the
intmixin.In my project we were relying on Foo.BAR to return the enum value, so this change broke our code. We fixed it by replacing str Enum mixin with the newly added StrEnum class (thanks for that, it's exactly what we needed!).
I think reverting the breaking change would only introduce another breaking change so that's probably not the way to go. But maybe updating the whatsnew page and call out the change there could help people stumbling into this when doing the upgrade. I've found the existing point about this change in the release notes a little bit confusing and I have already opened a PR to try and clear it up a bit: #100387
I've also written a longer blog post about it here, and there has been some lively discussion in r/python.
Your environment
Linked PRs