Coverage for C:\Repos\ekr-pylint\pylint\config\option_parser.py: 28%
25 statements
« prev ^ index » next coverage.py v6.4, created at 2022-05-24 10:21 -0500
« prev ^ index » next coverage.py v6.4, created at 2022-05-24 10:21 -0500
1# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
2# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
3# Copyright (c) https://github.com/PyCQA/pylint/blob/main/CONTRIBUTORS.txt
5import optparse # pylint: disable=deprecated-module
6import warnings
8from pylint.config.option import Option
11def _level_options(group, outputlevel):
12 return [
13 option
14 for option in group.option_list
15 if (getattr(option, "level", 0) or 0) <= outputlevel
16 and option.help is not optparse.SUPPRESS_HELP
17 ]
20class OptionParser(optparse.OptionParser):
21 def __init__(self, option_class, *args, **kwargs):
22 # TODO: 3.0: Remove deprecated class
23 warnings.warn(
24 "OptionParser has been deprecated and will be removed in pylint 3.0",
25 DeprecationWarning,
26 )
27 super().__init__(option_class=Option, *args, **kwargs)
29 def format_option_help(self, formatter=None):
30 if formatter is None:
31 formatter = self.formatter
32 outputlevel = getattr(formatter, "output_level", 0)
33 formatter.store_option_strings(self)
34 result = [formatter.format_heading("Options")]
35 formatter.indent()
36 if self.option_list:
37 result.append(optparse.OptionContainer.format_option_help(self, formatter))
38 result.append("\n")
39 for group in self.option_groups:
40 if group.level <= outputlevel and (
41 group.description or _level_options(group, outputlevel)
42 ):
43 result.append(group.format_help(formatter))
44 result.append("\n")
45 formatter.dedent()
46 # Drop the last "\n", or the header if no options or option groups:
47 return "".join(result[:-1])
49 def _match_long_opt(self, opt): # pragma: no cover # Unused
50 """Disable abbreviations."""
51 if opt not in self._long_opt:
52 raise optparse.BadOptionError(opt)
53 return opt