changeset: 78999:739606bdcba4 branch: 2.7 parent: 78982:706115cb2cdb user: Barry Warsaw date: Tue Sep 11 21:06:29 2012 -0400 files: Lib/argparse.py Lib/test/test_argparse.py Misc/NEWS description: - Issue #15906: Fix a regression in argparse caused by the preceding change, when action='append', type='str' and default=[]. diff -r 706115cb2cdb -r 739606bdcba4 Lib/argparse.py --- a/Lib/argparse.py Tue Sep 11 01:55:04 2012 +0200 +++ b/Lib/argparse.py Tue Sep 11 21:06:29 2012 -0400 @@ -1948,6 +1948,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 -r 706115cb2cdb -r 739606bdcba4 Lib/test/test_argparse.py --- a/Lib/test/test_argparse.py Tue Sep 11 01:55:04 2012 +0200 +++ b/Lib/test/test_argparse.py Tue Sep 11 21:06:29 2012 -0400 @@ -4480,6 +4480,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 -r 706115cb2cdb -r 739606bdcba4 Misc/NEWS --- a/Misc/NEWS Tue Sep 11 01:55:04 2012 +0200 +++ b/Misc/NEWS Tue Sep 11 21:06:29 2012 -0400 @@ -119,6 +119,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=[]. + - Issue #13370: Ensure that ctypes works on Mac OS X when Python is compiled using the clang compiler

AltStyle によって変換されたページ (->オリジナル) /