用于制作命令式用户界面的库。
项目描述
引出
用于编写控制台(面向命令)用户界面的库。它仅依赖于 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
查看哈希)
内置分布
elicit-1.7.2-py3-none-any.whl
(128.7 kB
视图哈希)