bluesky.preprocessors.contingency_wrapper#

bluesky.preprocessors.contingency_wrapper(plan, *, except_plan=None, else_plan=None, final_plan=None, pause_for_debug=False, auto_raise=True)[source]#

try…except…else…finally helper

See finalize_wrapper() for a simplified but less powerful error-handling preprocessor.

Parameters:
planiterable or iterator

a generator, list, or similar containing Msg objects

except_plangenerator function, optional

This will be called with the exception as the only input. The plan does not need to re-raise, but may if you want to change the exception.

Only subclasses of Exception will be passed in, will not see GeneratorExit, SystemExit, or KeyboardInterrupt

else_plangenerator function, optional

This will be called with no arguments if plan completes without raising

final_plangenerator function, optional

a generator, list, or similar containing Msg objects or a callable that reurns one; attempted to be run no matter what happens in the first plan

pause_for_debugbool, optional

If the plan should pause before running the clean final_plan in the case of an Exception. This is intended as a debugging tool only.

auto_raisebool, optional

If the exception should be always be re-raised, reagardless of what except_plan does. Note this defaults to True for backwards compatibility, which is not the usual behaviour of an except statement

Yields:
msgMsg

messages from plan until it terminates or an error is raised, then messages from final_plan