[Python-checkins] cpython (merge 3.2 -> default): - Issue #15906: Fix a regression in argparse caused by the preceding change,

barry.warsaw python-checkins at python.org
Wed Sep 12 06:13:47 CEST 2012


http://hg.python.org/cpython/rev/25e41fdc4e60
changeset:   79001:25e41fdc4e60
parent:      78998:6fea947edead
parent:      79000:bc342cd7ed96
user:        Barry Warsaw <barry at python.org>
date:        Wed Sep 12 00:12:29 2012 -0400
summary:
  - Issue #15906: Fix a regression in argparse caused by the preceding change,
  when action='append', type='str' and default=[].

files:
  Lib/argparse.py           |   1 +
  Lib/test/test_argparse.py |  10 ++++++++++
  Misc/NEWS                 |   3 +++
  3 files changed, 14 insertions(+), 0 deletions(-)


diff --git a/Lib/argparse.py b/Lib/argparse.py
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -1961,6 +1961,7 @@
                     # 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
--- a/Lib/test/test_argparse.py
+++ b/Lib/test/test_argparse.py
@@ -4607,6 +4607,16 @@
         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
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -56,6 +56,9 @@
   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
 -----------------
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list