diff options
author | Yeojin Kim <yeojin.dev@gmail.com> | 2023-03-05 14:54:33 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-05 14:54:33 (GMT) |
commit | 9a478be1a4314734c697dda7a7b0e633a6fb0751 (patch) | |
tree | 986651952792d98fb25100abb22b4f4c3615ba0c /Lib/argparse.py | |
parent | 66aa78cbe604a7c5731f074b869f92174a8e3b64 (diff) | |
download | cpython-9a478be1a4314734c697dda7a7b0e633a6fb0751.zip cpython-9a478be1a4314734c697dda7a7b0e633a6fb0751.tar.gz cpython-9a478be1a4314734c697dda7a7b0e633a6fb0751.tar.bz2 |
gh-101979: argparse: fix a bug where parentheses in metavar argument of add_argument() were dropped (#102318)
Diffstat (limited to 'Lib/argparse.py')
-rw-r--r-- | Lib/argparse.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py index 240625f..a819d26 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -403,10 +403,18 @@ class HelpFormatter(object): except ValueError: continue else: - end = start + len(group._group_actions) + group_action_count = len(group._group_actions) + end = start + group_action_count if actions[start:end] == group._group_actions: + + suppressed_actions_count = 0 for action in group._group_actions: group_actions.add(action) + if action.help is SUPPRESS: + suppressed_actions_count += 1 + + exposed_actions_count = group_action_count - suppressed_actions_count + if not group.required: if start in inserts: inserts[start] += ' [' @@ -416,7 +424,7 @@ class HelpFormatter(object): inserts[end] += ']' else: inserts[end] = ']' - else: + elif exposed_actions_count > 1: if start in inserts: inserts[start] += ' (' else: @@ -490,7 +498,6 @@ class HelpFormatter(object): text = _re.sub(r'(%s) ' % open, r'\1', text) text = _re.sub(r' (%s)' % close, r'\1', text) text = _re.sub(r'%s *%s' % (open, close), r'', text) - text = _re.sub(r'\(([^|]*)\)', r'\1', text) text = text.strip() # return the text |