mirror of
https://github.com/PyCQA/flake8.git
synced 2026-03-31 19:26:52 +00:00
optmanager: Inherit options from parent argument parsers
Allow for including options from parent `argparse.ArgumentParser` objects in preparation of splitting out the handling of preliminary options from the `OptionManager`.
This commit is contained in:
parent
2a5c2bb696
commit
1d7558f7da
2 changed files with 30 additions and 3 deletions
|
|
@ -338,8 +338,12 @@ class OptionManager(object):
|
|||
"""Manage Options and OptionParser while adding post-processing."""
|
||||
|
||||
def __init__(
|
||||
self, prog, version, usage="%(prog)s [options] file file ..."
|
||||
): # type: (str, str, str) -> None
|
||||
self,
|
||||
prog,
|
||||
version,
|
||||
usage="%(prog)s [options] file file ...",
|
||||
parents=None,
|
||||
): # type: (str, str, str, Optional[List[argparse.ArgumentParser]]) -> None # noqa: E501
|
||||
"""Initialize an instance of an OptionManager.
|
||||
|
||||
:param str prog:
|
||||
|
|
@ -348,9 +352,15 @@ class OptionManager(object):
|
|||
Version string for the program.
|
||||
:param str usage:
|
||||
Basic usage string used by the OptionParser.
|
||||
:param argparse.ArgumentParser parents:
|
||||
A list of ArgumentParser objects whose arguments should also be
|
||||
included.
|
||||
"""
|
||||
if parents is None:
|
||||
parents = []
|
||||
|
||||
self.parser = argparse.ArgumentParser(
|
||||
prog=prog, usage=usage
|
||||
prog=prog, usage=usage, parents=parents
|
||||
) # type: argparse.ArgumentParser
|
||||
self._current_group = None # type: Optional[argparse._ArgumentGroup]
|
||||
self.version_action = cast(
|
||||
|
|
|
|||
|
|
@ -22,6 +22,23 @@ def test_option_manager_creates_option_parser(optmanager):
|
|||
assert isinstance(optmanager.parser, argparse.ArgumentParser)
|
||||
|
||||
|
||||
def test_option_manager_including_parent_options():
|
||||
"""Verify parent options are included in the parsed options."""
|
||||
# GIVEN
|
||||
parent_parser = argparse.ArgumentParser(add_help=False)
|
||||
parent_parser.add_argument('--parent')
|
||||
|
||||
# WHEN
|
||||
optmanager = manager.OptionManager(
|
||||
prog='flake8',
|
||||
version=TEST_VERSION,
|
||||
parents=[parent_parser])
|
||||
option, _ = optmanager.parse_args(['--parent', 'foo'])
|
||||
|
||||
# THEN
|
||||
assert option.parent == 'foo'
|
||||
|
||||
|
||||
def test_parse_args_forwarding_default_values(optmanager):
|
||||
"""Verify default provided values are present in the final result."""
|
||||
namespace = argparse.Namespace(foo='bar')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue