]> granicus.if.org Git - python/commitdiff
- Issue #15906: Fix a regression in argparse caused by the preceding change,
authorBarry Warsaw <barry@python.org>
Wed, 12 Sep 2012 02:38:47 +0000 (22:38 -0400)
committerBarry Warsaw <barry@python.org>
Wed, 12 Sep 2012 02:38:47 +0000 (22:38 -0400)
  when action='append', type='str' and default=[].

Lib/argparse.py
Lib/test/test_argparse.py
Misc/NEWS

index 52ed3ab107aa9313fada45eac218e1ed47fe24ef..fba6a262f525655d29a1ebe88d5680904acad3f7 100644 (file)
@@ -1957,6 +1957,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,
index a2f9a69a59a8d838a44c3d117c689aba815fcb72..cd80dc6d16f04a1120e3cc3d9e2b2ba2d0747781 100644 (file)
@@ -4516,6 +4516,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
 # ======================
index 3b09e9633af52bbe93ae2ca573ac9f5e13b05878..24c6b7121d5d27a32764f797a442e4c5e7454f9b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -139,6 +139,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=[].
+
 - Issue #13370: Ensure that ctypes works on Mac OS X when Python is
   compiled using the clang compiler