Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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