跳转到主要内容

一个令人惊叹的出色应用程序参数助手

项目描述

哎呀呀:一个令人惊叹的出色应用程序参数助手。

哎呀呀是一个Python模块,它使构建友好的命令行应用程序变得非常容易。使用哎呀呀构建的应用程序提供了一个具有每个公开Python函数子命令的单个可执行文件。每个子命令可能都有自己的命令行参数。这与版本控制系统使用单个入口点提供多个命令的方式类似。(例如,包括bzr commitgit checkout)。

哎呀呀以电影《蒙提·派森与圣杯》中的一座城堡命名。缩写哎呀呀代表一个令人惊叹的出色应用程序参数助手,但省略了一些字母以使其成为三个A。

哎呀呀与Python 2.6+和Python 3都兼容。

理由

Python标准库包含optparsegetoptargparse模块,在野外,你将找到许多基于这些模块的替代命令行界面库,如cliffcementopsterplac以及许多其他库。其中一些库将应用程序的命令行界面设置与实际代码分开,一些强制使用另一个参数解析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)

  • 首次发布

Bitdeli badge

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分发

aaargh-0.7.1.tar.gz (7.0 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面