Skip to main content

用于制作命令式用户界面的库。

项目描述

引出

用于编写控制台(面向命令)用户界面的库。它仅依赖于 Python 标准库。

该软件包使创建交互式命令导向工具变得容易和快速。这种风格类似于嵌入式系统,例如路由器和 POSIX shell。这不是替代 Python REPL,例如 IPython 或 bpython。您可以使用它为您的应用程序实现一个自定义命令接口,该接口获得可自定义的命令解析、自定义提示、帮助系统和输出分页。

docopt模块是内置的,因此不需要安装额外的包

一些显着的特点:

  • 命令被定义为类方法。
  • 命令类对命令进行分组,并且可以嵌套,提供上下文相关的命令。
  • 隐式分页输出(如more)。
  • 命令完成。
  • 简洁的提示字符串规范,类似于 shell(百分比 [%] 扩展)。
  • 彩色输出格式和输入提示。
  • 内置选项解析。
  • 内置帮助,使用命令方法文档字符串。
  • 包装任何对象以与之交互。
  • 模块化设计。任何组件都可以被子类化和增强。

还包括一些奖励模块:

  • 演示文稿 - 用于在交互式演示文稿中使用 Python 的辅助模块。
  • 调试器 - 使用用户界面框架的增强调试器。

命令行

只需覆盖elicit.ui.BaseCommands类。使用文档字符串定义的任何方法都成为可以调用的命令。该命令获取一个arguments 参数,该参数是一个 docopt 样式的预解析参数字典,该字典根据文档字符串中的Usage:行进行解析。

这是一个工作示例:

from elicit import commands
from elicit import console
from elicit import controller
from elicit import env
from elicit import parser
from elicit import themes
from elicit import ui


class BasicCommands(commands.BaseCommands):

    def mycommand(self, arguments):
        """Perform some function.

        Usage:
            mycommand [-o]
        """
        self._ui.print("got arguments:", arguments)

    def nestedusage(self, arguments):
        """Check nested optional usage.

        Usage:
            nestedusage [<one> [<two>]]
        """
        self._ui.print("got arguments:", arguments)

    # Add as many more commands as you need.


def basic_cli():
    # Create The IO module.
    uio = console.ConsoleIO()

    environment = env.Environ.from_system()
    theme = themes.DefaultTheme()  # The built-in colored theme.

    # Assemble the IO in user interface.
    theui = ui.UserInterface(uio, environment, theme)

    # Create the top-level command set, with the user interface.
    cmd = BasicCommands(theui)

    # Add it to a controller, and command parser.
    ctl = controller.CommandController(cmd)
    p = parser.CommandParser(ctl)

    # Run the CLI using the parser.
    p.interact()

这定义了一个新命令mycommand,带有一个 singo 选项-o

演示文稿

elicit.present子包具有一些对使用 Python REPL 进行交互式演示有用的功能。在 MacOS 上公开一些 iTerm 功能。

感谢大卫比兹利的灵感。

要以交互方式调用,进行测试,请使用:

python3 -iq -m elicit.present.presentation

调试器

还提供了使用此 CLI 工具包的增强调试器。还提供了一个工具 eldb,您可以使用它代替python3来运行脚本或模块,如果发生未捕获的异常,它将进入调试器。

eldb path/to/script.py

或者,如果你有一个带有if ... __main__:部分的包:

eldb mypackage.mymodule

您还可以elicit.debugger在代码中导入模块并调用 post_mortem函数,就像pdb一样。

一些显着的特点:

  • 彩色 UI - 堆栈跟踪、提示等。
  • 更多信息报告,提示显示堆栈中的当前位置。
  • 在当前点调用您的编辑器。
  • 类似 REPL 的评估器
  • 如果需要,输入 sub-REPL。
  • 显示操作码。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

elicit-1.7.2.tar.gz (55.5 kB 查看哈希

已上传 source

内置分布

elicit-1.7.2-py3-none-any.whl (128.7 kB 图哈希)

已上传 py3