| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- """Aggregation function for CLI specified options and config file options.
- This holds the logic that uses the collected and merged config files and
- applies the user-specified command-line configuration on top of it.
- """
- import argparse
- import configparser
- import logging
- from typing import Optional
- from typing import Sequence
- from flake8.options import config
- from flake8.options.manager import OptionManager
- LOG = logging.getLogger(__name__)
- def aggregate_options(
- manager: OptionManager,
- cfg: configparser.RawConfigParser,
- cfg_dir: str,
- argv: Optional[Sequence[str]],
- ) -> argparse.Namespace:
- """Aggregate and merge CLI and config file options."""
- # Get defaults from the option parser
- default_values = manager.parse_args([])
- # Get the parsed config
- parsed_config = config.parse_config(manager, cfg, cfg_dir)
- # store the plugin-set extended default ignore / select
- default_values.extended_default_ignore = manager.extended_default_ignore
- default_values.extended_default_select = manager.extended_default_select
- # Merge values parsed from config onto the default values returned
- for config_name, value in parsed_config.items():
- dest_name = config_name
- # If the config name is somehow different from the destination name,
- # fetch the destination name from our Option
- if not hasattr(default_values, config_name):
- dest_val = manager.config_options_dict[config_name].dest
- assert isinstance(dest_val, str)
- dest_name = dest_val
- LOG.debug(
- 'Overriding default value of (%s) for "%s" with (%s)',
- getattr(default_values, dest_name, None),
- dest_name,
- value,
- )
- # Override the default values with the config values
- setattr(default_values, dest_name, value)
- # Finally parse the command-line options
- return manager.parse_args(argv, default_values)
|