argparse.py 文件源码

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

项目:teras 作者: chantera 项目源码 文件源码
def _init_parser(self, **kwargs):
        _def = self._def
        num_groups = len(_def.groups)
        if num_groups == 0:
            raise RuntimeError("At least one command should be defined.")

        formatter_class = argparse.HelpFormatter
        if 'formatter_class' in kwargs:
            formatter_class = kwargs['formatter_class']
        parser = ArgumentParser(**kwargs)

        for name, value in _def.common_cmd_args.items():
            parser.add_argument(*value.args, **value.kwargs)

        if num_groups == 1:
            """register arguments as common"""
            group = _def.groups[0]
            for name, value in _def.grouped_cmd_args[group].items():
                parser.add_argument(*value.args, **value.kwargs)
        else:
            """register arguments as groups"""
            subparsers = parser.add_subparsers(
                title='commands', help='available commands', dest='command')
            subparsers.required = True
            for group in _def.groups:
                subparser = subparsers.add_parser(
                    group, **_def.group_descriptions[group],
                    formatter_class=formatter_class)
                for name, value in _def.grouped_cmd_args[group].items():
                    subparser.add_argument(*value.args, **value.kwargs)

        return parser
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号