use return value of parse_args directly

This commit is contained in:
Anthony Sottile 2021-11-14 15:39:14 -08:00
parent d582affb2c
commit 8d3afe40e1
5 changed files with 21 additions and 26 deletions

View file

@ -80,9 +80,6 @@ class Application:
#: The user-supplied options parsed into an instance of
#: :class:`argparse.Namespace`
self.options: Optional[argparse.Namespace] = None
#: The left over arguments that were not parsed by
#: :attr:`option_manager`
self.args: Optional[List[str]] = None
#: The number of errors, warnings, and other messages after running
#: flake8 and taking into account ignored errors and lines.
self.result_count = 0
@ -183,7 +180,7 @@ class Application:
:param list argv:
Command-line arguments passed in directly.
"""
self.options, self.args = aggregator.aggregate_options(
self.options = aggregator.aggregate_options(
self.option_manager,
config_finder,
argv,
@ -201,11 +198,11 @@ class Application:
assert self.check_plugins is not None
self.check_plugins.provide_options(
self.option_manager, self.options, self.args
self.option_manager, self.options, self.options.filenames
)
assert self.formatting_plugins is not None
self.formatting_plugins.provide_options(
self.option_manager, self.options, self.args
self.option_manager, self.options, self.options.filenames
)
def formatter_for(self, formatter_plugin_name):
@ -251,9 +248,10 @@ class Application:
def make_file_checker_manager(self) -> None:
"""Initialize our FileChecker Manager."""
assert self.options is not None
self.file_checker_manager = checker.Manager(
style_guide=self.guide,
arguments=self.args,
arguments=self.options.filenames,
checker_plugins=self.check_plugins,
)

View file

@ -6,7 +6,6 @@ applies the user-specified command-line configuration on top of it.
import argparse
import logging
from typing import List
from typing import Tuple
from flake8.options import config
from flake8.options.manager import OptionManager
@ -18,7 +17,7 @@ def aggregate_options(
manager: OptionManager,
config_finder: config.ConfigFileFinder,
argv: List[str],
) -> Tuple[argparse.Namespace, List[str]]:
) -> argparse.Namespace:
"""Aggregate and merge CLI and config file options.
:param flake8.options.manager.OptionManager manager:
@ -35,7 +34,7 @@ def aggregate_options(
tuple(argparse.Namespace, list)
"""
# Get defaults from the option parser
default_values, _ = manager.parse_args([])
default_values = manager.parse_args([])
# Make our new configuration file mergerator
config_parser = config.ConfigParser(

View file

@ -459,15 +459,13 @@ class OptionManager:
self,
args: Optional[List[str]] = None,
values: Optional[argparse.Namespace] = None,
) -> Tuple[argparse.Namespace, List[str]]:
) -> argparse.Namespace:
"""Proxy to calling the OptionParser's parse_args method."""
self.generate_epilog()
self.update_version_string()
if values:
self.parser.set_defaults(**vars(values))
parsed_args = self.parser.parse_args(args)
# TODO: refactor callers to not need this
return parsed_args, parsed_args.filenames
return self.parser.parse_args(args)
def parse_known_args(
self, args: Optional[List[str]] = None

View file

@ -38,7 +38,7 @@ def test_aggregate_options_with_config(optmanager):
config_finder = config.ConfigFileFinder(
"flake8", config_file=CLI_SPECIFIED_CONFIG
)
options, args = aggregator.aggregate_options(
options = aggregator.aggregate_options(
optmanager, config_finder, arguments
)
@ -58,7 +58,7 @@ def test_aggregate_options_when_isolated(optmanager):
]
config_finder = config.ConfigFileFinder("flake8", ignore_config_files=True)
optmanager.extend_default_ignore(["E8"])
options, args = aggregator.aggregate_options(
options = aggregator.aggregate_options(
optmanager, config_finder, arguments
)

View file

@ -33,16 +33,16 @@ def test_option_manager_including_parent_options():
optmanager = manager.OptionManager(
prog="flake8", version=TEST_VERSION, parents=[parent_parser]
)
option, _ = optmanager.parse_args(["--parent", "foo"])
options = optmanager.parse_args(["--parent", "foo"])
# THEN
assert option.parent == "foo"
assert options.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")
options, args = optmanager.parse_args([], namespace)
options = optmanager.parse_args([], namespace)
assert options.foo == "bar"
@ -50,7 +50,7 @@ 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)
options = optmanager.parse_args([], namespace)
assert options.foo == 5
@ -104,7 +104,7 @@ def test_parse_args_normalize_path(optmanager):
optmanager.add_option("--config", normalize_paths=True)
options, args = optmanager.parse_args(["--config", "../config.ini"])
options = optmanager.parse_args(["--config", "../config.ini"])
assert options.config == os.path.abspath("../config.ini")
@ -117,7 +117,7 @@ def test_parse_args_handles_comma_separated_defaults(optmanager):
"--exclude", default="E123,W234", comma_separated_list=True
)
options, args = optmanager.parse_args([])
options = optmanager.parse_args([])
assert options.exclude == ["E123", "W234"]
@ -130,7 +130,7 @@ def test_parse_args_handles_comma_separated_lists(optmanager):
"--exclude", default="E123,W234", comma_separated_list=True
)
options, args = optmanager.parse_args(["--exclude", "E201,W111,F280"])
options = optmanager.parse_args(["--exclude", "E201,W111,F280"])
assert options.exclude == ["E201", "W111", "F280"]
@ -143,7 +143,7 @@ def test_parse_args_normalize_paths(optmanager):
"--extra-config", normalize_paths=True, comma_separated_list=True
)
options, args = optmanager.parse_args(
options = optmanager.parse_args(
["--extra-config", "../config.ini,tox.ini,flake8/some-other.cfg"]
)
assert options.extra_config == [
@ -319,14 +319,14 @@ def test_optparse_normalize_callback_option_legacy(optmanager):
def test_optparse_normalize_types(optmanager, type_s, input_val, expected):
"""Test the optparse shim for type="typename"."""
optmanager.add_option("--foo", type=type_s)
opts, args = optmanager.parse_args(["--foo", input_val])
opts = optmanager.parse_args(["--foo", input_val])
assert opts.foo == expected
def test_optparse_normalize_choice_type(optmanager):
"""Test the optparse shim for type="choice"."""
optmanager.add_option("--foo", type="choice", choices=("1", "2", "3"))
opts, args = optmanager.parse_args(["--foo", "1"])
opts = optmanager.parse_args(["--foo", "1"])
assert opts.foo == "1"
# fails to parse
with pytest.raises(SystemExit):