用于miniconfig的argparser工厂
miniconfig-argparse的Python项目详细描述
使用miniconfig进行argparse设置
代码
fromminiconfig_argparseimportget_configuratorconfig=get_configurator()config.include("yourmodule")config.include("yourmodule.extra")args=config.make_args()# using args
在模块中,使用如下配置。
defincludeme(config):parser=config.parserparser.add_argument('-v','--verbose',action='count',default=0,help="(default option: increment logging level(default is WARNING))")parser.add_argument('-q','--quiet',action='count',default=0,help="(default option: decrement logging level(default is WARNING))")defsetup_closure(args):logging_level=logging.WARN+10*args.quiet-10*args.verboselogging.basicConfig(level=logging_level)returnargsparser.add_callback(setup_closure)
默认指令
- 生成语法分析器
- 替换语法分析器
- 调用函数作为命令
make_parser(fn)+call_function_as_command
使用make_parser()和call_function_as_command()组合有时很有用。
- 生成解析器(fn)–从函数定义创建解析器。
- call_function_as_command–使用解析的参数对象调用函数。
如下图所示。
defgreeting(message,is_surprised=False,name="foo"):""" greeting message :param message: message of greeting :param is_surprised: surprised or not (default=False) :param name: name of actor """suffix="!"ifis_surprisedelse""print("{name}: {message}{suffix}".format(name=name,message=message,suffix=suffix))defincludeme(config):parser=config.make_parser(greeting)config.replace_parser(parser)if__name__=="__main__":fromminiconfig_argparseimportget_configuratorconfig=get_configurator()config.include(includeme)args=config.make_args()config.call_function_as_command(greeting,args)