[Python-Dev] [Python-checkins] cpython (merge 3.2 -> default): - Issue #15906: Fix a regression in argparse caused by the preceding change,
Chris Jerdonek
chris.jerdonek at gmail.com
Wed Sep 12 06:30:57 CEST 2012
On Tue, Sep 11, 2012 at 9:13 PM, barry.warsaw
<python-checkins at python.org> wrote:
> 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=[].
I didn't have time to respond Barry's e-mail from four hours ago
before this was committed. I think this change may be problematic.
At the least, I think people should have an opportunity to air their
specific concerns and talk through the implications.
Also, from the discussion it seemed like the sentiment was leaning
towards a different approach for the fix.
I made a comment on the issue with some more extended remarks:
http://bugs.python.org/msg170351
--Chris
>
> 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
>
> _______________________________________________
> Python-checkins mailing list
> Python-checkins at python.org
> http://mail.python.org/mailman/listinfo/python-checkins
>
More information about the Python-Dev
mailing list