| # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html |
| # For details: https://github.com/PyCQA/pylint/blob/master/LICENSE |
| |
| import optparse # pylint: disable=deprecated-module |
| |
| 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 |