Title: Enum with `str` or `int` Mixin Breaking Change in Python 3.11 · Issue #100458 · python/cpython · GitHub
Open Graph Title: Enum with `str` or `int` Mixin Breaking Change in Python 3.11 · Issue #100458 · python/cpython
X Title: Enum with `str` or `int` Mixin Breaking Change in Python 3.11 · Issue #100458 · python/cpython
Description: Bug report Looks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11: from enum import Enum class Foo(str, Enum): BAR = "bar" # Python 3.10 f"{Foo.BAR}" # > bar # Python 3.11 f"{Foo.BAR}" # > F...
Open Graph Description: Bug report Looks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11: from enum import Enum class Foo(str, Enum): BAR = "bar" # Python 3.10 f"{Foo.BAR}" ...
X Description: Bug report Looks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11: from enum import Enum class Foo(str, Enum): BAR = "bar" # Python 3.10 f&q...
Opengraph URL: https://github.com/python/cpython/issues/100458
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Enum with `str` or `int` Mixin Breaking Change in Python 3.11","articleBody":"\u003c!--\r\n If you're new to Python and you're not sure whether what you're experiencing is a bug, the CPython issue tracker is not\r\n the right place to seek help. Consider the following options instead:\r\n\r\n - reading the Python tutorial: https://docs.python.org/3/tutorial/\r\n - posting in the \"Users\" category on discuss.python.org: https://discuss.python.org/c/users/7\r\n - emailing the Python-list mailing list: https://mail.python.org/mailman/listinfo/python-list\r\n - searching our issue tracker (https://github.com/python/cpython/issues) to see if\r\n your problem has already been reported\r\n--\u003e\r\n\r\n# Bug report\r\n\r\nLooks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11:\r\n\r\n```python\r\nfrom enum import Enum\r\n\r\n\r\nclass Foo(str, Enum):\r\n BAR = \"bar\"\r\n\r\n# Python 3.10\r\nf\"{Foo.BAR}\" # \u003e bar\r\n\r\n# Python 3.11\r\nf\"{Foo.BAR}\" # \u003e Foo.BAR\r\n```\r\n\r\nThe same goes for Enum classes with the `int` mixin.\r\n\r\nIn 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!).\r\n\r\nI 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: https://github.com/python/cpython/pull/100387\r\n\r\nI've also written a longer blog post about it [here](https://blog.pecar.me/python-enum), and there has been some lively discussion in [r/python](https://www.reddit.com/r/Python/comments/zt4ot4/enum_with_str_or_int_mixin_breaking_change_in/). \r\n\r\n# Your environment\r\n\r\n\u003c!-- Include as many relevant details as possible about the environment you experienced the bug in --\u003e\r\n\r\n- CPython versions tested on: 3.11.0, 3.11.1\r\n- Operating system and architecture: MacOS, Ubuntu 22.04\r\n\r\n\u003c!--\r\nYou can freely edit this text. Remove any lines you believe are unnecessary.\r\n--\u003e\r\n\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-100387\n* gh-104060\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/anze3db","@type":"Person","name":"anze3db"},"datePublished":"2022-12-23T11:53:54.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/100458/cpython/issues/100458"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:ed50847c-7ded-dc8b-4682-b23a8f5865d7 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 88B0:CADE5:25A4D1:324CA2:696978B6 |
| html-safe-nonce | 36e7aa5a70c3e442a8331300e048b6730353e128ce5bccb300666ecb452e22cd |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4OEIwOkNBREU1OjI1QTREMTozMjRDQTI6Njk2OTc4QjYiLCJ2aXNpdG9yX2lkIjoiNzk5OTkwMDU4OTQ2MzUzMzc1MCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ba679df4c082911f3f969e609e08747487e4f85a65b02f5d4053f43a2cfdfbf4 |
| hovercard-subject-tag | issue:1509261549 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/100458/issue_layout |
| twitter:image | https://opengraph.githubassets.com/1b20caa8da6b4c355ae568204f6e8755f16895a3d86328120fafb73e2f8050b3/python/cpython/issues/100458 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/1b20caa8da6b4c355ae568204f6e8755f16895a3d86328120fafb73e2f8050b3/python/cpython/issues/100458 |
| og:image:alt | Bug report Looks like there was a breaking change with the way str and int mixins work with Enums in Python 3.11: from enum import Enum class Foo(str, Enum): BAR = "bar" # Python 3.10 f"{Foo.BAR}" ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | anze3db |
| hostname | github.com |
| expected-hostname | github.com |
| None | c6f193beb8ff08443adc07685d75302ab8aaf0a135f6e251c3ff3112c8deb881 |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 212e3e3d3298bf5b313830edfd2399e869f7ea76 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width