executor

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

An execution strategy for Task objects.

Subclasses may override various extension points to change, add or remove behavior.

在 1.0 版本加入.

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

Initialize executor with handles to necessary data structures.

参数:
  • collection – A Collection used to look up requested tasks (and their default config data, if any) by name during execution.

  • config – An optional Config holding configuration state. Defaults to an empty Config if not given.

  • core – An optional ParseResult holding parsed core program arguments. Defaults to None.

__weakref__

list of weak references to the object

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

Deduplicate a list of tasks.

参数:

calls – An iterable of Call objects representing tasks.

返回:

A list of Call objects.

在 1.0 版本加入.

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

Execute one or more tasks in sequence.

参数:

tasks

An all-purpose iterable of “tasks to execute”, each member of which may take one of the following forms:

A string naming a task from the Executor’s Collection. This name may contain dotted syntax appropriate for calling namespaced tasks, e.g. subcollection.taskname. Such tasks are executed without arguments.

A two-tuple whose first element is a task name string (as above) and whose second element is a dict suitable for use as **kwargs when calling the named task. E.g.:

[
    ('task1', {}),
    ('task2', {'arg1': 'val1'}),
    ...
]

is equivalent, roughly, to:

task1()
task2(arg1='val1')

A `.ParserContext` instance, whose .name attribute is used as the task name and whose .as_kwargs attribute is used as the task kwargs (again following the above specifications).

备注

When called without any arguments at all (i.e. when *tasks is empty), the default task from self.collection is used instead, if defined.

返回:

A dict mapping task objects to their return values.

This dict may include pre- and post-tasks if any were executed. For example, in a collection with a build task depending on another task named setup, executing build will result in a dict with two keys, one for build and one for setup.

在 1.0 版本加入.

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

Expand a list of Call objects into a near-final list of same.

The default implementation of this method simply adds a task’s pre/post-task list before/after the task itself, as necessary.

Subclasses may wish to do other things in addition (or instead of) the above, such as multiplying the calls by argument vectors or similar.

在 1.0 版本加入.

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

Transform arbitrary task list w/ various types, into Call objects.

See docstring for execute for details.

在 1.0 版本加入.