建造漂亮贝壳的框架
python-nubia的Python项目详细描述
Python努比亚
nubia是用python构建命令行应用程序的轻量级框架。它最初是为“logdevice交互式shell(aka)设计的。ldshell
)“在Facebook上。从那时起,它就被认为是一个可重用的组件,而Facebook的几个内部项目现在都依赖它作为一种快速而简单的方式来获得一个直观的shell/cli应用程序,而不需要太多样板文件。
nubia构建在python-prompt-toolkit之上,这是构建交互式命令行应用程序的极好工具包。
免责声明:nubia是非ldshell用例的beta版。有些设计决策听起来可能很奇怪,但它们完全符合ldshell用例。我们不断地进行更改,使它在ldshell用例之外更加一致和通用。在发布完全稳定的版本之前,请自行承担风险。
有关如何帮助的信息,请参见CONTRIBUTING文件。
如果您对这个名字的起源感到好奇,请查看Nubia on Wikipedia及其独特而多彩的架构。
主要功能
- 提供鱼式自动完成的交互模式
- 从函数和类生成的cli模式。
- 通过外部实用程序“nubia complete”(实验性)完成可选bash/zsh
- 交互模式下可自定义的状态栏。
- 一个可选的基于ipython的交互式shell
- 带下划线的参数将自动连字符
- python3类型注释用于输入类型验证
交互模式
努比亚的互动模式是它的独特之处。用零开销为您的程序构建一个独特的shell是非常容易的。简单形式的交互式shell提供了命令、子命令、参数和值的自动完成。它还为开发人员控制自动完成提供了大量的控制,甚至对于不属于典型格式的命令也是如此。一个例子是ldshell中的“select”命令,它被表示为一个sql查询。我们预计nubia的大多数用例都不需要这样的控制,如果不进一步定制,autocommand就足够了。
如果在没有命令的情况下启动基于nubia的程序,它会自动启动一个交互式shell。交互模式如下:
非交互模式
cli模式的工作方式与任何传统的基于unix的命令行实用程序完全相同。
示例
它以这样的函数开头:
importsocketimporttypingfromtermcolorimportcprintfromnubiaimportargument,command,context@command@argument("hosts",description="Hostnames to resolve",aliases=["i"])@argument("bad_name",name="nice",description="testing")deflookup(hosts:typing.List[str],bad_name:int):""" This will lookup the hostnames and print the corresponding IP addresses """ctx=context.get_context()print(f"hosts: {hosts}")cprint(f"Verbose? {ctx.verbose}")forhostinhosts:cprint(f"{host} is {socket.gethostbyname(host)}")# optional, by default it's 0return0
要求
基于nubia的应用程序需要python 3.6+并与mac os x或linux一起工作。虽然理论上它应该在窗户上工作,但从未尝试过。
安装努比亚
如果您正在为下一个项目安装nubia,那么您应该能够轻松地使用pip来实现这一点:
pip3 install python-nubia
从源头建设努比亚
您可以使用setup.py来构建tarball,也可以使用pipenv来设置安装了所有依赖项的virtualenv。
在virtualenv中运行示例:
最好创建一个virtualenv来包含python nubia项目所需的依赖项。
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
如果要运行该示例,则需要将源树的根添加到pythonpath中。
virtualenv .venv source .venv/bin/activate exportPYTHONPATH="$(pwd)" python3 example/nubia_example.py
运行单元测试:
在virtualenv中,您可以使用鼻子测试:
nosetests
或者如果您不想创建virtualenv,只需使用:
python3 setup.py nosetests
开始
请参阅getting started指南,了解如何使用nubia构建简单的应用程序。
许可证
python nubia是bsd许可的,如许可文件中所示。