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 emptyConfig
if not given.core – An optional
ParseResult
holding parsed core program arguments. Defaults toNone
.
- __weakref__¶
list of weak references to the object
- 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 fromself.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 namedsetup
, executingbuild
will result in a dict with two keys, one forbuild
and one forsetup
.
在 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 版本加入.