跳转到主要内容

这是一个简化并清理参数解析脚本的实用工具。

项目描述

Build Status PyPI version

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

simple-parsing 允许您将丑陋的 argparse 脚本转换为结构精美、类型安全的艺术品。这不是一个花哨、复杂的新的命令行工具,这只是在 plain-old argparse 中添加了新功能! 使用 dataclassessimple-parsing 使共享和重用命令行参数变得更加容易 - 不再需要复制粘贴!

支持继承、嵌套、轻松序列化为 json/yaml、自动从注释生成帮助字符串等功能!

# examples/demo.py
from dataclasses import dataclass
from simple_parsing import ArgumentParser

parser = ArgumentParser()
parser.add_argument("--foo", type=int, default=123, help="foo help")

@dataclass
class Options:
    """ 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 argument

parser.add_arguments(Options, dest="options")

args = parser.parse_args()
print("foo:", args.foo)
print("options:", args.options)
$ python examples/demo.py --log_dir logs --foo 123
foo: 123
options: Options(log_dir='logs', learning_rate=0.0001)
$ 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)

() 简化API

对于只需要解析单个数据类的简单用例,您可以使用 simple_parsing.parsesimple_parsing.parse_known_args 函数

options: Options = simple_parsing.parse(Options)
# or:
options, leftover_args = simple_parsing.parse_known_args(Options)

安装

pip install simple-parsing

示例

API文档 (建设中)

特性

  • 自动"--help"字符串

    作为开发者,我们希望让人们更容易理解如何运行我们的项目。然而,一个用户友好的 --help 信息往往很难编写和维护,尤其是在参数数量增加时。

    使用 simple-parsing,您的参数及其描述定义在同一个地方,使您的代码更容易阅读、编写和维护。

  • 模块化、可重用、清晰分组参数

    (不再需要复制粘贴)

    当您需要添加一个与现有命令行参数类似的新参数组时,无需复制粘贴一大段 argparse 代码并重命名变量,您可以重用您的参数类,让 ArgumentParser 自动为参数添加相关前缀。

    parser.add_arguments(Options, dest="train")
    parser.add_arguments(Options, dest="valid")
    args = parser.parse_args()
    train_options: Options = args.train
    valid_options: Options = args.valid
    print(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)
    

    这些前缀也可以明确设置,或者根本不使用。有关更多信息,请参阅前缀指南

  • 参数子组

    使用 subgroups 函数很容易在不同的参数组之间进行选择!

  • 从配置文件设置默认值

    命令行参数的默认值可以轻松地从多种格式读取,包括 json/yaml!

  • 简单序列化:

    轻松将配置保存/加载到 jsonyaml

  • 继承!

    您可以通过扩展它并添加自己的属性来轻松自定义现有的参数类,这有助于在不同项目中促进代码重用。有关更多信息,请参阅继承示例

  • 嵌套!:

    数据类可以嵌套在数据类中,深至所需!

  • 更易解析列表和元组 :

    这有时使用常规 argparse 做起来很棘手,但 simple-parsing 通过使用 Python 的内置类型注解来自动将值转换为正确的类型,使它变得容易得多。作为额外功能,通过使用这些类型注解,simple-parsing 允许您解析嵌套的列表或元组,如在此示例中看到的那样。

  • 枚举支持

  • (即将推出!)

示例

上述所有功能的附加示例可以在示例文件夹中找到。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

simple_parsing-0.1.6.tar.gz (97.7 kB 查看哈希值)

上传时间

构建分布

simple_parsing-0.1.6-py3-none-any.whl (112.6 kB 查看哈希值)

上传时间 Python 3

支持者