diff options
-rw-r--r-- | pylint/config/__init__.py | 42 | ||||
-rw-r--r-- | pylint/config/option_parser.py | 47 |
2 files changed, 48 insertions, 41 deletions
diff --git a/pylint/config/__init__.py b/pylint/config/__init__.py index 7e2f6f8d6..a0945d7a5 100644 --- a/pylint/config/__init__.py +++ b/pylint/config/__init__.py @@ -61,6 +61,7 @@ from pylint.config.option import ( _regexp_validator, _validate, ) +from pylint.config.option_parser import OptionParser __all__ = ["_csv_validator", "_regexp_csv_validator", "_regexp_validator"] @@ -134,15 +135,6 @@ class UnsupportedAction(Exception): """raised by set_option when it doesn't know what to do for an action""" -def _level_options(group, outputlevel): - return [ - option - for option in group.option_list - if (getattr(option, "level", 0) or 0) <= outputlevel - and option.help is not optparse.SUPPRESS_HELP - ] - - def _expand_default(self, option): """Patch OptionParser.expand_default with custom behaviour @@ -176,38 +168,6 @@ def _patch_optparse(): optparse.HelpFormatter.expand_default = orig_default -class OptionParser(optparse.OptionParser): - def __init__(self, option_class, *args, **kwargs): - optparse.OptionParser.__init__(self, option_class=Option, *args, **kwargs) - - def format_option_help(self, formatter=None): - if formatter is None: - formatter = self.formatter - outputlevel = getattr(formatter, "output_level", 0) - formatter.store_option_strings(self) - result = [] - result.append(formatter.format_heading("Options")) - formatter.indent() - if self.option_list: - result.append(optparse.OptionContainer.format_option_help(self, formatter)) - result.append("\n") - for group in self.option_groups: - if group.level <= outputlevel and ( - group.description or _level_options(group, outputlevel) - ): - result.append(group.format_help(formatter)) - result.append("\n") - formatter.dedent() - # Drop the last "\n", or the header if no options or option groups: - return "".join(result[:-1]) - - def _match_long_opt(self, opt): - """Disable abbreviations.""" - if opt not in self._long_opt: - raise optparse.BadOptionError(opt) - return opt - - class OptionsManagerMixIn: """Handle configuration from both a configuration file and command line options""" diff --git a/pylint/config/option_parser.py b/pylint/config/option_parser.py new file mode 100644 index 000000000..36ebbe5fa --- /dev/null +++ b/pylint/config/option_parser.py @@ -0,0 +1,47 @@ +# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html +# For details: https://github.com/PyCQA/pylint/blob/master/COPYING + +import optparse + +from pylint.config.option import Option + + +def _level_options(group, outputlevel): + return [ + option + for option in group.option_list + if (getattr(option, "level", 0) or 0) <= outputlevel + and option.help is not optparse.SUPPRESS_HELP + ] + + +class OptionParser(optparse.OptionParser): + def __init__(self, option_class, *args, **kwargs): + optparse.OptionParser.__init__(self, option_class=Option, *args, **kwargs) + + def format_option_help(self, formatter=None): + if formatter is None: + formatter = self.formatter + outputlevel = getattr(formatter, "output_level", 0) + formatter.store_option_strings(self) + result = [] + result.append(formatter.format_heading("Options")) + formatter.indent() + if self.option_list: + result.append(optparse.OptionContainer.format_option_help(self, formatter)) + result.append("\n") + for group in self.option_groups: + if group.level <= outputlevel and ( + group.description or _level_options(group, outputlevel) + ): + result.append(group.format_help(formatter)) + result.append("\n") + formatter.dedent() + # Drop the last "\n", or the header if no options or option groups: + return "".join(result[:-1]) + + def _match_long_opt(self, opt): + """Disable abbreviations.""" + if opt not in self._long_opt: + raise optparse.BadOptionError(opt) + return opt |