diff options
Diffstat (limited to 'pylint/config/arguments_provider.py')
-rw-r--r-- | pylint/config/arguments_provider.py | 177 |
1 files changed, 13 insertions, 164 deletions
diff --git a/pylint/config/arguments_provider.py b/pylint/config/arguments_provider.py index f5aac2f1d..7f75718ca 100644 --- a/pylint/config/arguments_provider.py +++ b/pylint/config/arguments_provider.py @@ -1,14 +1,11 @@ # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html -# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE -# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt +# For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE +# Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt """Arguments provider class used to expose options.""" from __future__ import annotations -import argparse -import optparse # pylint: disable=deprecated-module -import warnings from collections.abc import Iterator from typing import Any @@ -16,19 +13,6 @@ from pylint.config.arguments_manager import _ArgumentsManager from pylint.typing import OptionDict, Options -class UnsupportedAction(Exception): - """Raised by set_option when it doesn't know what to do for an action.""" - - def __init__(self, *args: object) -> None: - # TODO: 3.0: Remove deprecated exception - warnings.warn( - "UnsupportedAction has been deprecated and will be removed in pylint 3.0", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args) - - class _ArgumentsProvider: """Base class for classes that provide arguments.""" @@ -47,170 +31,35 @@ class _ArgumentsProvider: self._arguments_manager._register_options_provider(self) - self._level = 0 - - @property - def level(self) -> int: - # TODO: 3.0: Remove deprecated attribute - warnings.warn( - "The level attribute has been deprecated. It was used to display the checker in the help or not," - " and everything is displayed in the help now. It will be removed in pylint 3.0.", - DeprecationWarning, - stacklevel=2, - ) - return self._level - - @level.setter - def level(self, value: int) -> None: - # TODO: 3.0: Remove deprecated attribute - warnings.warn( - "Setting the level attribute has been deprecated. It was used to display the checker " - "in the help or not, and everything is displayed in the help now. It will be removed " - "in pylint 3.0.", - DeprecationWarning, - stacklevel=2, - ) - self._level = value - - @property - def config(self) -> argparse.Namespace: - # TODO: 3.0: Remove deprecated attribute - warnings.warn( - "The checker-specific config attribute has been deprecated. Please use " - "'linter.config' to access the global configuration object.", - DeprecationWarning, - stacklevel=2, - ) - return self._arguments_manager.config - - def load_defaults(self) -> None: # pragma: no cover - """DEPRECATED: Initialize the provider using default values.""" - warnings.warn( - "load_defaults has been deprecated. Option groups should be " - "registered by initializing an ArgumentsProvider. " - "This automatically registers the group on the ArgumentsManager.", - DeprecationWarning, - stacklevel=2, - ) - for opt, optdict in self.options: - action = optdict.get("action") - if action != "callback": - # callback action have no default - if optdict is None: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) - optdict = self.get_option_def(opt) - default = optdict.get("default") - self.set_option(opt, default, action, optdict) - - def option_attrname( - self, opt: str, optdict: OptionDict | None = None - ) -> str: # pragma: no cover - """DEPRECATED: Get the config attribute corresponding to opt.""" - warnings.warn( - "option_attrname has been deprecated. It will be removed " - "in a future release.", - DeprecationWarning, - stacklevel=2, - ) - if optdict is None: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) - optdict = self.get_option_def(opt) - return optdict.get("dest", opt.replace("-", "_")) # type: ignore[return-value] - - def option_value(self, opt: str) -> Any: # pragma: no cover - """DEPRECATED: Get the current value for the given option.""" - warnings.warn( - "option_value has been deprecated. It will be removed " - "in a future release.", - DeprecationWarning, - stacklevel=2, - ) + def _option_value(self, opt: str) -> Any: + """Get the current value for the given option.""" return getattr(self._arguments_manager.config, opt.replace("-", "_"), None) - def set_option( # pragma: no cover - self, - optname: Any, - value: Any, - action: Any = None, # pylint: disable=unused-argument - optdict: Any = None, # pylint: disable=unused-argument - ) -> None: - """DEPRECATED: Method called to set an option (registered in the options - list). - """ - # TODO: 3.0: Remove deprecated method. - warnings.warn( - "set_option has been deprecated. You can use _arguments_manager.set_option " - "or linter.set_option to set options on the global configuration object.", - DeprecationWarning, - stacklevel=2, - ) - self._arguments_manager.set_option(optname, value) - - def get_option_def(self, opt: str) -> OptionDict: # pragma: no cover - """DEPRECATED: Return the dictionary defining an option given its name. - - :raises OptionError: If the option isn't found. - """ - warnings.warn( - "get_option_def has been deprecated. It will be removed " - "in a future release.", - DeprecationWarning, - stacklevel=2, - ) - assert self.options - for option in self.options: - if option[0] == opt: - return option[1] - raise optparse.OptionError( - f"no such option {opt} in section {self.name!r}", opt # type: ignore[arg-type] - ) - - def options_by_section( + def _options_by_section( self, ) -> Iterator[ tuple[str, list[tuple[str, OptionDict, Any]]] | tuple[None, dict[str, list[tuple[str, OptionDict, Any]]]] - ]: # pragma: no cover - """DEPRECATED: Return an iterator on options grouped by section. + ]: + """Return an iterator on options grouped by section. (section, [list of (optname, optdict, optvalue)]) """ - # TODO 3.0: Make this function private see - # https://github.com/PyCQA/pylint/pull/6665#discussion_r880143229 - # It's only used in '_get_global_options_documentation' - warnings.warn( - "options_by_section has been deprecated. It will be removed " - "in a future release.", - DeprecationWarning, - stacklevel=2, - ) sections: dict[str, list[tuple[str, OptionDict, Any]]] = {} for optname, optdict in self.options: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) - sections.setdefault(optdict.get("group"), []).append( # type: ignore[arg-type] - (optname, optdict, self.option_value(optname)) - ) + sections.setdefault(optdict.get("group"), []).append( # type: ignore[arg-type] + (optname, optdict, self._option_value(optname)) + ) if None in sections: yield None, sections.pop(None) # type: ignore[call-overload] for section, options in sorted(sections.items()): yield section.upper(), options - def options_and_values( + def _options_and_values( self, options: Options | None = None - ) -> Iterator[tuple[str, OptionDict, Any]]: # pragma: no cover + ) -> Iterator[tuple[str, OptionDict, Any]]: """DEPRECATED.""" - warnings.warn( - "options_and_values has been deprecated. It will be removed " - "in a future release.", - DeprecationWarning, - stacklevel=2, - ) if options is None: options = self.options for optname, optdict in options: - with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) - yield optname, optdict, self.option_value(optname) + yield optname, optdict, self._option_value(optname) |