建造漂亮贝壳的框架

python-nubia的Python项目详细描述


Python努比亚

Build StatusCoverage

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。交互模式如下:

Interactive Demo

非交互模式

cli模式的工作方式与任何传统的基于unix的命令行实用程序完全相同。 Non-interactive Demo

示例

它以这样的函数开头:

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许可的,如许可文件中所示。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将HashMap<String,Object>从一个活动传递到另一个活动   java如何手动加密socket连接的流量?   java正则表达式生成一个不正确的结果   Java方法引用具有泛型参数的方法   java app setBackground()错误:不兼容的类型:int无法转换为Drawable   java是启动Spring引导而不是SpringApplication的其他方法。跑   无法打开java类路径资源[org/quartz/impl/jdbcjobstore/tables_h2.sql],因为它不存在   spring使用Java,如何确定来自tomcat Web服务器的出站服务调用?   java获取多个同名的XML元素JAXB   java使用Ant从同一代码库构建Swing和Android应用程序   JComponent的java重绘方法不起作用   java目标不可访问,标识符“beanName”解析为null   smtp是否有支持esmtp管道的java api?   java如何在Spring中自动连接业务对象   java在Hibernate中没有其他保存实体的方法吗?   针对两个客户机的SpringJavaWeb应用程序项目开发   使用split的java标记化输入