dootle.control.fsm.fsm_tracker
An Alternative task tracker for doot. Uses FSM’s to simplify StateTracker.next_for.
The FSM wraps a DootTask/Job/Artifact, and manages its progression
Type Aliases
Classes
Tracks tasks by their FSM state |
Module Contents
- dootle.control.fsm.fsm_tracker.Abstract: TypeAlias = T
- class dootle.control.fsm.fsm_tracker.FSMTracker(**kwargs: Any)
Bases:
doot.control.tracker.Tracker_absTracks tasks by their FSM state
TODO modify default ctor’s of specs to be FSMTask on register
- Parameters:
kwargs (Any)
- machines: dict[doot.workflow.TaskName | doot.workflow._interface.TaskName_p, dootle.control.fsm.machines.TaskMachine]
- next_for(
- target: jgdv.Maybe[str | doot.workflow.TaskName] = None,
ask for the next task that can be performed
Returns a Task or Artifact that needs to be executed or created Returns None if it loops too many times trying to find a target, or if theres nothing left in the queue
- Parameters:
target (jgdv.Maybe[str | doot.workflow.TaskName])
- Return type:
jgdv.Maybe[doot.workflow._interface.Task_p | doot.workflow.TaskArtifact]
- queue(
- name: str | doot.workflow._interface.TaskName_p | doot.workflow._interface.TaskSpec_i | doot.workflow._interface.Artifact_i,
- *,
- from_user: bool = False,
- status: jgdv.Maybe[doot.workflow._interface.TaskStatus_e] = None,
- **kwargs: Any,
- Parameters:
- Return type:
jgdv.Maybe[Concrete[doot.workflow._interface.TaskName_p | doot.workflow._interface.Artifact_i]]
- _instantiate(
- target: doot.workflow._interface.TaskName_p | doot.workflow._interface.RelationSpec_i,
- *args: Any,
- task: bool = False,
- **kwargs: Any,
when a task is created, create a state machine for it as well
- Parameters:
target (doot.workflow._interface.TaskName_p | doot.workflow._interface.RelationSpec_i)
args (Any)
task (bool)
kwargs (Any)
- Return type:
jgdv.Maybe[doot.workflow._interface.TaskName_p]
- get_status(
- *,
- target: jgdv.Maybe[doot.workflow._interface.TaskName_p] = None,
- Parameters:
target (jgdv.Maybe[doot.workflow._interface.TaskName_p])
- Return type:
tuple[doot.workflow._interface.TaskStatus_e, Priority]
- set_status(*args: Any) None
No-op as the FSM’s control status
- Parameters:
args (Any)
- Return type:
None