doot.control.tracker.registry

Type Aliases

Abstract

Classes

_Registration_m

_Instantiation_m

_Verification_m

TrackRegistry

Stores and manipulates specs, tasks, and artifacts

Module Contents

doot.control.tracker.registry.Abstract: TypeAlias = T
class doot.control.tracker.registry._Registration_m(*, tracker: WorkflowTracker_p)[source]

Bases: doot.control.tracker._interface.Registry_d

Parameters:

tracker (WorkflowTracker_p)

register_spec(
spec: doot.workflow._interface.TaskSpec_i,
) None[source]

Register task specs, abstract or concrete

Does not handle any taskspec generation logic

Parameters:

spec (doot.workflow._interface.TaskSpec_i)

Return type:

None

_register_artifact(
art: doot.workflow._interface.Artifact_i,
*tasks: doot.workflow._interface.TaskName_p,
relation: jgdv.Maybe[doot.workflow._interface.RelationMeta_e] = None,
) None[source]
Parameters:
Return type:

None

_register_spec_artifacts(
spec: doot.workflow._interface.TaskSpec_i,
) None[source]

Register the artifacts a spec produces

Parameters:

spec (doot.workflow._interface.TaskSpec_i)

Return type:

None

_register_blocking_relations(
spec: doot.workflow._interface.TaskSpec_i,
) None[source]

a Task[required_for=[x,y,z] blocks x,y,z, but if you just look at x,y,z, you can’t know that. This is the reverse mapping to allow for that

Parameters:

spec (doot.workflow._interface.TaskSpec_i)

Return type:

None

_register_delayed_blockers(
spec: doot.workflow._interface.TaskSpec_i,
) None[source]
Parameters:

spec (doot.workflow._interface.TaskSpec_i)

Return type:

None

_register_late_injection(
task: doot.workflow._interface.TaskName_p,
inject: doot.workflow._interface.InjectSpec_i,
parent: doot.workflow._interface.TaskName_p,
) None[source]

Register an injection to run on task initialisation, using the state injection’s from its parent

Parameters:
Return type:

None

_register_implicit_tasks(
spec: doot.workflow._interface.TaskSpec_i,
) None[source]
Parameters:

spec (doot.workflow._interface.TaskSpec_i)

Return type:

None

class doot.control.tracker.registry._Instantiation_m(*, tracker: WorkflowTracker_p)[source]

Bases: doot.control.tracker._interface.Registry_d

Parameters:

tracker (WorkflowTracker_p)

instantiate_spec(
name: Abstract[doot.workflow._interface.TaskName_p],
*,
force: jgdv.Maybe[int | bool] = None,
extra: jgdv.Maybe[dict | jgdv.structs.chainguard.ChainGuard] = None,
) jgdv.Maybe[Concrete[doot.workflow._interface.TaskName_p]][source]
Convert an Asbtract Spec into a Concrete Spec,

Reuses a existing concrete spec if possible.

If force=True, forces a new instance to be made if force=False, blocks new instances from being made

Parameters:
Return type:

jgdv.Maybe[Concrete[doot.workflow._interface.TaskName_p]]

instantiate_relation(
rel: doot.workflow._interface.RelationSpec_i,
*,
control: Concrete[doot.workflow._interface.TaskName_p],
) Concrete[doot.workflow._interface.TaskName_p][source]
find a matching relation according to constraints,

or create a new instance if theres no constraints/no match

returns the concrete TaskName_p of the instanced target of the relation

Parameters:
Return type:

Concrete[doot.workflow._interface.TaskName_p]

make_task(
name: Concrete[doot.workflow._interface.TaskName_p],
*,
task_obj: jgdv.Maybe[doot.workflow._interface.Task_i] = None,
) Concrete[doot.workflow._interface.TaskName_p][source]

Build a Concrete Spec’s Task object, then register it if a task_obj is provided, store that instead

return the name of the task

Parameters:
Return type:

Concrete[doot.workflow._interface.TaskName_p]

_instantiate_implicit_tasks(
name: doot.workflow._interface.TaskName_p,
) None[source]
Parameters:

name (doot.workflow._interface.TaskName_p)

Return type:

None

class doot.control.tracker.registry._Verification_m(*, tracker: WorkflowTracker_p)[source]

Bases: doot.control.tracker._interface.Registry_d

Parameters:

tracker (WorkflowTracker_p)

verify(*, strict: bool = True) bool[source]
Parameters:

strict (bool)

Return type:

bool

class doot.control.tracker.registry.TrackRegistry(*args, **kwargs)[source]

Bases: doot.control.tracker._interface.Registry_d

Stores and manipulates specs, tasks, and artifacts

_delayed_blockers
get_status(
target: Concrete[doot.workflow._interface.TaskName_p | doot.workflow._interface.Artifact_i],
) tuple[doot.workflow._interface.TaskStatus_e | doot.workflow._interface.ArtifactStatus_e, int][source]

Get the status of a target or artifact

Parameters:

target (Concrete[doot.workflow._interface.TaskName_p | doot.workflow._interface.Artifact_i])

Return type:

tuple[doot.workflow._interface.TaskStatus_e | doot.workflow._interface.ArtifactStatus_e, int]

set_status(
target: Concrete[doot.workflow._interface.TaskName_p | doot.workflow._interface.Artifact_i],
status: doot.workflow._interface.TaskStatus_e | doot.workflow._interface.ArtifactStatus_e,
) bool[source]

update the state of a task in the dependency graph Returns True on status update, False on no task or artifact to update.

Parameters:
Return type:

bool