executor

class invoke.executor.Executor(collection: Collection, config: Config | None = None, core: ParseResult | None = None)

任务对象的执行策略。

子类可以重写各种扩展点来更改、添加或删除行为。

在 1.0 版本加入.

__init__(collection: Collection, config: Config | None = None, core: ParseResult | None = None) None

使用必要数据结构的句柄初始化Executor。

参数:
  • collection -- A Collection 用于在执行期间按名称查找请求的任务(及其默认配置数据,如果有)。

  • config -- 可选的 Config 保持配置状态。缺省值为空 Config 如果不给的话。

  • core -- 可选的 ParseResult 保存已解析的核心程序参数。默认为 None

__weakref__

对象的弱引用列表

dedupe(calls: List[Call]) List[Call]

对以下列表执行重复数据消除 tasks

参数:

calls -- 一个可迭代的 Call 表示任务的对象。

返回:

一份名单 Call 物体。

在 1.0 版本加入.

execute(*tasks: str | Tuple[str, Dict[str, Any]] | ParserContext) Dict[Task, Result]

执行一个或多个 tasks 按顺序。

参数:

tasks -- “要执行的任务”的通用迭代,其每个成员可以采用以下形式之一: A string 从执行器的命名任务 Collection 。此名称可以包含适用于调用命名空间任务的点分语法,例如 subcollection.taskname 。这样的任务在没有参数的情况下执行。 A two-tuple 其第一个元素是任务名称字符串(如上所述),第二个元素是适合用作 **kwargs 在调用命名任务时。例如:: [ ('task1', {}), ('task2', {'arg1': 'val1'}), ... ] 大致等同于::task1()task2(arg1=‘val1’) A `.ParserContext` 实例,其 .name 属性用作任务名称,并且其 .as_kwargs 属性被用作任务kwargs(同样遵循上面的规范)。。。注意::在完全不带任何参数的情况下调用时(即 *tasks 为空),默认任务来自 self.collection 如果已定义,则改用。

返回:

将任务对象映射到其返回值的DICT。如果执行了任何任务,则此判决可能包括前任务和后任务。例如,在具有 build 任务依赖于另一个名为 setup ,执行 build 将产生一个带有两个键的Dict,一个用于 build 一次是为了 setup

在 1.0 版本加入.

expand_calls(calls: List[Call]) List[Call]

展开以下列表: Call 对象添加到接近最终的相同列表中。

此方法的默认实现只是根据需要在任务本身之前/之后添加任务的前/后任务列表。

除了(或代替)上述操作之外,子类可能希望执行其他操作,例如将 calls 通过自变量向量或类似的。

在 1.0 版本加入.

normalize(tasks: Tuple[str | Tuple[str, Dict[str, Any]] | ParserContext, ...]) List[Call]

将任意类型的任务列表转换为 Call 物体。

请参阅文档字符串以了解 execute 了解更多细节。

在 1.0 版本加入.