一个用于简化和清理参数解析脚本的小实用程序。
simple-parsing的Python项目详细描述
简单、优雅、类型化的参数解析
simple-parsing
允许您将丑陋的argparse
脚本转换为结构优美、类型强大的小艺术品。
使用dataclasses,simple-parsing
可以更容易地共享和重用命令行参数-不再复制粘贴!
支持继承、nesting、轻松序列化为json/yaml、来自注释的自动帮助字符串等等!在
# examples/demo.pyfromdataclassesimportdataclassfromsimple_parsingimportArgumentParserparser=ArgumentParser()parser.add_argument("--foo",type=int,default=123,help="foo help")@dataclassclassOptions:""" Help string for this group of command-line arguments """log_dir:str# Help string for a required str argument learning_rate:float=1e-4# Help string for a float argumentparser.add_arguments(Options,dest="options")args=parser.parse_args()print("foo:",args.foo)print("options:",args.options)^{pr2}$
$ python examples/demo.py --help usage: demo.py [-h] [--foo int] --log_dir str [--learning_rate float]optional arguments: -h, --help show this help message and exit --foo int foo help (default: 123)Options ['options']: Help string for this group of command-line arguments --log_dir str Help string for a required str argument (default: None) --learning_rate float Help string for a float argument (default: 0.0001)
安装
pip install simple-parsing
Examples
API Documentation(在建)
特点
- 在
Automatic "--help" strings
作为开发人员,我们希望让进入我们项目的人更容易理解如何运行它们。然而,用户友好的
--help
消息通常很难编写和维护,特别是随着参数数量的增加。在使用
在simple-parsing
,参数及其说明在同一位置定义,使代码更易于阅读、编写和维护。在 - 在
模块化、可重用、干净分组的参数
(不再复制粘贴)
当您需要添加一组与现有参数类似的新命令行参数时,您可以重用参数类,并让
ArgumentParser
为参数添加相关前缀,而不是复制粘贴argparse
代码块并重命名变量:parser.add_arguments(Options,dest="train")parser.add_arguments(Options,dest="valid")args=parser.parse_args()train_options:Options=args.trainvalid_options:Options=args.validprint(train_options)print(valid_options)
$ python examples/demo.py \ --train.log_dir "training"\ --valid.log_dir "validation"Options(log_dir='training', learning_rate=0.0001)Options(log_dir='validation', learning_rate=0.0001)
这些前缀也可以显式设置,或者根本不使用。有关详细信息,请查看Prefixing Guide
在 - 在
Easy serialization:
轻松地将配置保存/加载到
在json
或yaml
!。在 - 在
Inheritance!
通过扩展现有参数类并添加自己的属性,可以轻松地自定义现有的参数类,这有助于促进代码重用accross项目。有关详细信息,请查看inheritance example
在 - 在
Nesting!:
Dataclasses可以嵌套在Dataclasses中,只要需要就可以了!在
在 - 在
Easier parsing of lists and tuples:
使用常规的
在argparse
有时很难做到这一点,但是simple-parsing
使用python的内置类型注释自动将值转换为适合您的类型,从而使它更容易实现。 作为一个附加特性,通过使用这些类型注释,simple-parsing
允许您解析嵌套列表或元组,如this example所示 - 在
Enums support
在 - 在
(还有更多!)在
在
示例:
上面提到的所有特性的附加示例可以在examples folder中找到
- 项目
标签: