diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2022-04-07 14:32:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-07 14:32:09 +0200 |
commit | 1a86c24deb7eae0b426c34c001b98a1154ffdf37 (patch) | |
tree | 51422393f12958d30cca0ccc309b2638ad6bbcc1 /pylint/config/arguments_manager.py | |
parent | 91924488052761c6c799db5029af1823a02c896a (diff) | |
download | pylint-git-1a86c24deb7eae0b426c34c001b98a1154ffdf37.tar.gz |
Deprecate ``register_options_provider`` (#6217)
Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
Diffstat (limited to 'pylint/config/arguments_manager.py')
-rw-r--r-- | pylint/config/arguments_manager.py | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/pylint/config/arguments_manager.py b/pylint/config/arguments_manager.py index 38a875445..f2ab322b8 100644 --- a/pylint/config/arguments_manager.py +++ b/pylint/config/arguments_manager.py @@ -29,7 +29,9 @@ from pylint.config.exceptions import UnrecognizedArgumentAction from pylint.config.help_formatter import _HelpFormatter from pylint.config.option import Option from pylint.config.option_parser import OptionParser +from pylint.config.options_provider_mixin import OptionsProviderMixIn from pylint.config.utils import _convert_option_to_argument +from pylint.constants import MAIN_CHECKER_NAME from pylint.typing import OptionDict if sys.version_info >= (3, 11): @@ -103,7 +105,7 @@ class _ArgumentsManager: warnings.filterwarnings("ignore", category=DeprecationWarning) self.reset_parsers(usage or "") # list of registered options providers - self.options_providers = [] # type: ignore[var-annotated] + self.options_providers: List[OptionsProviderMixIn] = [] # dictionary associating option name to checker self._all_options = collections.OrderedDict() # type: ignore[var-annotated] self._short_options = {} # type: ignore[var-annotated] @@ -120,6 +122,11 @@ class _ArgumentsManager: section = argument.section or provider.name.capitalize() section_desc = provider.option_groups_descs.get(section, None) + + # We exclude master since its docstring comes from PyLinter + if provider.name != MAIN_CHECKER_NAME and provider.__doc__: + section_desc = provider.__doc__.split("\n\n")[0] + self._add_arguments_to_parser(section, section_desc, argument) self._load_default_argument_values() @@ -244,13 +251,16 @@ class _ArgumentsManager: self.cmdline_parser.options_manager = self # type: ignore[attr-defined] self._optik_option_attrs = set(self.cmdline_parser.option_class.ATTRS) - # pylint: disable-next=fixme - # TODO: Optparse: All methods below this line are copied to keep API-parity with - # OptionsManagerMixIn. They should either be deprecated or moved above this line - # to keep them in _ArgumentsManager - - def register_options_provider(self, provider, own_group=True): + def register_options_provider( + self, provider: OptionsProviderMixIn, own_group: bool = True + ) -> None: """Register an options provider.""" + warnings.warn( + "register_options_provider has been deprecated. Options providers and " + "arguments providers should be registered by initializing ArgumentsProvider." + "This automatically registers the provider on the ArgumentsManager.", + DeprecationWarning, + ) self.options_providers.append(provider) non_group_spec_options = [ option for option in provider.options if "group" not in option[1] @@ -271,10 +281,15 @@ class _ArgumentsManager: goptions = [ option for option in provider.options - if option[1].get("group", "").upper() == gname + if option[1].get("group", "").upper() == gname # type: ignore[union-attr] ] self.add_option_group(gname, gdoc, goptions, provider) + # pylint: disable-next=fixme + # TODO: Optparse: All methods below this line are copied to keep API-parity with + # OptionsManagerMixIn. They should either be deprecated or moved above this line + # to keep them in _ArgumentsManager + def add_option_group(self, group_name, _, options, provider): # add option group to the command line parser if group_name in self._mygroups: |