构建美丽外壳的框架
项目描述
python-nubia
Nubia是一个用于用Python构建命令行应用程序的轻量级框架。它最初是为Facebook的“logdevice交互式shell(即ldshell
)”设计的。从那时起,它被提取出来作为一个可重用的组件,现在几个内部Facebook项目都依赖于它作为一个快速、简单的方式来实现直观的shell/cli应用程序,而不需要太多的样板代码。
Nubia构建在python-prompt-toolkit之上,这是一个用于构建交互式命令行应用程序的出色工具包。
免责声明:Nubia对于非ldshell用例是测试版的。一些设计决策可能听起来很奇怪,但它们非常适合ldshell用例。我们正在不断对其进行更改,使其在ldshell用例之外更加一致和通用。在发布完全稳定的版本之前,请自行承担使用风险。
有关如何帮助的更多信息,请参阅CONTRIBUTING文件。
如果您对名称的起源感到好奇,请查看维基百科上的努比亚,它拥有独特且色彩缤纷的建筑。
主要功能
- 提供鱼风格自动完成的交互模式
- 从您的函数和类生成的CLI模式。
- 通过外部工具‘nubia-complete’(实验性)提供可选的bash/zsh自动补全
- 交互模式下的可自定义状态栏。
- 可选的基于IPython的交互式shell
- 带有下划线的参数将自动转换为连字符形式
- 使用Python3类型注解进行输入类型验证
交互模式
Nubia的交互模式使其与众不同。它非常容易为您的程序构建一个零开销的独特shell。其简单形式的交互式shell提供了命令、子命令、参数和值的自动补全。它还为开发人员提供了大量控制,以控制自动补全,甚至对于不符合典型格式的命令。例如,ldshell中的“select”命令,它以SQL查询的形式表达。我们预计Nubia的大部分用例都不需要这样的控制,并且AutoCommand足以满足需求,无需进一步自定义。
如果您没有命令地启动基于Nubia的程序,它将自动启动交互式shell。交互模式看起来是这样的
非交互模式
CLI模式与任何传统的基于Unix的命令行实用程序完全一样。
让您的装饰函数 @command
返回一个 int
,并将该值作为您的非交互式CLI的Unix返回代码发送。
示例
它从一个像这样的函数开始
import socket
import typing
from termcolor import cprint
from nubia import argument, command, context
@command
@argument("hosts", description="Hostnames to resolve", aliases=["i"])
@argument("bad_name", name="nice", description="testing")
def lookup(hosts: typing.List[str], bad_name: int) -> int:
"""
This will lookup the hostnames and print the corresponding IP addresses
"""
ctx = context.get_context()
if not hosts:
cprint("No hosts supplied via --hosts")
return 1
print(f"hosts: {hosts}")
cprint(f"Verbose? {ctx.verbose}")
for host in hosts:
cprint(f"{host} is {socket.gethostbyname(host)}")
return 0
要求
Nubia应用程序需要Python 3.6+,并在Mac OS X或Linux上运行。虽然从理论上讲它应该在Windows上运行,但从未尝试过。
安装Nubia
如果您正在为下一个项目安装nubia,您应该能够轻松地使用pip来完成此操作
pip3 install python-nubia
从源代码构建Nubia
您可以使用setup.py构建一个tarball,或者使用pipenv设置一个包含所有依赖项的虚拟环境。
在虚拟环境中运行示例
通常最好创建一个虚拟环境,以包含python-nubia项目所需的依赖项。
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
如果您想运行示例,那么您需要将源代码树的根目录添加到您的PYTHONPATH中。
virtualenv .venv
source .venv/bin/activate
export PYTHONPATH="$(pwd)"
python3 example/nubia_example.py
运行单元测试
在虚拟环境中,您可以使用nosetests
nosetests
或者如果您不想创建虚拟环境,只需使用
python3 setup.py nosetests
入门
请参阅入门指南,了解如何使用Nubia构建简单的应用程序。
许可证
python-nubia采用BSD许可,如LICENSE文件所示。
项目详细信息
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源代码发行版
构建发行版
python-nubia-0.2b5.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 051931c7a67bbfef9e30ba5b08fa96b35d699621ac0c0030e069caa2475456bd |
|
MD5 | 323fc57aed5bf70459605c6a5f91c226 |
|
BLAKE2b-256 | cb8e721408e0a94b29c1577e7e7644bcaf64e5471774e85ada9ce2df521f42b8 |
python_nubia-0.2b5-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2cc39c82e1bb76127689e4bc71c52e3d533a48c84e3c745a4c01891ba0aa650a |
|
MD5 | c19de67c779d62e4d2f0e4814fb27581 |
|
BLAKE2b-256 | 5c5c623a46538d5471603cdba9edacef53dff43c9bb42928a5a88ab9f1bc57a1 |