argparse的层次结构和高度复杂的变体。

hiargparse的Python项目详细描述


层次argparse

PyPIPyPI - Python VersionPyPI - License

hiargparse是argparse的一个层次结构和高度复杂的变体。

最小代码

fromhiargparseimportArgsProvider,Arg,ChildProvider,ArgumentParserchild=ArgsProvider(args=[Arg('baz',default=42)])root=ArgsProvider(args=[Arg('foo',default='bar')],child_providers=[ChildProvider(provider=child,name='child')])parser=ArgumentParser()parser.add_arguments_from_provider(root)print(parser.parse_args())

说明

hiargparse会自动生成命令行参数,这些参数包含树状模块结构中的所有类,代码最少。

假设您创建了一个大模块,并且您的层次结构深层类,比如foo.bar.baz.ham.spam.Egg,需要一些参数,比如heightswidthsFoo生成Bar的实例,Bar生成Baz,…,并且Spam生成具有这两个参数的Egg。 当您要传递命令行选项时,必须在FooBar、…、和Spam的构造函数中编写这两个选项heightswidths。 如果Egg被更新并需要一些新的参数,比如depthlength,该怎么办? hiargparse将参数直接传递给类,而不使用任何黑色魔法。

功能

使用此模块,您可以

  • 使用argparse
  • 每个参数都会被自动帮助发送文本并分组到argparse.ArgumentGroup
  • 获取比原始名称空间更有用的名称空间对象
  • 使用类似dict的键进行访问,获取子命名空间,转换到/从字典进行转换,等等
  • 使用已知格式在某些配置文件中写入/读取参数
  • 目前我们支持yamltoml

此外,此模块

  • 几乎与原始argparse兼容;您可以逐渐将其引入到大型项目中。
  • 在没有命令行参数的情况下工作;使用hiargparse分发模块时, 用户仍然可以选择是用命令行还是编程的方式向它提供参数。

本模块的灵感来自FacebookAIResearch/ELF中的rlpytorch.args_provider。

安装

pip install hiargparse

要求

  • python>;=3.6.0
  • 键入扩展(用于在Python3.6中键入扩展协议)>;=3.6.2.1
  • pyyaml>;=3.12(仅当使用yaml write/read时)
  • toml>;=0.9.4(仅当使用toml write/read时)

示例

  • 请参阅^{}以轻松开始。
  • 可以将hiargparse与原始argumentparser一起使用。见^{}
  • 如果要使用不带命令行参数的hiargparse,请参见^{}
  • ^{}描述如何使用配置文件写入和读取参数。
  • 可以使用hiargparse执行的许多操作都显示在^{}中。

贡献

  • 欢迎任何贡献!
  • 分叉回购,创建一个分支,添加令人敬畏的更改,并提出一个新的拉取请求。
  • 如果您发现一些错误,请在问题中报告。

作者

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

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型