跳转到主要内容

构建美丽外壳的框架

项目描述

python-nubia

Build Status Coverage PyPI version

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。交互模式看起来是这样的

Interactive Demo

非交互模式

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 (55.1 kB 查看哈希值)

上传时间 源代码

构建发行版

python_nubia-0.2b5-py3-none-any.whl (70.5 kB 查看哈希值)

上传时间: Python 3

由以下支持