一个用于简化和清理参数解析脚本的小实用程序。

simple-parsing的Python项目详细描述


Build StatusPyPI version

简单、优雅、类型化的参数解析

simple-parsing允许您将丑陋的argparse脚本转换为结构优美、类型强大的小艺术品。 使用dataclassessimple-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:

    轻松地将配置保存/加载到jsonyaml!。在

  • 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中找到

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java系统。出来打印导致延迟?   java如何使用dasein API连接Azure云(blob存储)   java如何将Jframe cardlayout中的“card”从属于card的Jpanel更改为另一个类?   java如何在单个消息框中显示循环的所有迭代?   java如何设置netbeans保存项目的操作?   java网站的某些选项在web视图中不起作用   java如何在安卓中打开从右到左的菜单滑动条   java更容易反转由静态方法(函数接口)内联创建的比较器?   映射Java HashMap。获取(键)和树形图。获取equals和compareTo方法的(键)用法   java Health endpoints只显示“status:up”,不显示敏感信息   java当我一直按back按钮登录时,字段显示以前插入的用户数据   JTable单元中的java图像显示   go Java vs.Golang for HOTP(rfc4226)   java使用函数链减少分支和清理代码,这有意义吗   java我应该为每个查询创建一个新的DB连接吗?   java推荐的函数调用方法(是否使用CompiledScript?)   java截断分区和地板分区有什么区别?   没有spring引导的java Profile特定属性文件?   异常如何在java中从控制台读取密码?