cpython: b35a811d4420 (original) (raw)

Mercurial > cpython

changeset 93121:b35a811d4420

Merge: #9351: set_defaults on subparser is no longer ignored if set on parent. [#9351]

R David Murray rdmurray@bitdance.com
date Fri, 17 Oct 2014 19:58:03 -0400
parents 5beb1ea76f36(current diff)e9cb45ccf42b(diff)
children 8ed630f28753
files Lib/test/test_argparse.py Misc/NEWS
diffstat 3 files changed, 18 insertions(+), 1 deletions(-)[+] [-] Lib/argparse.py 9 Lib/test/test_argparse.py 7 Misc/NEWS 3

line wrap: on

line diff

--- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -1122,7 +1122,14 @@ class _SubParsersAction(Action): # parse all the remaining options into the namespace # store any unrecognized options on the object, so that the top # level parser can decide what to do with them

+

+ if arg_strings: vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, []) getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).extend(arg_strings)

--- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -2781,6 +2781,13 @@ class TestSetDefaults(TestCase): parser = ErrorRaisingArgumentParser(parents=[parent]) self.assertEqual(NS(x='foo'), parser.parse_args([]))

+ def test_set_defaults_same_as_add_argument(self): parser = ErrorRaisingArgumentParser() parser.set_defaults(w='W', x='X', y='Y', z='Z')

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -181,6 +181,9 @@ Core and Builtins Library ------- +- Issue #9351: Defaults set with set_defaults on an argparse subparser