mirror of
https://github.com/PyCQA/flake8.git
synced 2026-04-12 15:44:17 +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."""
|
"""Manage Options and OptionParser while adding post-processing."""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, prog, version, usage="%(prog)s [options] file file ..."
|
self,
|
||||||
): # type: (str, str, str) -> None
|
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.
|
"""Initialize an instance of an OptionManager.
|
||||||
|
|
||||||
:param str prog:
|
:param str prog:
|
||||||
|
|
@ -348,9 +352,15 @@ class OptionManager(object):
|
||||||
Version string for the program.
|
Version string for the program.
|
||||||
:param str usage:
|
:param str usage:
|
||||||
Basic usage string used by the OptionParser.
|
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(
|
self.parser = argparse.ArgumentParser(
|
||||||
prog=prog, usage=usage
|
prog=prog, usage=usage, parents=parents
|
||||||
) # type: argparse.ArgumentParser
|
) # type: argparse.ArgumentParser
|
||||||
self._current_group = None # type: Optional[argparse._ArgumentGroup]
|
self._current_group = None # type: Optional[argparse._ArgumentGroup]
|
||||||
self.version_action = cast(
|
self.version_action = cast(
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,23 @@ def test_option_manager_creates_option_parser(optmanager):
|
||||||
assert isinstance(optmanager.parser, argparse.ArgumentParser)
|
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):
|
def test_parse_args_forwarding_default_values(optmanager):
|
||||||
"""Verify default provided values are present in the final result."""
|
"""Verify default provided values are present in the final result."""
|
||||||
namespace = argparse.Namespace(foo='bar')
|
namespace = argparse.Namespace(foo='bar')
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue