mirror of
https://github.com/PyCQA/flake8.git
synced 2026-03-29 10:36:53 +00:00
Merge branch 'optmgr-parse-args-default-values' into 'master'
Set configuration file-provided values via ArgumentParser.set_defaults() See merge request pycqa/flake8!350
This commit is contained in:
commit
8cd1e0ecc7
2 changed files with 28 additions and 3 deletions
|
|
@ -425,13 +425,23 @@ class OptionManager(object):
|
|||
plugin_version_format
|
||||
)
|
||||
|
||||
def parse_args(self, args=None, values=None):
|
||||
def parse_args(
|
||||
self,
|
||||
args=None, # type: Optional[List[str]]
|
||||
values=None, # type: Optional[argparse.Namespace]
|
||||
):
|
||||
# type: (...) -> Tuple[argparse.Namespace, List[str]]
|
||||
"""Proxy to calling the OptionParser's parse_args method."""
|
||||
self.generate_epilog()
|
||||
self.update_version_string()
|
||||
args = self.parser.parse_args(args, values)
|
||||
assert isinstance( # nosec (for bandit)
|
||||
self.parser, argparse.ArgumentParser
|
||||
), self.parser
|
||||
if values:
|
||||
self.parser.set_defaults(**vars(values))
|
||||
parsed_args = self.parser.parse_args(args)
|
||||
# TODO: refactor callers to not need this
|
||||
return args, args.filenames
|
||||
return parsed_args, parsed_args.filenames
|
||||
|
||||
def parse_known_args(self, args=None):
|
||||
# type: (Optional[List[str]]) -> Tuple[argparse.Namespace, List[str]]
|
||||
|
|
|
|||
|
|
@ -22,6 +22,21 @@ def test_option_manager_creates_option_parser(optmanager):
|
|||
assert isinstance(optmanager.parser, argparse.ArgumentParser)
|
||||
|
||||
|
||||
def test_parse_args_forwarding_default_values(optmanager):
|
||||
"""Verify default provided values are present in the final result."""
|
||||
namespace = argparse.Namespace(foo='bar')
|
||||
options, args = optmanager.parse_args([], namespace)
|
||||
assert options.foo == 'bar'
|
||||
|
||||
|
||||
def test_parse_args_forwarding_type_coercion(optmanager):
|
||||
"""Verify default provided values are type converted from add_option."""
|
||||
optmanager.add_option('--foo', type=int)
|
||||
namespace = argparse.Namespace(foo='5')
|
||||
options, args = optmanager.parse_args([], namespace)
|
||||
assert options.foo == 5
|
||||
|
||||
|
||||
def test_add_option_short_option_only(optmanager):
|
||||
"""Verify the behaviour of adding a short-option only."""
|
||||
assert optmanager.options == []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue