summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2012-09-12 04:12:29 (GMT)
committerBarry Warsaw <barry@python.org>2012-09-12 04:12:29 (GMT)
commit0ae066b28141ec96504f30eb2a32206896853935 (patch)
tree18b4a2b94e61172cebc4e651f8380dcca34fd3dd
parent8f49456b4e3afda90b5ee0469d6f7d55f5c79c82 (diff)
parent4b2f9e914d497d6b2b5ec09a03da8b6f171dffed (diff)
downloadcpython-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=[].
-rw-r--r--Lib/argparse.py1
-rw-r--r--Lib/test/test_argparse.py10
-rw-r--r--Misc/NEWS3
3 files changed, 14 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
# ======================
diff --git a/Misc/NEWS b/Misc/NEWS
index fabb36e..993bc11 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -56,6 +56,9 @@ Library
especially problematic for the FileType type, as a default file would always
be opened, even if a file argument was specified on the command line.
+- Issue #15906: Fix a regression in argparse caused by the preceding change,
+ when action='append', type='str' and default=[].
+
Extension Modules
-----------------