def split_subparser_argument(parent, original, name, condition): new_sub_parser = argparse._SubParsersAction(original.option_strings, original._prog_prefix, original._parser_class, metavar=original.metavar) new_sub_parser._name_parser_map = original._name_parser_map new_sub_parser._choices_actions = [ a for a in original._choices_actions if condition(original._name_parser_map[a.dest]) ] group = argparse._ArgumentGroup(parent, name) group._group_actions = [new_sub_parser] return group
def add_subparsers(parser, **kwargs): if isinstance(parser, argparse._MutuallyExclusiveGroup): container = parser._container if kwargs.get('prog') is None: formatter = container._get_formatter() formatter.add_usage(container.usage, [], [], '') kwargs['prog'] = formatter.format_help().strip() parsers_class = parser._pop_action_class(kwargs, 'parsers') subparsers = argparse._SubParsersAction( option_strings=[], parser_class=type(container), **kwargs) parser._add_action(subparsers) else: subparsers = parser.add_subparsers(dest="applet", metavar="APPLET") return subparsers