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是否可以创建一个正则表达式来查找与模式不匹配的字符串?   使用“debugUnreturnedConnectionStackTraces”进行java调试连接丢失   java如何在openLDAP中禁用/启用用户帐户?   java无法从jsoup api获取某些类   java无法从APK提取XML文件   如何在linux命令行中替换多个文件中的字符串   java学生班。如何根据单位输入打印成绩?   java有没有办法将Struts配置为绑定null而不是空字符串?   python使用OpenCV[Java]检测简单几何形状   java文件。isFile()和文件。isDirectory()返回false   java Fetch有条件地加入hibernate,还是将实体设计更改为子实体上的条件Fetch?   java lombok@Data generated setter是否对成员对象(如映射)执行深度复制?   java如何使JLabel从下一行开始   java Gradle依赖解决了配置文件的问题