通过argparse进行类级配置
arguable的Python项目详细描述
有争议的
“arguable”代表“argparse configurable”。此项目通过argparse和命令行接口启用类级配置。在
安装
pip install arguable
用法
从arguable.Arguable继承的类定义类级别 argparse.Namespaceobjectconfig,其中包含相关的 参数及其默认值。相应的参数解析器是 根据这些参数自动创建并存储为 config_parserclass属性。在
例如:
^{pr2}$创建类时,Example.config_parser属性保持不变 带有参数--example-language的参数解析器 type=str和default='en'。在
当类被实例化时,它会自动配置它的实例 通过指定一个实例级属性config,该属性将获取 提供命令行参数并隐藏类级别config默认值。在
因此,通过python example.py --example-language=de调用上述脚本将打印de,而忽略参数则使用默认的en。在
参数类型
其他支持的参数类型是序列(例如元组),它将 使用以下参数定义:
# `par` is the tuple parameter default.parser.add_argument(name,type=type(par[0]),nargs=len(par),default=par)
bool:
# `par` is the bool parameter default.parser.add_argument(name,action=f'store_{"false"ifparelse"true"}')
当然还有所有的数字类型。在
定制
默认情况下,小写的类名将用作 参数名称。这可以通过两个类变量进行配置:
- config_prefix–如果提供,则直接将其用作前缀。在
- config_removesuffix–如果没有提供config_prefix, 使用小写的类名,并用这个后缀减少 (如有提供)。在
这些变量也可以在类创建期间提供 config_前缀,例如:
classExampleA(Arguable,prefix='test'):config_prefix='text'# similarclassExampleB(Arguable,removesuffix='b'):config_removesuffix='b'# similar
显示完整的帮助文本
为了使应用程序知道所有注册参数, Arguable类有一个super_parser属性,它是一个 argparse.ArgumentParser的实例。每当一个类注册 新参数,不仅仅是类级解析器config_parser获取 更新了,但也更新了应用程序级别super_parser。这个解析器 可用于显示包含所有参数的帮助文本。在
这个包提供了一个helper解析器类arguable.ArgumentParser, 当--help 是请求的。在
此super_parser也可用于验证 所有给定参数。因为每个班级都只关心自己 参数,多余的参数将被忽略(使用parse_known_args)。 使用super_parserone可以验证提供的所有参数 应用程序支持:
fromarguableimportArguableif__name__=='__main__':# The following will report any excess arguments.Arguable.super_parser.parse_args()
- 项目
标签: