一个令人惊叹的应用程序论证助手
aaargh的Python项目详细描述
aaargh:一个令人惊叹的应用程序参数助手。
aaargh是一个python模块,用于构建友好的命令行 应用程序非常简单。使用aaargh构建的应用程序提供一个 可执行,每个公开的python函数都有一个子命令。每个子命令 可能有自己的命令行参数。这与版本 控制系统使用一个入口点提供多个命令。(示例 包括bzr commit和git checkout)。
aaargh是根据电影monty python和 圣杯。首字母缩写aaargh代表an惊人的棒 application argument helper,但省略了几个字母,使其成为AAA。
aaargh与python 2.6+和python 3都兼容。
基本原理
python标准库包含optparse、getopt和argparse 模块,在野外您将发现许多可选的命令行 堆在上面的接口库,例如cliff,cement, opster,plac和许多其他。其中一些库将命令 从实际代码中设置应用程序的行接口 另一个解析api的参数,有些迫使您将代码隐藏在 不明显的框架结构,有些甚至添加了对其他 模块。
这让你尖叫aaargh。瞧,就在这里!
用法
aaargh将其几乎所有工作委托给argparse
模块,它将
处理参数和打印使用信息的出色工作。然而,
argparse
对于许多简单的应用程序来说有点冗长和繁琐,因此
aaargh允许应用程序作者通过包装最小化样板代码
一些非介入式装饰程序中常用的argparse
功能。aaargh
不隐藏argparse
api,因为装饰器的完全相同
api作为其对应的argparse
。这是一个深思熟虑的设计决定,
这就是使aaargh不同于它的许多替代品的原因。
aaargh.py
文件中的docstrings包含需要使用的所有信息
aaargh。有关指定的信息,请参阅argparse
文档
参数、提供默认值、添加帮助文本等。
示例
一个简单的命令行应用程序公开几个函数 这个:
#!/usr/bin/env python import aaargh app = aaargh.App(description="A simple greeting application.") # Application level arguments: app.arg('--name', help="Name of the person to greet", default="stranger") # Application level defaults: app.defaults(name="visitor") # overrides "stranger" @app.cmd def hello(name): # application level "name" argument is always passed print("Hello, world!") @app.cmd(name="hi", help="Say hi") # override subcommand name @app.cmd_arg('-r', '--repeat', type=int, default=1, help="How many times?") def say_hi(name, repeat): # both application and subcommand args for i in range(repeat): print("Hi, %s!" % name) @app.cmd @app.cmd_defaults(name="my friend") # overrides "visitor" for this command only def greetings(name): print("Greetings, %s." % name) @app.cmd(alias='bye') # Allow "bye" aswell as goodbye def goodbye(name): print("Goodbye, cruel world!") if __name__ == '__main__': app.run()
此应用程序的命令行界面的行为如下:
$ ./example.py hello Hello, world! $ ./example.py hi --repeat=3 Hi, visitor! Hi, visitor! Hi, visitor! $ ./example.py --help usage: example.py [-h] [--name NAME] {hello,hi,greetings} ... A simple greeting application. optional arguments: -h, --help show this help message and exit --name NAME Name of the person to greet Subcommands: {hello,hi,greetings} hello hi Say hi greetings $ ./example.py hi --help usage: example.py hi [-h] [-r REPEAT] optional arguments: -h, --help show this help message and exit -r REPEAT, --repeat REPEAT How many times?
安装
使用pip
安装很简单,特别是使用virtualenv
:
(yourenv) $ pip install aaargh
成功安装后,这应该可以工作:
(yourenv) $ python >>> import aaargh >>> help(aaargh)
历史记录
版本0.7.1(2014-03-13)
- 在源分发中包括许可文件(问题9,问题13)
版本0.7(2014-02-18)
- 添加对命令别名打包的基本支持(问题4,问题10)
版本0.6(2014-02-16)
- 不再使用
pbr
进行包装(第12期) - 添加适当的许可文件(问题9)
- 修复在python 3下调用不带子命令的程序时出现的错误消息
版本0.5(2013-09-23)
- 不再向子命令添加全局参数(问题3和5)
- 切换到
pbr
进行打包
版本0.4(2012-10-17)
- 修复在使用
pip install
时自动argparse
依赖项安装 Python2.6。
版本0.3(2012-06-10)
- 在子命令之后还接受全局参数李>
版本0.2(2012-05-17)
- 添加对Python3的支持