diff options
author | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2010-09-16 15:37:21 +0200 |
---|---|---|
committer | Sylvain Th?nault <sylvain.thenault@logilab.fr> | 2010-09-16 15:37:21 +0200 |
commit | 382b2d6cbbb122ddf8e93363f427d266d857aa6c (patch) | |
tree | 62b681a427acf9721bdb12089e1037ff4f8e24c4 | |
parent | c37bbfe92af23de7c97e3c808656c7fba4821862 (diff) | |
download | logilab-common-382b2d6cbbb122ddf8e93363f427d266d857aa6c.tar.gz |
[optparse] avoid empty section when displaying usage
-rw-r--r-- | optik_ext.py | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/optik_ext.py b/optik_ext.py index 44d0504..3565877 100644 --- a/optik_ext.py +++ b/optik_ext.py @@ -242,6 +242,7 @@ class Option(BaseOption): return self.take_action( self.action, self.dest, opt, value, values, parser) + class OptionParser(BaseParser): """override optik.OptionParser to use our Option class """ @@ -260,7 +261,8 @@ class OptionParser(BaseParser): result.append(OptionContainer.format_option_help(self, formatter)) result.append("\n") for group in self.option_groups: - if group.level <= outputlevel: + if group.level <= outputlevel and ( + group.description or level_options(group, outputlevel)): result.append(group.format_help(formatter)) result.append("\n") formatter.dedent() @@ -270,15 +272,18 @@ class OptionParser(BaseParser): OptionGroup.level = 0 +def level_options(group, outputlevel): + return [option for option in group.option_list + if getattr(option, 'level', 0) <= outputlevel + and not option.help is SUPPRESS_HELP] + def format_option_help(self, formatter): result = [] - outputlevel = getattr(formatter, 'output_level', 0) - for option in self.option_list: - if getattr(option, 'level', 0) <= outputlevel and not option.help is SUPPRESS_HELP: - result.append(formatter.format_option(option)) + for option in level_options(self, getattr(formatter, 'output_level', 0)): + result.append(formatter.format_option(option)) return "".join(result) OptionContainer.format_option_help = format_option_help -OptionContainer.format_option_help = format_option_help + class ManHelpFormatter(HelpFormatter): """Format help using man pages ROFF format""" |