一个令人惊叹的出色应用程序参数助手
项目描述
哎呀呀:一个令人惊叹的出色应用程序参数助手。
哎呀呀是一个Python模块,它使构建友好的命令行应用程序变得非常容易。使用哎呀呀构建的应用程序提供了一个具有每个公开Python函数子命令的单个可执行文件。每个子命令可能都有自己的命令行参数。这与版本控制系统使用单个入口点提供多个命令的方式类似。(例如,包括bzr commit和git checkout)。
哎呀呀以电影《蒙提·派森与圣杯》中的一座城堡命名。缩写哎呀呀代表一个令人惊叹的出色应用程序参数助手,但省略了一些字母以使其成为三个A。
哎呀呀与Python 2.6+和Python 3都兼容。
理由
Python标准库包含optparse、getopt和argparse模块,在野外,你将找到许多基于这些模块的替代命令行界面库,如cliff、cement、opster、plac以及许多其他库。其中一些库将应用程序的命令行界面设置与实际代码分开,一些强制使用另一个参数解析API,一些强制你将代码隐藏在非直观的框架结构中,还有一些甚至添加了对其他模块的依赖。
这使得你尖叫“哎呀呀”。哇,它就在这里!
用法
哎呀呀将几乎所有工作委托给argparse模块,该模块在处理参数和打印使用信息方面做得很好。然而,对于许多简单应用程序而言,argparse有点冗长且繁琐,因此哎呀呀允许应用程序作者通过将常用的argparse功能包装在几个非侵入性装饰器中,最小化样板代码。哎呀呀没有隐藏argparse API,因为装饰器具有与它们的argparse对应物完全相同的API。这是一个故意的决策,这也是哎呀呀与其众多替代品不同的地方。
《aaargh.py》文件中的文档字符串包含您使用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)
修复使用Python 2.6和pip install进行自动< cite>argparse依赖项安装时的问题。
版本 0.3 (2012-06-10)
子命令之后也接受全局参数
版本 0.2 (2012-05-17)
添加对Python 3的支持
版本 0.1 (2012-05-17)
首次发布
项目详情
aaargh-0.7.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b3048896616553a6c6a24fd403eb10ce07d0af283b507872fefa53aefeea1d98 |
|
MD5 | b9c3b0d47c78c05e72767784fd54f3b9 |
|
BLAKE2b-256 | 9684357793da71eba670c850e572d772ea8c8b889247377fb24238bc1f95edf8 |