Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Description
Bug report
Looks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11:
fromenumimportEnumclassFoo(str,Enum):BAR="bar"# Python 3.10f"{Foo.BAR}"# > bar# Python 3.11f"{Foo.BAR}"# > Foo.BAR
The same goes for Enum classes with theint mixin.
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 ithere, and there has been some lively discussion inr/python.
Your environment
- CPython versions tested on: 3.11.0, 3.11.1
- Operating system and architecture: MacOS, Ubuntu 22.04