program

class invoke.program.Program(version: str | None = None, namespace: Collection | None = None, name: str | None = None, binary: str | None = None, loader_class: Type[Loader] | None = None, executor_class: Type[Executor] | None = None, config_class: Type[Config] | None = None, binary_names: List[str] | None = None)

管理顶级CLI调用,通常通过 setup.py 入口点。

设计用于将调用任务集合作为独立程序分发,但也在内部用于实现 invoke 程序本身。

参见

将invoke的cli模块重用为不同的二进制文件 有关此功能的教程/演练。

在 1.0 版本加入.

__init__(version: str | None = None, namespace: Collection | None = None, name: str | None = None, binary: str | None = None, loader_class: Type[Loader] | None = None, executor_class: Type[Executor] | None = None, config_class: Type[Config] | None = None, binary_names: List[str] | None = None) None

创建一个新的、参数化的 Program 举个例子。

参数:
  • version (str) -- 程序的版本,例如 "0.1.0" 。默认为 "unknown"

  • namespace -- A Collection 用作此程序的子命令。如果 None (默认设置),则程序的行为将类似于 invoke ,查找附近的任务命名空间 Loader 并暴露诸如以下论点 --list--collection 用于检查或选择特定的命名空间。如果给了一个 Collection 对象,将使用它,就像它已被提交给 --collection 。还将更新解析器以移除对任务和与任务相关的选项的引用,并在 --help 输出。结果将是一个具有静态子命令集的程序。

  • name (str) -- 程序名称,如中所示 --version 输出。如果 None (默认),是中第一个单词的大写版本 argv 已移交给 run 。例如,当从安装为 foobar ,它将默认为 Foobar

  • binary (str) -- 帮助文本中使用的描述性小写二进制名称字符串。例如,Invoke自己的内部值为 inv[oke] ,表示它同时安装为 invinvoke 。由于这是纯粹用于帮助显示的文本,它可以是您希望的任何格式,尽管它应该与您输入的内容相匹配 setup.py %s console_scripts 进入。如果 None (默认),使用中的第一个单词 argv 逐字记录(与 name 以上,除非未大写)。

  • binary_names -- 用于完成脚本的二进制名称字符串的列表。此列表可确保由 --print-completion-script 指示Shell程序对此程序的所有已安装名称使用该补全。例如,Invoke的内部缺省值为 ["inv", "invoke"] 。如果 None (默认),中的第一个单词 argv (在援引 --print-completion-script )在单项列表中使用。

  • loader_class -- 这个 Loader 加载任务集合时使用的子类。默认为 FilesystemLoader

  • executor_class -- 这个 Executor 执行任务时使用的子类。默认为 Executor ;也可以在运行时由 configuration system 以及它的 tasks.executor_class 设置(任何时候该设置不是 None )。

  • config_class -- 这个 Config 用于基本配置对象的子类。默认为 Config

在 1.2 版本发生变更: 添加了 binary_names 争论。

__weakref__

对象的弱引用列表

property args: Lexicon

从获取核心程序参数 self.core 解析结果。

在 1.0 版本加入.

property binary: str

从init args&argv派生程序的面向帮助的二进制名(S)。

在 1.0 版本加入.

property binary_names: List[str]

从args&argv派生程序面向完成的二进制名(S)。

在 1.2 版本加入.

property called_as: str

返回我们实际被称为的程序名称。

具体地说,这是已解析的参数向量中第一个参数的基本名称(Pythonos模块的a概念)。

在 1.2 版本加入.

core_args() List[Argument]

返回默认核心 Argument 对象,作为一个列表。

在 1.0 版本加入.

create_config() None

实例化一个 Config (或子类,视情况而定),用于任务执行。

此配置完全可用,但缺少运行时派生的数据,如项目和运行时配置文件、CLI参数覆盖等。该数据稍后会添加到 update_config 。看见 Config 生命周期详细信息的文档字符串。

返回:

None ;套装 self.config 取而代之的是。

在 1.0 版本加入.

execute() None

将要执行的数据和任务规范传递给 Executor

备注

客户端代码只是想要一个不同的 Executor 子类可以只设置 executor_class 在……里面 __init__ ,或覆盖 tasks.executor_class 世界上的任何地方 config system (这可能会让您完全避免使用自定义程序)。

在 1.0 版本加入.

property initial_context: ParserContext

初始解析器上下文,也称为核心程序标志。

其中包含的特定参数会有所不同,具体取决于是否在 __init__

在 1.0 版本加入.

load_collection() None

根据解析的核心参数加载任务集合,否则将尝试失败。

在 1.0 版本加入.

property name: str

根据以下内容派生程序的人类可读名称 binary

在 1.0 版本加入.

normalize_argv(argv: List[str] | None) None

按摩 argv 转换为有用的字符串列表。

If None (默认设置),使用 sys.argv

If a non-string iterable ,用它来代替 sys.argv

If a string ,执行一项 str.split 然后使用结果执行。(这在很大程度上是为了方便;如果有疑问,可以使用列表。)

self.argv 为了结果。

在 1.0 版本加入.

parse_cleanup() None

解析后、执行前步骤,如--Help、--List等。

在 1.0 版本加入.

parse_collection() None

加载任务集合和项目级配置。

在 1.0 版本加入.

parse_core_args() None

过滤掉核心参数,将所有任务或它们的参数留到以后。

self.core 发送到 ParseResult 从这一步开始。

在 1.0 版本加入.

parse_tasks() None

解析剩余的参数,它们通常是任务&每个任务的参数。

self.parser 到所使用的解析器, self.tasks 添加到已解析的每个任务上下文,以及 self.core_via_tasks 到保存在任务上下文中可见的任何核心标志的上下文。

还修改了 self.core 若要包含来自 core_via_tasks (以便它正确地反映所提供的任何核心标志,无论它们出现在哪里)。

在 1.0 版本加入.

print_columns(tuples: Sequence[Tuple[str, str | None]]) None

打印选项卡列(名称、帮助) tuples

用于列出任务+文档字符串、标志+帮助字符串等。

在 1.0 版本加入.

print_task_help(name: str) None

打印特定任务的帮助,例如 inv --help <taskname>

在 1.0 版本加入.

run(argv: List[str] | None = None, exit: bool = True) None

根据以下条件执行主CLI逻辑 argv

参数:
  • argv -- 要执行操作所依据的参数。可能是 None 、字符串列表或字符串。看见 normalize_argv 了解更多细节。

  • exit (bool) -- 什么时候 False (默认: True ),将忽略 ParseErrorExitFailure 异常,否则会触发对 sys.exit 。。。注:这在很大程度上是对测试的让步。如果您要将此设置为 False 在生产环境中,您可能应该使用 Executor 而是直接交朋友!

在 1.0 版本加入.

task_args() List[Argument]

返回与任务相关的默认任务 Argument 对象,作为一个列表。

这些参数仅在“任务运行器”模式下添加到核心参数中(默认情况下 invoke 本身)-当构造函数被赋予非空的 namespace 参数(“捆绑命名空间”模式)。

在 1.0 版本加入.

update_config(merge: bool = True) None

更新先前实例化的 Config 使用解析的数据。

例如,这就是如何 --echo 能够覆盖的默认配置值 run.echo

参数:

merge (bool) -- 是在末尾合并,还是推迟。主要对子类有用。默认: True

在 1.0 版本加入.