From 1512bc21d60f098a9e9f37b44a2f6a9b49a3fd4f Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Mon, 16 Aug 2021 23:42:21 +0200 Subject: bpo-38956: don't print BooleanOptionalAction's default twice (GH-27672) Co-authored-by: Micky Yun Chan --- Lib/argparse.py | 2 +- Lib/test/test_argparse.py | 21 ++++++++++++++------- .../2021-08-09-13-17-10.bpo-38956.owWLNv.rst | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2021-08-09-13-17-10.bpo-38956.owWLNv.rst diff --git a/Lib/argparse.py b/Lib/argparse.py index 33c5d70..d5a0afb 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -876,7 +876,7 @@ class BooleanOptionalAction(Action): _option_strings.append(option_string) if help is not None and default is not None: - help += f" (default: {default})" + help += " (default: %(default)s)" super().__init__( option_strings=_option_strings, diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index 93ac0c3..d369d0f 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -4281,6 +4281,9 @@ class TestHelpArgumentDefaults(HelpTestCase): argument_signatures = [ Sig('--foo', help='foo help - oh and by the way, %(default)s'), Sig('--bar', action='store_true', help='bar help'), + Sig('--taz', action=argparse.BooleanOptionalAction, + help='Whether to taz it', default=True), + Sig('--quux', help="Set the quux", default=42), Sig('spam', help='spam help'), Sig('badger', nargs='?', default='wooden', help='badger help'), ] @@ -4289,25 +4292,29 @@ class TestHelpArgumentDefaults(HelpTestCase): [Sig('--baz', type=int, default=42, help='baz help')]), ] usage = '''\ - usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger] + usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--quux QUUX] + [--baz BAZ] + spam [badger] ''' help = usage + '''\ description positional arguments: - spam spam help - badger badger help (default: wooden) + spam spam help + badger badger help (default: wooden) options: - -h, --help show this help message and exit - --foo FOO foo help - oh and by the way, None - --bar bar help (default: False) + -h, --help show this help message and exit + --foo FOO foo help - oh and by the way, None + --bar bar help (default: False) + --taz, --no-taz Whether to taz it (default: True) + --quux QUUX Set the quux (default: 42) title: description - --baz BAZ baz help (default: 42) + --baz BAZ baz help (default: 42) ''' version = '' diff --git a/Misc/NEWS.d/next/Library/2021-08-09-13-17-10.bpo-38956.owWLNv.rst b/Misc/NEWS.d/next/Library/2021-08-09-13-17-10.bpo-38956.owWLNv.rst new file mode 100644 index 0000000..3f57c0e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-08-09-13-17-10.bpo-38956.owWLNv.rst @@ -0,0 +1 @@ +:class:`argparse.BooleanOptionalAction`'s default value is no longer printed twice when used with :class:`argparse.ArgumentDefaultsHelpFormatter`. -- cgit v0.12