summaryrefslogtreecommitdiff
path: root/pylint/config/arguments_manager.py
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2022-04-07 14:32:09 +0200
committerGitHub <noreply@github.com>2022-04-07 14:32:09 +0200
commit1a86c24deb7eae0b426c34c001b98a1154ffdf37 (patch)
tree51422393f12958d30cca0ccc309b2638ad6bbcc1 /pylint/config/arguments_manager.py
parent91924488052761c6c799db5029af1823a02c896a (diff)
downloadpylint-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.py31
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: