step.logic.do_while_dsl ======================= .. py:module:: step.logic.do_while_dsl .. autoapi-nested-parse:: Auto-generated step builders and DSL functions — DO NOT EDIT. Source: do_while.py Classes ------- .. autoapisummary:: step.logic.do_while_dsl.DoWhileActiveBuilder Functions --------- .. autoapisummary:: step.logic.do_while_dsl.do_while_active Module Contents --------------- .. py:class:: DoWhileActiveBuilder Bases: :py:obj:`raccoon.step.step_builder.StepBuilder` Builder for DoWhileActive. Auto-generated — do not edit. .. py:method:: reference_step(value: step.Step) .. py:method:: task(value: step.Step) .. py:function:: do_while_active(reference_step: step.Step = _UNSET, task: step.Step = _UNSET) Run a task concurrently with a reference step, cancelling the task when the reference finishes. Both steps start executing at the same time. When ``reference_step`` completes (either normally or via exception), ``task`` is immediately cancelled. This is useful for running a background activity (e.g. sensor polling, motor oscillation) only for as long as a primary action is running. If ``task`` finishes before ``reference_step``, the reference step continues running until it completes on its own. :param reference_step: The primary step whose lifetime controls the task. When this step finishes, ``task`` is cancelled. :param task: The secondary step that runs concurrently and is cancelled once ``reference_step`` completes. :returns: A DoWhileActiveBuilder (chainable via ``.reference_step()``, ``.task()``, ``.on_anomaly()``, ``.skip_timing()``). Example:: from raccoon.step.logic import do_while_active, loop_forever # Flash an LED while the robot drives forward flash_led = loop_forever(seq([ set_digital(0, True), wait(0.25), set_digital(0, False), wait(0.25), ])) do_while_active(drive_forward(50), flash_led)