argparse包装器允许基于类的层次嵌套参数
paramparse的Python项目详细描述
python argparse包装器,允许基于类的层次嵌套参数适用于自动代码分析,特别是在Pycharm中。 它还提供了一个统一的参数规范协议,可用于通过文本文件和命令行提供参数值。
请参考一个大型多目标跟踪项目的包含参数框架,此包中包含的功能最初是为该项目开发的。 它提供了一个具有深度嵌套和共享模块的高度模块化项目的优秀示例。
例如,这是本例中模块嵌套的较深实例之一:
Params->Trainer->Target->Templates->Siamese->SiamFC->DesignParams
此配置的参数可以提供为:
trainer.target.templates.siamese.siamfc.design.exemplar_sz=150
为深度嵌套的模块指定多个参数可能会很快变得很麻烦,特别是在命令行中。 因此,该包提供了一种使用@标识符对同一模块中的参数进行分组的方法。 在example/cfg/params.cfg中提供了一个示例。 请注意,此文件中使用的缩进只是为了便于人工分析,不需要缩进,因为此分组系统也可以从命令行工作。 示例命令位于example/commands.md。
@标识符指定要添加到所有后续参数的前缀pf
,以便arg_name
被视为pf.arg_name
。
假设pf = name1.name2
,支持以下类型:
@name: pf = name
@: pf = <empty>
@@name: pf = name1.name2.name
@@@name: pf = name1.name
@@@: pf = name1
包的使用非常简单,涉及调用paramparse.process
,如example/main.py所示
它还提供了三个转换器函数{{8CD>}、^ {CD9>}和^ {CD10>},它们可以从现有参数中创建一个与此包兼容的参数类,该参数在^ {CD11>}和^ {Params.py
),要么复制到剪贴板(如果提供了to_clipboard=1
)(需要pyperclip)。
process
函数根据每个参数的默认值进行类型推断,但如果默认值为None,则还支持从restructuredText/pycharm类型docstring(由转换器函数生成)提取类型
Note:paramparse
使用保留参数cfg
指定包含参数值的文本文件的路径。
如果要转换为^ {CD16> }类的现有的AgPARSE或DICT对象已经具有用于其他目的的^ {< CD17> }字段,它将与解析器冲突,所以请在转换之前或之后重命名该字段,但在运行^ {< CD7> }之前。
转换器函数的用法在example/utils_demo.py
从example文件夹运行python3 main.py --h
,查看argparse生成的分层帮助文档。
除了层次嵌套和参数分组之外,paramparse
的一个重要实用程序是基于类的表示,它允许在pycharm之类的ide中进行自动化的代码分析、导航和重构,而使用vanillaargparse.ArgumentParser
或dict
是不可能的。