diff options
author | Barry Warsaw <barry@python.org> | 2012-09-12 04:12:29 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2012-09-12 04:12:29 (GMT) |
commit | 0ae066b28141ec96504f30eb2a32206896853935 (patch) | |
tree | 18b4a2b94e61172cebc4e651f8380dcca34fd3dd /Lib | |
parent | 8f49456b4e3afda90b5ee0469d6f7d55f5c79c82 (diff) | |
parent | 4b2f9e914d497d6b2b5ec09a03da8b6f171dffed (diff) | |
download | cpython-0ae066b28141ec96504f30eb2a32206896853935.zip cpython-0ae066b28141ec96504f30eb2a32206896853935.tar.gz cpython-0ae066b28141ec96504f30eb2a32206896853935.tar.bz2 |
- Issue #15906: Fix a regression in argparse caused by the preceding change,
when action='append', type='str' and default=[].
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/argparse.py | 1 | ||||
-rw-r--r-- | Lib/test/test_argparse.py | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py index d5976e9..66cd70a 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -1961,6 +1961,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer): # twice (which may fail) if the argument was given, but # only if it was defined already in the namespace if (action.default is not None and + isinstance(action, _StoreAction) and hasattr(namespace, action.dest) and action.default is getattr(namespace, action.dest)): setattr(namespace, action.dest, diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index caf99af..ff02ee7 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -4607,6 +4607,16 @@ class TestTypeFunctionCallWithNonStringDefault(TestCase): args = parser.parse_args([]) self.assertEqual(NS(foo='foo_converted'), args) + def test_issue_15906(self): + # Issue #15906: When action='append', type=str, default=[] are + # providing, the dest value was the string representation "[]" when it + # should have been an empty list. + parser = argparse.ArgumentParser() + parser.add_argument('--test', dest='test', type=str, + default=[], action='append') + args = parser.parse_args([]) + self.assertEqual(args.test, []) + # ====================== # parse_known_args tests # ====================== |