doot.workflow.structs.task_spec
Type Aliases
Functions
|
|
|
Convert toml provided raw data (str's, dicts) of specs into ActionSpec and RelationSpec object |
Builds, Expands, Sorts, and Validates action/relation groups, |
Classes
Utilities for artifact transformers |
|
The information needed to describe a generic task. |
Module Contents
- doot.workflow.structs.task_spec.SpecialType: TypeAlias = _SpecialType
- doot.workflow.structs.task_spec._action_group_sort_key( ) Any[source]
- Parameters:
val (doot.workflow._interface.ActionSpec_i | doot.workflow._interface.RelationSpec_i)
- Return type:
Any
- doot.workflow.structs.task_spec._raw_data_to_specs(
- deps: list[str | dict],
- *,
- relation: doot.workflow.structs.relation_spec.RelationMeta_e = DEFAULT_RELATION,
Convert toml provided raw data (str’s, dicts) of specs into ActionSpec and RelationSpec object
- Parameters:
- Return type:
list[doot.workflow.structs.action_spec.ActionSpec | doot.workflow.structs.relation_spec.RelationSpec]
- doot.workflow.structs.task_spec._prepare_action_group(
- group: jgdv.Maybe[list[str]],
- handler: pydantic.ValidatorFunctionWrapHandler,
- info: pydantic.ValidationInfo,
Builds, Expands, Sorts, and Validates action/relation groups, converting toml specified strings, list, and dicts to Artifacts (ie:files), Task Names, ActionSpecs
As a wrap handler, it has the context of what field is being processed, this allows it to set the correct RelationMeta_e type
# TODO handle callables?
- Parameters:
- Return type:
list[doot.workflow.structs.relation_spec.RelationSpec | doot.workflow.structs.action_spec.ActionSpec]
- class doot.workflow.structs.task_spec._TransformerUtils_m[source]
Utilities for artifact transformers
- instantiate_transformer(
- target: doot.workflow._interface.Artifact_i | tuple[doot.workflow._interface.Artifact_i, doot.workflow._interface.Artifact_i],
Create an instantiated transformer spec. ie : ?.txt -> spec -> ?.blah becomes: a.txt -> spec -> a.blah
can be given one artifact, which will be used for matching on pre and post, or a tuple, which specifies an exact transform
TODO: handle ?/?.txt, /?.txt, blah//?.txt, path/blah.?
- Parameters:
target (doot.workflow._interface.Artifact_i | tuple[doot.workflow._interface.Artifact_i, doot.workflow._interface.Artifact_i])
- Return type:
jgdv.Maybe[doot.workflow._interface.TaskSpec_i]
- transformer_of() jgdv.Maybe[tuple[doot.workflow._interface.RelationSpec_i, doot.workflow._interface.RelationSpec_i]][source]
If this spec can transform an artifact, return those relations.
Transformers have file relations of a single solo abstract artifact so: ‘file:>a/path/?.txt’ -> ‘file:>b/path/?.bib’ (other relations can exist as well, but to be a transformer there needs to be only 1 in, 1 out solo file relation
- Return type:
jgdv.Maybe[tuple[doot.workflow._interface.RelationSpec_i, doot.workflow._interface.RelationSpec_i]]
- class doot.workflow.structs.task_spec.TaskSpec(/, **data: Any)[source]
Bases:
pydantic.BaseModelThe information needed to describe a generic task. Optional things are shoved into ‘extra’, so things can use .on_fail on the chainguard
the cli parser can understand cli=[{}] specs actions : list[ [args] | {do=’’, args=[], **kwargs} ]
Notes
sources = [root, … grandparent, parent]. ‘None’ indicates halt on climbing source chain
- Parameters:
data (Any)
- name: doot.workflow._interface.TaskName_p = None
- sources: list[jgdv.Maybe[doot.workflow.structs.task_name.TaskName | pathlib.Path]] = None
- actions: ActionGroup = None
- required_for: ActionGroup = None
- depends_on: ActionGroup = None
- setup: ActionGroup = None
- cleanup: ActionGroup = None
- on_fail: ActionGroup = None
- ctor: jgdv.Maybe[jgdv.structs.strang.CodeReference] = None
- queue_behaviour: doot.workflow._interface.QueueMeta_e = None
- meta: set[doot.workflow._interface.TaskMeta_e] = None
- generated_names: set[doot.workflow.structs.task_name.TaskName] = None
- _transform: jgdv.Maybe[Literal[False] | tuple[doot.workflow.structs.relation_spec.RelationSpec, doot.workflow.structs.relation_spec.RelationSpec]] = None
- _validate_name( ) doot.workflow.structs.task_name.TaskName[source]
- Parameters:
- Return type:
- _validate_ctor(
- val: jgdv.Maybe[str | jgdv.structs.strang.CodeReference],
- Parameters:
val (jgdv.Maybe[str | jgdv.structs.strang.CodeReference])
- Return type:
jgdv.Maybe[jgdv.structs.strang.CodeReference]
- _validate_queue_behaviour( ) doot.workflow._interface.QueueMeta_e[source]
- Parameters:
- Return type:
- _validate_sources(
- val: list[jgdv.Maybe[str | doot.workflow.structs.task_name.TaskName]],
builds the soures list, converting strings to task names,
- Parameters:
val (list[jgdv.Maybe[str | doot.workflow.structs.task_name.TaskName]])
- Return type:
list[jgdv.Maybe[str | doot.workflow.structs.task_name.TaskName | pathlib.Path]]
- _validate_metadata() Self[source]
General object validator, mainly for metadata processing
- Return type:
Self
- property extra: jgdv.structs.chainguard.ChainGuard[source]
- Return type:
jgdv.structs.chainguard.ChainGuard
- action_group_elements() collections.abc.Iterable[doot.workflow.structs.action_spec.ActionSpec | doot.workflow.structs.relation_spec.RelationSpec][source]
Get the elements of: depends_on, setup, actions, and require_for. never cleanup, which generates its own task