这是一个简化并清理参数解析脚本的实用工具。
项目描述
简单、优雅、类型化参数解析
simple-parsing
允许您将丑陋的 argparse
脚本转换为结构精美、类型安全的艺术品。这不是一个花哨、复杂的新的命令行工具,这只是在 plain-old argparse 中添加了新功能! 使用 dataclasses,simple-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.parse
或 simple_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!
-
简单序列化:
轻松将配置保存/加载到
json
或yaml
! -
继承!
您可以通过扩展它并添加自己的属性来轻松自定义现有的参数类,这有助于在不同项目中促进代码重用。有关更多信息,请参阅继承示例。
-
嵌套!:
数据类可以嵌套在数据类中,深至所需!
-
更易解析列表和元组 :
这有时使用常规
argparse
做起来很棘手,但simple-parsing
通过使用 Python 的内置类型注解来自动将值转换为正确的类型,使它变得容易得多。作为额外功能,通过使用这些类型注解,simple-parsing
允许您解析嵌套的列表或元组,如在此示例中看到的那样。 -
枚举支持
-
(即将推出!)
示例
上述所有功能的附加示例可以在示例文件夹中找到。
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
simple_parsing-0.1.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dad192e9633515a5627e343106636590a39a5ce85f6c47ced43507044ed98956 |
|
MD5 | 77d4092e931637d9e4c664522bb9846d |
|
BLAKE2b-256 | 418b7c7efbdc3eef7040b2d6219f966c68d3366f36947c93f8e12875a63bca00 |
simple_parsing-0.1.6-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2a6e74b061fb754cc441559e8dcea9d108286d9e0ffaa9cca4eea6bbe85372e1 |
|
MD5 | 1909775c9b39fc5176a3c2e68a06f8f1 |
|
BLAKE2b-256 | f8620194ea1d8245d76bfd2d5c6bebec7f824af00a6e03bec22697d12712fff0 |