直接使用Python函数作为命令行命令,无需繁琐的模板
项目描述
Argparse的力量,通过纯Python函数实现!
正在构建命令行界面?在使用Python的argparse API(argparse)时遇到了“argh!”?不喜欢复杂性但需要强大的功能?
Argh建立在Python中argparse(自带Python)的力量之上,使其非常易于使用。它消除了复杂的API,并允许您将普通Python函数“调度”为CLI命令。
安装
$ pip install argh
示例
import argh
def verify_paths(paths: list[str], *, verbose: bool = False):
"""
Verify that all given paths exist.
"""
for path in paths:
if verbose:
print(f"Checking {path}...")
assert os.path.exists(path)
argh.dispatch_command(verify_paths)
现在您可以像这样运行脚本
$ python app.py foo.txt bar/quux.txt
$ python app.py foo.txt bar/quux.txt --verbose
Checking foo.txt...
Checking bar/quux.txt...
$ python app.py -h
usage: app.py [-h] [-v] [paths ...]
Verify that all given paths exist.
positional arguments:
paths -
options:
-h, --help show this help message and exit
-v, --verbose False
请查看文档以获取多个命令、模块化、帮助生成、高级类型注解检查、装饰器等示例
为什么选择 Argh?
Argh 驱动的应用程序简单但灵活
- 遵循 Python 之道,KISS:
命令是普通的 Python 函数。几乎不需要学习任何 CLI 特定的 API。
- 可重用:
端点函数可以直接在 CLI 上下文之外使用。
- 静态类型友好:
包括端点函数在内的 100% 代码都可以进行类型检查。Argh 主要通过类型注解驱动。
- DRY:
不要重复自己。样板代码量最小。例如,Argh 将
从函数名称推断命令名称;
从函数签名推断参数;
从注解中推断参数类型、操作等。
- 模块化:
命令的声明可以与组装和调度解耦。
- 分层:
代码的复杂性随着需求而增加。
- 透明:
如果需要,可以直接访问 argparse.ArgumentParser。
- 子命令:
易于嵌套命令。Argh 将子解析器的复杂性隔离。
- 避免 NIH:
Argh 通过对优秀的第三方库友好支持 完成、进度条 等一切。无需重新发明轮子。
- 紧凑:
除了 Python 的标准库之外,没有其他依赖。
链接
请参阅 GitHub 上的项目页面[Argh 项目页面]、文档和PyPI 页面。
贡献
提交经过测试和文档化的补丁或详细的错误报告是改进此项目的最快方式。
捐赠
您可以通过 Liberapay 进行捐赠。这可能会加快开发速度,或者只是让原作者感到高兴 :)
许可
Argh 是免费软件:您可以在自由软件基金会的 GNU 较小通用公共许可证(第 3 版或您选择的任何后续版本)条款下重新分配和/或修改它。
Argh 是希望它将是有用的,但没有任何保证;甚至没有关于适销性或适用于特定目的的隐含保证。有关更多信息,请参阅 GNU 较小通用公共许可证。
您应该已经收到了一份 GNU 较小通用公共许可证的副本。如果没有,请参阅 <http://gnu.org/licenses/>。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。