remove empty OD in help if option remove_empty_od set to True

This commit is contained in:
2019-07-26 15:17:36 +02:00
parent e14b997a54
commit 3d0ac1fb19
3 changed files with 53 additions and 1 deletions

View File

@ -17,7 +17,6 @@ from argparse import ArgumentParser, Namespace, SUPPRESS, _HelpAction, HelpForma
from copy import copy
from gettext import gettext as _
try:
from tiramisu import Config
from tiramisu.error import PropertiesOptionError, RequirementError
@ -115,6 +114,14 @@ class TiramisuHelpFormatter(HelpFormatter):
ret = ret.rsplit('.', 1)[1]
return ret
class _Section(HelpFormatter._Section):
def format_help(self):
# Remove empty OD
if self.formatter.remove_empty_od and \
len(self.items) == 1 and \
self.items[0][0].__name__ == '_format_text':
return ''
return super().format_help()
class _TiramisuHelpAction(_HelpAction):
needs = False
@ -187,11 +194,14 @@ class TiramisuCmdlineParser(ArgumentParser):
*args,
root: str=None,
fullpath: bool=True,
remove_empty_od: bool=False,
_forhelp: bool=False,
**kwargs):
self.fullpath = fullpath
self.config = config
self.root = root
self.remove_empty_od = remove_empty_od
TiramisuHelpFormatter.remove_empty_od = self.remove_empty_od
kwargs['formatter_class'] = TiramisuHelpFormatter
if self.root is None:
subconfig = self.config.option
@ -245,6 +255,7 @@ class TiramisuCmdlineParser(ArgumentParser):
new_parser = TiramisuCmdlineParser(self.config,
self.prog,
root=self.root,
remove_empty_od=self.remove_empty_od,
fullpath=self.fullpath)
namespace_, args_ = new_parser._parse_known_args(args_, namespace)
else:
@ -480,6 +491,7 @@ class TiramisuCmdlineParser(ArgumentParser):
self.prog,
root=self.root,
fullpath=self.fullpath,
remove_empty_od=self.remove_empty_od,
_forhelp=True)
return super(TiramisuCmdlineParser, help_formatter).format_usage(*args, **kwargs)
@ -488,6 +500,7 @@ class TiramisuCmdlineParser(ArgumentParser):
self.prog,
root=self.root,
fullpath=self.fullpath,
remove_empty_od=self.remove_empty_od,
_forhelp=True)
return super(TiramisuCmdlineParser, help_formatter).format_help()