PAR (Parallel Composition)
Import: from stbass import PAR
Runs processes concurrently. All processes start at the same time.
Constructor
PAR(*processes, on_failure=FailurePolicy.HALT, deadline=None)| Parameter | Type | Description |
|-----------|------|-------------|
| *processes | Process | Processes to run concurrently |
| on_failure | FailurePolicy | How to handle failures |
| deadline | float \| None | Maximum seconds before cancelling remaining processes |
Running
result = await PAR(agent_a, agent_b, agent_c).run()Result: PARResult
| Property | Type | Description |
|----------|------|-------------|
| is_ok | bool | True if all processes succeeded |
| results | list[ProcessResult] | All results in declaration order |
| successes | list[ProcessResult] | Only successful results |
| failures | list[Failure] | Only failures |
| value | list | List of success values |
Failure Policies in PAR
| Policy | Behavior |
|--------|----------|
| FailurePolicy.HALT | Cancel all remaining processes when any non-optional process fails |
| FailurePolicy.COLLECT | Run all processes to completion, collect all results |
Example — halt on failure:
result = await PAR(
critical_agent,
important_agent,
on_failure=FailurePolicy.HALT,
).run()