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()