summaryrefslogtreecommitdiffstats
path: root/Lib/argparse.py
diff options
context:
space:
mode:
authorYeojin Kim <yeojin.dev@gmail.com>2023-03-05 14:54:33 (GMT)
committerGitHub <noreply@github.com>2023-03-05 14:54:33 (GMT)
commit9a478be1a4314734c697dda7a7b0e633a6fb0751 (patch)
tree986651952792d98fb25100abb22b4f4c3615ba0c /Lib/argparse.py
parent66aa78cbe604a7c5731f074b869f92174a8e3b64 (diff)
downloadcpython-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.py13
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