建造漂亮贝壳的框架

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为什么只为字符数组重载println方法,而不为字符串、整数等其他数组重载?   java将快速线程返回到池中,而不是等待慢速线程   创建jar文件时java SwingWorker不工作   java如何将依赖注入RabbitListener   java如何在gradle任务中通过scp复制目录?   java在MySql数据库中创建表时,遇到NullPointerException   java HTTP Status 500 Servlet执行引发异常   在JAVA中对arraylist使用继承时出错   java PowerMockito未完成存根异常   如果没有错误/警告增加到某个极限,java是否停止在eclipse中构建项目或使用maven?   java Robolectric如何测试DateFormat。getBestDateTimePattern()   google云平台GCP数据存储Java API,构建一个空值实体   VerifyListener和FocusListener之间的java冲突   安卓是否可以在Java中的另一个方法内部强制调用一个方法?   JavaWindows7、JDK1.8、SpringBoot应用程序JAR在方法安全性方面占用了大量时间。getProviders()返回   Bean提供程序的java错误消息   java Slick动画每帧必须有一个持续时间   java无法在Trie中设置isLeaf标志   java为什么JVM不能创建包含main方法的类的对象,以便从该类访问main方法,如果它具有该类的名称?   java Apache Camel+CXF端点身份验证