mirror of https://github.com/python/cpython
- Issue #15906: Fix a regression in argparse caused by the preceding change,
when action='append', type='str' and default=[].
This commit is contained in:
commit
0ae066b281
|
@ -1961,6 +1961,7 @@ class ArgumentParser(_AttributeHolder, _ActionsContainer):
|
||||||
# twice (which may fail) if the argument was given, but
|
# twice (which may fail) if the argument was given, but
|
||||||
# only if it was defined already in the namespace
|
# only if it was defined already in the namespace
|
||||||
if (action.default is not None and
|
if (action.default is not None and
|
||||||
|
isinstance(action, _StoreAction) and
|
||||||
hasattr(namespace, action.dest) and
|
hasattr(namespace, action.dest) and
|
||||||
action.default is getattr(namespace, action.dest)):
|
action.default is getattr(namespace, action.dest)):
|
||||||
setattr(namespace, action.dest,
|
setattr(namespace, action.dest,
|
||||||
|
|
|
@ -4607,6 +4607,16 @@ class TestTypeFunctionCallWithNonStringDefault(TestCase):
|
||||||
args = parser.parse_args([])
|
args = parser.parse_args([])
|
||||||
self.assertEqual(NS(foo='foo_converted'), 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
|
# parse_known_args tests
|
||||||
# ======================
|
# ======================
|
||||||
|
|
|
@ -56,6 +56,9 @@ Library
|
||||||
especially problematic for the FileType type, as a default file would always
|
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.
|
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
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue