__init__.py 文件源码

python
阅读 39 收藏 0 点赞 0 评论 0

项目:pyetje 作者: rorlika 项目源码 文件源码
def create_parser(self, prog, parents=None):
        """
        Creates an ArgumentParser instance from options returned
        by get_options(), and a subparser for the given command.
        """
        prog = os.path.basename(prog)

        options_parser = argparse.ArgumentParser(add_help=False)
        for option in self.get_options():
            options_parser.add_argument(*option.args, **option.kwargs)

        # parser_parents = parents if parents else [option_parser]
        # parser_parents = [options_parser]

        parser = argparse.ArgumentParser(prog=prog, usage=self.usage,
                                         description=self.description,
                                         parents=[options_parser])

        subparsers = parser.add_subparsers()

        for name, command in self._commands.items():
            usage = getattr(command, 'usage', None)
            help = getattr(command, 'help', command.__doc__)
            description = getattr(command, 'description', command.__doc__)

            # Only pass `parents` argument for commands that support it
            try:
                command_parser = command.create_parser(name, parents=[options_parser])
            except TypeError:
                warnings.warn("create_parser for {0} command should accept a `parents` argument".format(name), DeprecationWarning)
                command_parser = command.create_parser(name)

            subparser = subparsers.add_parser(name, usage=usage, help=help,
                                              description=description,
                                              parents=[command_parser], add_help=False)


        ## enable autocomplete only for parent parser when argcomplete is
        ## imported and it is NOT disabled in constructor
        if parents is None and ARGCOMPLETE_IMPORTED \
                and not self.disable_argcomplete:
            argcomplete.autocomplete(parser, always_complete_options=True)

        return parser

    # def foo(self, app, *args, **kwargs):
    #     print(args)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号