Title: argparse metavar parentheses dropped on usage line · Issue #101979 · python/cpython · GitHub
Open Graph Title: argparse metavar parentheses dropped on usage line · Issue #101979 · python/cpython
X Title: argparse metavar parentheses dropped on usage line · Issue #101979 · python/cpython
Description: Parentheses in argparse metavars are dropped on the usage line but appear as expected in the argument list. In particular, the very first and very last parentheses disappear. It looks from other issues (e.g. #56083) that braces, brackets...
Open Graph Description: Parentheses in argparse metavars are dropped on the usage line but appear as expected in the argument list. In particular, the very first and very last parentheses disappear. It looks from other is...
X Description: Parentheses in argparse metavars are dropped on the usage line but appear as expected in the argument list. In particular, the very first and very last parentheses disappear. It looks from other is...
Opengraph URL: https://github.com/python/cpython/issues/101979
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"argparse metavar parentheses dropped on usage line","articleBody":"Parentheses in argparse `metavar`s are dropped on the `usage` line but appear as expected in the argument list. In particular, the very first and very last parentheses disappear. It looks from other issues (e.g. #56083) that braces, brackets and parentheses in `metavar`s are problematic, so this may be part of a wider and more difficult set of puzzlers to fix.\r\n\r\nIllustrative code:\r\n\r\n```\r\n#!/usr/bin/python3\r\n\"\"\"Demonstrate parenthesis drops in argparse metavar.\"\"\"\r\nimport argparse\r\n\r\n# The very first and last parentheses disappear in the usage line, but are\r\n# present in the argument list.\r\nparser = argparse.ArgumentParser(\r\n description='Demonstrate parenthesis drops in argument meta-descriptions')\r\nparser.add_argument(\r\n 'positional',\r\n help='positional argument',\r\n metavar='(example) positional')\r\nparser.add_argument(\r\n '-p',\r\n '--optional',\r\n help='optional argument',\r\n type=int,\r\n choices=[1, 2],\r\n metavar='{1 (option A), 2 (option B)}',\r\n default=1)\r\narguments = parser.parse_args()\r\n\r\nprint(arguments)\r\n```\r\n\r\nWhen this is run with `-h`, the help text is rendered as shown below. Note the parentheses are missing before `option A` and after `example`:\r\n\r\n```\r\nusage: parens.py [-h] [-p {1 option A), 2 (option B)}] (example positional\r\n\r\nDemonstrate parenthesis drops in argument meta-descriptions\r\n\r\npositional arguments:\r\n (example) positional positional argument\r\n\r\noptional arguments:\r\n -h, --help show this help message and exit\r\n -p {1 (option A), 2 (option B)}, --optional {1 (option A), 2 (option B)}\r\n optional argument\r\n```\r\nI've tried this on Python 3.8.10 and Python 3.10.6.\n\n\u003c!-- gh-linked-prs --\u003e\n### Linked PRs\n* gh-102318\n* gh-102438\n* gh-102439\n\u003c!-- /gh-linked-prs --\u003e\n","author":{"url":"https://github.com/tonyle72","@type":"Person","name":"tonyle72"},"datePublished":"2023-02-17T08:06:04.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/101979/cpython/issues/101979"}
| 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:62d83261-b680-c567-582b-8082289ae167 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | CC18:27E9DD:4403:5E56:696A0B37 |
| html-safe-nonce | 6e8a15b37245504247f4ced84b5b43962136601a2652c598dfc5ba30966d44a8 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQzE4OjI3RTlERDo0NDAzOjVFNTY6Njk2QTBCMzciLCJ2aXNpdG9yX2lkIjoiNDM2NDc0MTA3NjA0MzcyMjc5IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 7587434c5054b0034d8af5f13e26766ce6920a742937cd2dbb08efc61da04af1 |
| hovercard-subject-tag | issue:1588914177 |
| 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/101979/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2862cdac2d0d3f7aac6491f9387dae55bf7148335529afcec7b70070e7785b31/python/cpython/issues/101979 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2862cdac2d0d3f7aac6491f9387dae55bf7148335529afcec7b70070e7785b31/python/cpython/issues/101979 |
| og:image:alt | Parentheses in argparse metavars are dropped on the usage line but appear as expected in the argument list. In particular, the very first and very last parentheses disappear. It looks from other is... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | tonyle72 |
| hostname | github.com |
| expected-hostname | github.com |
| None | 699227a00bbb7fe1eec276d2ae1c3a93068bc5ba483bd9dc4b2a27a8f4f2f595 |
| 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 | 7266b2d935baa1c6474b16dd9feaa5ca30607261 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width