Title: [feature request] Use Enums for enumerated types · Issue #14642 · matplotlib/matplotlib · GitHub
Open Graph Title: [feature request] Use Enums for enumerated types · Issue #14642 · matplotlib/matplotlib
X Title: [feature request] Use Enums for enumerated types · Issue #14642 · matplotlib/matplotlib
Description: Matplotlib uses enumerated types, or something like them, in a number of places: for example, when setting locations ("upper", "lower" etc.). Historically, the pattern here has been to use strings. However, this is undesirable: Values ar...
Open Graph Description: Matplotlib uses enumerated types, or something like them, in a number of places: for example, when setting locations ("upper", "lower" etc.). Historically, the pattern here has been to use strings....
X Description: Matplotlib uses enumerated types, or something like them, in a number of places: for example, when setting locations ("upper", "lower" etc.). Historically, the pattern here has ...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/14642
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[feature request] Use Enums for enumerated types","articleBody":"Matplotlib uses enumerated types, or something like them, in a number of places: for example, when setting locations (\"upper\", \"lower\" etc.). Historically, the pattern here has been to use strings. However, this is undesirable:\r\n\r\n1. Values are not discoverable without reading the docs\r\n2. Values do not autocomplete and cannot be checked for correctness by most IDEs\r\n3. Remembering the canonical dashes, underscores and capitals is unnecessarily complicated\r\n\r\nInstead, we could use an enum.Enum, which solves 1 and 2, and renders 3 moot.\r\n\r\nBy using an enum which also subclasses str, existing code would not break, and people could still pass in strings if they wanted to. No new code would be required in functions which take these strings; they'd just need to be defined once.\r\n\r\nAlternatively, for e.g. locations, an `IntFlag` could be used so that \"upper right\" could be `Location.UPPER \u0026 Location.RIGHT` (this would probably require some internal changes). No more need to remember which way round the specifiers go, and whether it's `\"upper\"` or `\"top\"`: my IDE knows so I don't have to (and nor does anyone coming to the concept for the first time).\r\n\r\nOne use case is for named colors. It would be trivial for IDEs to tell me what named colors are available, and check my spelling, but as it is, I'm googling the docs page every time I need them. I made a trivial package which does this: https://github.com/clbarnes/mpl_colors . The enum instances are also instances of an RGB namedtuple, which is also convenient for stacking them into an array, converting them into other spaces, comparing them to other color tuples, and so on.","author":{"url":"https://github.com/clbarnes","@type":"Person","name":"clbarnes"},"datePublished":"2019-06-27T20:23:07.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":17},"url":"https://github.com/14642/matplotlib/issues/14642"}
| 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:fd731699-4d6e-138f-0a9b-9aa5d1b58789 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A65E:139708:7E231C:B2BBB7:6A4FD2AC |
| html-safe-nonce | 3d45ed151a453e78bf37dd38748a401b5c6aa19d09ae5014613515338dc2b84f |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNjVFOjEzOTcwODo3RTIzMUM6QjJCQkI3OjZBNEZEMkFDIiwidmlzaXRvcl9pZCI6IjY0MTU1MzAxNjgwODE2OTk1MDAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 83b6cefb5ebf04db7b3294f55aaedcd242b7b894e353a8fa62cf4376c165bd04 |
| hovercard-subject-tag | issue:461731122 |
| 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/matplotlib/matplotlib/14642/issue_layout |
| twitter:image | https://opengraph.githubassets.com/6a73e5b6fce6ca3cdc10001ab1e204d4076f16d92106fad4a104ba8bbb5f379c/matplotlib/matplotlib/issues/14642 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/6a73e5b6fce6ca3cdc10001ab1e204d4076f16d92106fad4a104ba8bbb5f379c/matplotlib/matplotlib/issues/14642 |
| og:image:alt | Matplotlib uses enumerated types, or something like them, in a number of places: for example, when setting locations ("upper", "lower" etc.). Historically, the pattern here has been to use strings.... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | clbarnes |
| hostname | github.com |
| expected-hostname | github.com |
| None | 19b98c3d9767bb8a56238a89ff8401d1cbdf3bc5c353799aacf49fe6c76b4b7c |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| 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 | 142593e66413bbae27fd485859993597d5a3b104 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width