Title: Inverted enum.Flag · Issue #107538 · python/cpython · GitHub
Open Graph Title: Inverted enum.Flag · Issue #107538 · python/cpython
X Title: Inverted enum.Flag · Issue #107538 · python/cpython
Description: Bug report Checklist I am confident this is a bug in CPython, not a bug in a third-party project I have searched the CPython issue tracker, and am confident this bug has not been reported before A clear and concise description of the bug...
Open Graph Description: Bug report Checklist I am confident this is a bug in CPython, not a bug in a third-party project I have searched the CPython issue tracker, and am confident this bug has not been reported before A ...
X Description: Bug report Checklist I am confident this is a bug in CPython, not a bug in a third-party project I have searched the CPython issue tracker, and am confident this bug has not been reported before A ...
Opengraph URL: https://github.com/python/cpython/issues/107538
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Inverted enum.Flag","articleBody":"# Bug report\r\n\r\n## Checklist\r\n- [X] I am confident this is a bug in CPython, not a bug in a third-party project\r\n- [X] I have searched the CPython issue tracker, and am confident this bug has not been reported before\r\n\r\n## A clear and concise description of the bug\r\nAdding **inverted** option to enum.Flag brakes logic of enum. \r\nI assume it caused by ambiguous implementation of `bitwise NOT` in Flag which processes ~value option different inside class scope and outside class scope unlike `bitwise OR`\r\n\r\n ```py\r\nimport enum\r\n\r\nclass X(enum.Flag):\r\n a = enum.auto()\r\n b = enum.auto()\r\n c = a | b\r\n\r\n\r\nassert list(X) == [X.a, X.b]\r\nassert ~X.a == X.b\r\nassert list(~X.a) == [X.b]\r\n\r\n\r\nclass Y(enum.Flag):\r\n a = enum.auto()\r\n b = enum.auto()\r\n c = a | b\r\n d = ~a # this line brakes the code\r\n\r\n\r\nassert list(Y) == [Y.a, Y.b]\r\nassert ~Y.a == Y.b # AssertionError\r\nassert list(~Y.a) == [Y.b] # ValueError: -2 is not a positive integer\r\n ```\r\nTraceback:\r\n ``` bash\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\r\n File \"/opt/homebrew/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/enum.py\", line 1482, in __iter__\r\n yield from self._iter_member_(self._value_)\r\n File \"/opt/homebrew/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/enum.py\", line 1359, in _iter_member_by_value_\r\n for val in _iter_bits_lsb(value \u0026 cls._flag_mask_):\r\n File \"/opt/homebrew/Cellar/python@3.11/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/enum.py\", line 122, in _iter_bits_lsb\r\n raise ValueError('%r is not a positive integer' % original)\r\nValueError: -2 is not a positive integer\r\n```\r\n# Your environment\r\n- CPython versions tested on: Clang 14.0.3 (clang-1403.0.22.14.1)\r\n- Operating system and architecture: 22.5.0 Darwin Kernel Version 22.5.0: Thu Jun 8 22:22:20 PDT 2023; root:xnu-8796.121.3~7/RELEASE_ARM64_T6000 arm64\r\n\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-132273\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/GrafLearnt","@type":"Person","name":"GrafLearnt"},"datePublished":"2023-08-01T13:54:59.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":10},"url":"https://github.com/107538/cpython/issues/107538"}
| 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:43f18fdc-1a99-4c29-a5b3-497053608990 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B5A8:2BBCB0:14C9D95:1BE219E:696ADD57 |
| html-safe-nonce | adee2894605fb6764602f143e693e175bfa9a036b722be742838c51a3a39ddd2 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNUE4OjJCQkNCMDoxNEM5RDk1OjFCRTIxOUU6Njk2QURENTciLCJ2aXNpdG9yX2lkIjoiMzA3ODEyNjIwODY2NzAxNjUzNSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | eb57c1c18a55672f45eceec212d4e8dc93b83966b2ba2b160cba17a261397b07 |
| hovercard-subject-tag | issue:1831347410 |
| 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/107538/issue_layout |
| twitter:image | https://opengraph.githubassets.com/65b4b226f8593b7dd8ccbfe10dd9b8369be782bf401758232ab82603fcdc432d/python/cpython/issues/107538 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/65b4b226f8593b7dd8ccbfe10dd9b8369be782bf401758232ab82603fcdc432d/python/cpython/issues/107538 |
| og:image:alt | Bug report Checklist I am confident this is a bug in CPython, not a bug in a third-party project I have searched the CPython issue tracker, and am confident this bug has not been reported before A ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | GrafLearnt |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d |
| 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 | 524a93f2c1f36522a3b4be4c110467ee4172245d |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width