From e62cd6af284447d79a74300afae1cc499025bdae Mon Sep 17 00:00:00 2001 From: Flavian Hautbois Date: Sat, 27 Jul 2019 10:17:08 +0200 Subject: [PATCH 1/3] Fixed ArgumentParses format_usage for mutually exclusive groups. Co-authored-by: Andrew Nester --- Lib/argparse.py | 10 ++++- Lib/test/test_argparse.py | 37 +++++++++++++++++++ .../2019-07-27-10-14-45.bpo-29553.TVeIDe.rst | 1 + 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst diff --git a/Lib/argparse.py b/Lib/argparse.py index e45b67b67704a9..60fef61922dbf7 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -404,13 +404,19 @@ def _format_actions_usage(self, actions, groups): inserts[start] += ' [' else: inserts[start] = '[' - inserts[end] = ']' + if end in inserts: + inserts[end] += ']' + else: + inserts[end] = ']' else: if start in inserts: inserts[start] += ' (' else: inserts[start] = '(' - inserts[end] = ')' + if end in inserts: + inserts[end] += ')' + else: + inserts[end] = ')' for i in range(start + 1, end): inserts[i] = '|' diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index 5128dc5e1be499..55a80aea3006dc 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -2813,6 +2813,43 @@ def get_parser(self, required): -c c help ''' +class TestMutuallyExclusiveNested(MEMixin, TestCase): + def get_parser(self, required): + parser = ErrorRaisingArgumentParser(prog='PROG') + group = parser.add_mutually_exclusive_group(required=required) + group.add_argument('-a') + group.add_argument('-b') + group2 = group.add_mutually_exclusive_group(required=required) + group2.add_argument('-c') + group2.add_argument('-d') + group3 = group2.add_mutually_exclusive_group(required=required) + group3.add_argument('-e') + group3.add_argument('-f') + return parser + + failures = [] + successes = [] + successes_when_not_required = [] + + usage_when_not_required = '''\ + usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]] + ''' + usage_when_required = '''\ + usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F))) + ''' + + help = '''\ + + optional arguments: + -h, --help show this help message and exit + -a A + -b B + -c C + -d D + -e E + -f F + ''' + # ================================================= # Mutually exclusive group in parent parser tests # ================================================= diff --git a/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst b/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst new file mode 100644 index 00000000000000..311fb8ec57bf26 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst @@ -0,0 +1 @@ +Fixed ArgumentParses format_usage for mutually exclusive groups. Patch by Andrew Nester (@andrewnester) From 24242e750aa3531df3125e33df877d340ef48f7f Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Sun, 25 Aug 2019 21:28:53 +0300 Subject: [PATCH 2/3] Update 2019-07-27-10-14-45.bpo-29553.TVeIDe.rst --- .../next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst b/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst index 311fb8ec57bf26..3472db7bf20998 100644 --- a/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst +++ b/Misc/NEWS.d/next/Library/2019-07-27-10-14-45.bpo-29553.TVeIDe.rst @@ -1 +1,2 @@ -Fixed ArgumentParses format_usage for mutually exclusive groups. Patch by Andrew Nester (@andrewnester) +Fixed :meth:`argparse.ArgumentParser.format_usage` for mutually exclusive groups. +Patch by Andrew Nester. From b96c8b0bb634f7f9cbd27b063d4be0b0f000875e Mon Sep 17 00:00:00 2001 From: Berker Peksag Date: Sun, 25 Aug 2019 21:44:12 +0300 Subject: [PATCH 3/3] Update test_argparse.py --- Lib/test/test_argparse.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index 55a80aea3006dc..707d3215b24792 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -2814,6 +2814,7 @@ def get_parser(self, required): ''' class TestMutuallyExclusiveNested(MEMixin, TestCase): + def get_parser(self, required): parser = ErrorRaisingArgumentParser(prog='PROG') group = parser.add_mutually_exclusive_group(required=required) @@ -2827,10 +2828,6 @@ def get_parser(self, required): group3.add_argument('-f') return parser - failures = [] - successes = [] - successes_when_not_required = [] - usage_when_not_required = '''\ usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]] ''' @@ -2850,6 +2847,12 @@ def get_parser(self, required): -f F ''' + # We are only interested in testing the behavior of format_usage(). + test_failures_when_not_required = None + test_failures_when_required = None + test_successes_when_not_required = None + test_successes_when_required = None + # ================================================= # Mutually exclusive group in parent parser tests # ================================================= pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy