Lifecycle API¶
These are the available lifecycle hooks for Burr. Implement these classes and add instances to the application builder to customize your state machines’s execution.
- class burr.lifecycle.base.PreRunStepHook¶
- Hook that runs before a step is executed - abstract pre_run_step(
- *,
- app_id: str,
- partition_key: str,
- sequence_id: int,
- state: State,
- action: Action,
- inputs: Dict[str, Any],
- **future_kwargs: Any,
- Run before a step is executed. - Parameters:
- state – State prior to step execution 
- action – Action to be executed 
- inputs – Inputs to the action 
- sequence_id – Sequence ID of the action 
- future_kwargs – Future keyword arguments 
 
 
 
- class burr.lifecycle.base.PreRunStepHookAsync¶
- Async hook that runs before a step is executed - abstract async pre_run_step(
- *,
- app_id: str,
- partition_key: str,
- sequence_id: int,
- state: State,
- action: Action,
- inputs: Dict[str, Any],
- **future_kwargs: Any,
- Async run before a step is executed. - Parameters:
- state – State prior to step execution 
- action – Action to be executed 
- inputs – Inputs to the action 
- sequence_id – Sequence ID of the action 
- future_kwargs – Future keyword arguments 
 
 
 
- class burr.lifecycle.base.PostRunStepHook¶
- Hook that runs after a step is executed - abstract post_run_step(
- *,
- app_id: str,
- partition_key: str,
- sequence_id: int,
- state: State,
- action: Action,
- result: Dict[str, Any] | None,
- exception: Exception,
- **future_kwargs: Any,
- Run after a step is executed. - Parameters:
- state – State after step execution 
- action – Action that was executed 
- result – Result of the action 
- sequence_id – Sequence ID of the action 
- exception – Exception that was raised 
- future_kwargs – Future keyword arguments 
 
 
 
- class burr.lifecycle.base.PostRunStepHookAsync¶
- Async hook that runs after a step is executed - abstract async post_run_step(
- *,
- app_id: str,
- partition_key: str,
- sequence_id: int,
- state: State,
- action: Action,
- result: dict | None,
- exception: Exception,
- **future_kwargs: Any,
- Async run after a step is executed - Parameters:
- state – State after step execution 
- action – Action that was executed 
- result – Result of the action 
- sequence_id – Sequence ID of the action 
- exception – Exception that was raised 
- future_kwargs – Future keyword arguments 
 
 
 
- class burr.lifecycle.base.PostApplicationCreateHook¶
- Synchronous hook that runs post instantiation of an - Applicationobject (after- .build()is called on the- ApplicationBuilderobject.)- abstract post_application_create(
- *,
- app_id: str,
- partition_key: str | None,
- state: State,
- application_graph: ApplicationGraph,
- parent_pointer: ParentPointer | None,
- spawning_parent_pointer: ParentPointer | None,
- **future_kwargs: Any,
- Runs after an “application” object is instantiated. This is run by the Application, in its constructor, as the last step. - Parameters:
- app_id – Application ID 
- partition_key – Partition key of application 
- state – Current state of the application 
- application_graph – Application graph of the application, representing the state machine 
- parent_pointer – Forking parent pointer of the application (application that it copied from) 
- spawning_parent_pointer – Spawning parent pointer of the application (application that it was launched from) 
- future_kwargs – Future keyword arguments for backwards compatibility 
 
 
 
- class burr.lifecycle.base.PreStartSpanHook¶
- Hook that runs before a span is started in the tracing API. This can be either a context manager or a logger of sorts. 
- class burr.lifecycle.base.PreStartSpanHookAsync¶
- class burr.lifecycle.base.PostEndSpanHook¶
- Hook that runs after a span is ended in the tracing API. This can be either a context manager or a logger. 
- class burr.lifecycle.base.PostEndSpanHookAsync¶
- Hook that runs at the end of an async span 
- class burr.lifecycle.base.ExecuteMethod(
- value,
- names=<not given>,
- *values,
- module=None,
- qualname=None,
- type=None,
- start=1,
- boundary=None,
- A set of the application methods the user can call. These correspond to interface methods in application.py, and allow us to say which method is being called for the following hooks. 
- class burr.lifecycle.base.PreApplicationExecuteCallHook¶
- Hook that runs before an application method (step/iterate/run/stream…) is called. 
- class burr.lifecycle.base.PreApplicationExecuteCallHookAsync¶
- Hook that runs before an async application method (step/iterate/run/stream…) is called. 
- class burr.lifecycle.base.PostApplicationExecuteCallHook¶
- Hook that runs after an application method (step/iterate/run/stream…) is called. 
- class burr.lifecycle.base.PostApplicationExecuteCallHookAsync¶
- Hook that runs after an async application method (step/iterate/run/stream…) is called. 
These hooks are available for you to use:
- class burr.lifecycle.default.StateAndResultsFullLogger(jsonl_path: str, mode: ~typing.Literal['append', 'w'] = 'append', json_dump: ~typing.Callable[[dict], str] = <function safe_json>)¶
- Logs the state and results of the action in a jsonl file. - __init__(jsonl_path: str, mode: ~typing.Literal['append', 'w'] = 'append', json_dump: ~typing.Callable[[dict], str] = <function safe_json>)¶
- Initializes the logger. - Parameters:
- jsonl_path – Path to the jsonl file 
- mode – Mode to open the file in. Either “append” or “w” 
- json_dump – Function to use to dump the json. Default is safe_json 
 
 
 
- class burr.lifecycle.default.SlowDownHook(pre_sleep_time: float = 0.5, post_sleep_time: float = 0.5)¶
- Slows down execution. You’ll only want to use this for debugging/visualizing. - __init__(pre_sleep_time: float = 0.5, post_sleep_time: float = 0.5)¶
- Initializes the hook. - Parameters:
- pre_sleep_time – Time to sleep before the step 
- post_sleep_time – Time to sleep after the step