From 8d3afe40e1e8ba70418bada82608d47e61eedb8f Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sun, 14 Nov 2021 15:39:14 -0800 Subject: [PATCH] use return value of parse_args directly --- src/flake8/main/application.py | 12 +++++------- src/flake8/options/aggregator.py | 5 ++--- src/flake8/options/manager.py | 6 ++---- tests/integration/test_aggregator.py | 4 ++-- tests/unit/test_option_manager.py | 20 ++++++++++---------- 5 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/flake8/main/application.py b/src/flake8/main/application.py index 76c8078..c85172c 100644 --- a/src/flake8/main/application.py +++ b/src/flake8/main/application.py @@ -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, ) diff --git a/src/flake8/options/aggregator.py b/src/flake8/options/aggregator.py index 73a0f36..6458d69 100644 --- a/src/flake8/options/aggregator.py +++ b/src/flake8/options/aggregator.py @@ -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( diff --git a/src/flake8/options/manager.py b/src/flake8/options/manager.py index 50bdf58..af6f31c 100644 --- a/src/flake8/options/manager.py +++ b/src/flake8/options/manager.py @@ -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 diff --git a/tests/integration/test_aggregator.py b/tests/integration/test_aggregator.py index ae75204..70331a4 100644 --- a/tests/integration/test_aggregator.py +++ b/tests/integration/test_aggregator.py @@ -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 ) diff --git a/tests/unit/test_option_manager.py b/tests/unit/test_option_manager.py index 2eb590a..0dee442 100644 --- a/tests/unit/test_option_manager.py +++ b/tests/unit/test_option_manager.py @@ -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):