https://github.com/python/cpython/commit/14c923cc857124f45ca19d5c28c9fda9ee3d72b3
commit: 14c923cc857124f45ca19d5c28c9fda9ee3d72b3
branch: 3.14
author: Miss Islington (bot) <[email protected]>
committer: savannahostrowski <[email protected]>
date: 2025-10-08T16:02:08Z
summary:

[3.14] gh-139736: Fix argparse indentation overshoot (GH-139738) (#139793)

gh-139736: Fix argparse indentation overshoot (GH-139738)
(cherry picked from commit 72e370c910bd941806a36b01f2f57f4c53a78eed)

Co-authored-by: ed <[email protected]>
Co-authored-by: Savannah Ostrowski <[email protected]>

files:
A Misc/NEWS.d/next/Library/2025-10-08-00-06-30.gh-issue-139736.baPeBd.rst
M Lib/argparse.py
M Lib/test/test_argparse.py

diff --git a/Lib/argparse.py b/Lib/argparse.py
index 2144c81886ad19..01d30a278496fc 100644
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -281,7 +281,7 @@ def add_argument(self, action):
         if action.help is not SUPPRESS:
 
             # find all invocations
-            get_invocation = self._format_action_invocation
+            get_invocation = lambda x: 
self._decolor(self._format_action_invocation(x))
             invocation_lengths = [len(get_invocation(action)) + 
self._current_indent]
             for subaction in self._iter_indented_subactions(action):
                 invocation_lengths.append(len(get_invocation(subaction)) + 
self._current_indent)
diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py
index 2f39b42ab74299..7de1d3e2373c33 100644
--- a/Lib/test/test_argparse.py
+++ b/Lib/test/test_argparse.py
@@ -7311,11 +7311,11 @@ def custom_formatter(prog):
             {heading}usage: {reset}{prog}PROG{reset} [{short}-h{reset}] 
[{short}+f {label}FOO{reset}] {pos}spam{reset}
 
             {heading}positional arguments:{reset}
-                 {pos_b}spam{reset}               spam help
+                 {pos_b}spam{reset}           spam help
 
             {heading}options:{reset}
-                 {short_b}-h{reset}, {long_b}--help{reset}         show this 
help message and exit
-                 {short_b}+f{reset}, {long_b}++foo{reset} {label_b}FOO{reset}  
    foo help
+                 {short_b}-h{reset}, {long_b}--help{reset}     show this help 
message and exit
+                 {short_b}+f{reset}, {long_b}++foo{reset} {label_b}FOO{reset}  
foo help
         '''))
 
     def test_custom_formatter_class(self):
@@ -7348,11 +7348,11 @@ def __init__(self, prog):
             {heading}usage: {reset}{prog}PROG{reset} [{short}-h{reset}] 
[{short}+f {label}FOO{reset}] {pos}spam{reset}
 
             {heading}positional arguments:{reset}
-                 {pos_b}spam{reset}               spam help
+                 {pos_b}spam{reset}           spam help
 
             {heading}options:{reset}
-                 {short_b}-h{reset}, {long_b}--help{reset}         show this 
help message and exit
-                 {short_b}+f{reset}, {long_b}++foo{reset} {label_b}FOO{reset}  
    foo help
+                 {short_b}-h{reset}, {long_b}--help{reset}     show this help 
message and exit
+                 {short_b}+f{reset}, {long_b}++foo{reset} {label_b}FOO{reset}  
foo help
         '''))
 
 
diff --git 
a/Misc/NEWS.d/next/Library/2025-10-08-00-06-30.gh-issue-139736.baPeBd.rst 
b/Misc/NEWS.d/next/Library/2025-10-08-00-06-30.gh-issue-139736.baPeBd.rst
new file mode 100644
index 00000000000000..820679632d1e26
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-10-08-00-06-30.gh-issue-139736.baPeBd.rst
@@ -0,0 +1,2 @@
+Fix excessive indentation in the default :mod:`argparse`
+:class:`!HelpFormatter`. Patch by Alexander Edland.

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to