[issue33109] argparse: make new 'required' argument to add_subparsers default to False instead of True
Anthony Sottile
report at bugs.python.org
Tue May 22 15:21:53 EDT 2018
Anthony Sottile <asottile at umich.edu> added the comment:
The bug is orthogonal, you can trigger it without the `required=` keyword argument via the (currently suggested) monkeypatch workaround which restores the pre-3.3 behaviour:
import argparse
parser = argparse.ArgumentParser()
subp = parser.add_subparsers()
subp.add_parser('test')
subp.required = True
parser.parse_args()
$ python3 test.py
Traceback (most recent call last):
File "test.py", line 7, in <module>
parser.parse_args()
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/argparse.py", line 1730, in parse_args
args, argv = self.parse_known_args(args, namespace)
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/argparse.py", line 1762, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/argparse.py", line 1997, in _parse_known_args
', '.join(required_actions))
TypeError: sequence item 0: expected str instance, NoneType found
Also note that when `dest` is specified it works fine:
import argparse
parser = argparse.ArgumentParser()
subp = parser.add_subparsers(dest='cmd')
subp.add_parser('test')
subp.required = True
parser.parse_args()
$ python3 test.py
usage: test.py [-h] {test} ...
test.py: error: the following arguments are required: cmd
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue33109>
_______________________________________
More information about the Python-bugs-list
mailing list