summaryrefslogtreecommitdiffstats
path: root/Lib/argparse.py
diff options
context:
space:
mode:
authorDaniel Mach <daniel.mach@suse.com>2024-02-21 13:58:04 (GMT)
committerGitHub <noreply@github.com>2024-02-21 13:58:04 (GMT)
commit5f7df88821347c5f44fc4e2c691e83a60a6c6cd5 (patch)
tree3568b8113372a6bcb9b6e7cce5f9da493339742b /Lib/argparse.py
parent4a9e6497c2cae40647589497e033b0b590a180ba (diff)
downloadcpython-5f7df88821347c5f44fc4e2c691e83a60a6c6cd5.zip
cpython-5f7df88821347c5f44fc4e2c691e83a60a6c6cd5.tar.gz
cpython-5f7df88821347c5f44fc4e2c691e83a60a6c6cd5.tar.bz2
gh-96310: Fix a traceback in argparse when all options in a mutually exclusive group are suppressed (GH-96311)
Reproducer depends on terminal size - the traceback occurs when there's an option long enough so the usage line doesn't fit the terminal width. Option order is also important for reproducibility. Excluding empty groups (with all options suppressed) from inserts fixes the problem.
Diffstat (limited to 'Lib/argparse.py')
-rw-r--r--Lib/argparse.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py
index ea39d26..f86658b 100644
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -413,6 +413,8 @@ class HelpFormatter(object):
suppressed_actions_count += 1
exposed_actions_count = group_action_count - suppressed_actions_count
+ if not exposed_actions_count:
+ continue
if not group.required:
if start in inserts: