# {py:mod}`ros_sugar.core.routine` ```{py:module} ros_sugar.core.routine ``` ```{autodoc2-docstring} ros_sugar.core.routine :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`RoutineStatus ` - ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus :summary: ``` * - {py:obj}`Routine ` - ```{autodoc2-docstring} ros_sugar.core.routine.Routine :summary: ``` ```` ### API `````{py:class} RoutineStatus() :canonical: ros_sugar.core.routine.RoutineStatus Bases: {py:obj}`ros_sugar.config.StrEnum` ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus ``` ````{py:method} is_terminal() -> bool :canonical: ros_sugar.core.routine.RoutineStatus.is_terminal ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.is_terminal ``` ```` ````{py:method} get_enum(__value: str) -> typing.Optional[ros_sugar.config.robot.T] :canonical: ros_sugar.core.routine.RoutineStatus.get_enum :classmethod: ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.get_enum ``` ```` ````{py:method} values() -> typing.List[str] :canonical: ros_sugar.core.routine.RoutineStatus.values :classmethod: ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.values ``` ```` ````{py:method} capitalize() :canonical: ros_sugar.core.routine.RoutineStatus.capitalize ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.capitalize ``` ```` ````{py:method} casefold() :canonical: ros_sugar.core.routine.RoutineStatus.casefold ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.casefold ``` ```` ````{py:method} center() :canonical: ros_sugar.core.routine.RoutineStatus.center ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.center ``` ```` ````{py:method} count() :canonical: ros_sugar.core.routine.RoutineStatus.count ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.count ``` ```` ````{py:method} encode() :canonical: ros_sugar.core.routine.RoutineStatus.encode ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.encode ``` ```` ````{py:method} endswith() :canonical: ros_sugar.core.routine.RoutineStatus.endswith ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.endswith ``` ```` ````{py:method} expandtabs() :canonical: ros_sugar.core.routine.RoutineStatus.expandtabs ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.expandtabs ``` ```` ````{py:method} find() :canonical: ros_sugar.core.routine.RoutineStatus.find ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.find ``` ```` ````{py:method} format() :canonical: ros_sugar.core.routine.RoutineStatus.format ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.format ``` ```` ````{py:method} format_map() :canonical: ros_sugar.core.routine.RoutineStatus.format_map ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.format_map ``` ```` ````{py:method} index() :canonical: ros_sugar.core.routine.RoutineStatus.index ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.index ``` ```` ````{py:method} isalnum() :canonical: ros_sugar.core.routine.RoutineStatus.isalnum ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isalnum ``` ```` ````{py:method} isalpha() :canonical: ros_sugar.core.routine.RoutineStatus.isalpha ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isalpha ``` ```` ````{py:method} isascii() :canonical: ros_sugar.core.routine.RoutineStatus.isascii ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isascii ``` ```` ````{py:method} isdecimal() :canonical: ros_sugar.core.routine.RoutineStatus.isdecimal ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isdecimal ``` ```` ````{py:method} isdigit() :canonical: ros_sugar.core.routine.RoutineStatus.isdigit ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isdigit ``` ```` ````{py:method} isidentifier() :canonical: ros_sugar.core.routine.RoutineStatus.isidentifier ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isidentifier ``` ```` ````{py:method} islower() :canonical: ros_sugar.core.routine.RoutineStatus.islower ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.islower ``` ```` ````{py:method} isnumeric() :canonical: ros_sugar.core.routine.RoutineStatus.isnumeric ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isnumeric ``` ```` ````{py:method} isprintable() :canonical: ros_sugar.core.routine.RoutineStatus.isprintable ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isprintable ``` ```` ````{py:method} isspace() :canonical: ros_sugar.core.routine.RoutineStatus.isspace ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isspace ``` ```` ````{py:method} istitle() :canonical: ros_sugar.core.routine.RoutineStatus.istitle ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.istitle ``` ```` ````{py:method} isupper() :canonical: ros_sugar.core.routine.RoutineStatus.isupper ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.isupper ``` ```` ````{py:method} join() :canonical: ros_sugar.core.routine.RoutineStatus.join ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.join ``` ```` ````{py:method} ljust() :canonical: ros_sugar.core.routine.RoutineStatus.ljust ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.ljust ``` ```` ````{py:method} lower() :canonical: ros_sugar.core.routine.RoutineStatus.lower ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.lower ``` ```` ````{py:method} lstrip() :canonical: ros_sugar.core.routine.RoutineStatus.lstrip ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.lstrip ``` ```` ````{py:method} partition() :canonical: ros_sugar.core.routine.RoutineStatus.partition ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.partition ``` ```` ````{py:method} removeprefix() :canonical: ros_sugar.core.routine.RoutineStatus.removeprefix ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.removeprefix ``` ```` ````{py:method} removesuffix() :canonical: ros_sugar.core.routine.RoutineStatus.removesuffix ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.removesuffix ``` ```` ````{py:method} replace() :canonical: ros_sugar.core.routine.RoutineStatus.replace ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.replace ``` ```` ````{py:method} rfind() :canonical: ros_sugar.core.routine.RoutineStatus.rfind ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.rfind ``` ```` ````{py:method} rindex() :canonical: ros_sugar.core.routine.RoutineStatus.rindex ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.rindex ``` ```` ````{py:method} rjust() :canonical: ros_sugar.core.routine.RoutineStatus.rjust ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.rjust ``` ```` ````{py:method} rpartition() :canonical: ros_sugar.core.routine.RoutineStatus.rpartition ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.rpartition ``` ```` ````{py:method} rsplit() :canonical: ros_sugar.core.routine.RoutineStatus.rsplit ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.rsplit ``` ```` ````{py:method} rstrip() :canonical: ros_sugar.core.routine.RoutineStatus.rstrip ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.rstrip ``` ```` ````{py:method} split() :canonical: ros_sugar.core.routine.RoutineStatus.split ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.split ``` ```` ````{py:method} splitlines() :canonical: ros_sugar.core.routine.RoutineStatus.splitlines ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.splitlines ``` ```` ````{py:method} startswith() :canonical: ros_sugar.core.routine.RoutineStatus.startswith ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.startswith ``` ```` ````{py:method} strip() :canonical: ros_sugar.core.routine.RoutineStatus.strip ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.strip ``` ```` ````{py:method} swapcase() :canonical: ros_sugar.core.routine.RoutineStatus.swapcase ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.swapcase ``` ```` ````{py:method} title() :canonical: ros_sugar.core.routine.RoutineStatus.title ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.title ``` ```` ````{py:method} translate() :canonical: ros_sugar.core.routine.RoutineStatus.translate ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.translate ``` ```` ````{py:method} upper() :canonical: ros_sugar.core.routine.RoutineStatus.upper ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.upper ``` ```` ````{py:method} zfill() :canonical: ros_sugar.core.routine.RoutineStatus.zfill ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.zfill ``` ```` ````{py:method} name() :canonical: ros_sugar.core.routine.RoutineStatus.name ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.name ``` ```` ````{py:method} value() :canonical: ros_sugar.core.routine.RoutineStatus.value ```{autodoc2-docstring} ros_sugar.core.routine.RoutineStatus.value ``` ```` ````` `````{py:class} Routine(name: str, steps: typing.List[typing.Union[ros_sugar.core.action.Action, ros_sugar.core.action.ActionServerGoal, typing.Callable]], on_complete: typing.Optional[typing.Union[ros_sugar.core.action.Action, ros_sugar.core.action.ActionServerGoal, typing.Callable]] = None, on_abort: typing.Optional[typing.Union[ros_sugar.core.action.Action, ros_sugar.core.action.ActionServerGoal, typing.Callable]] = None, on_pause: typing.Optional[typing.Union[ros_sugar.core.action.Action, ros_sugar.core.action.ActionServerGoal, typing.Callable, typing.Sequence[typing.Union[ros_sugar.core.action.Action, ros_sugar.core.action.ActionServerGoal, typing.Callable]]]] = None, description: typing.Optional[str] = None) :canonical: ros_sugar.core.routine.Routine ```{autodoc2-docstring} ros_sugar.core.routine.Routine ``` ````{py:method} from_spec(spec: typing.Dict, resolve: typing.Callable[[typing.Dict], ros_sugar.core.action.Action]) -> ros_sugar.core.routine.Routine :canonical: ros_sugar.core.routine.Routine.from_spec :classmethod: ```{autodoc2-docstring} ros_sugar.core.routine.Routine.from_spec ``` ```` ````{py:method} set_host(host) -> None :canonical: ros_sugar.core.routine.Routine.set_host ```{autodoc2-docstring} ros_sugar.core.routine.Routine.set_host ``` ```` ````{py:method} set_state_publisher(publish: typing.Optional[typing.Callable[[str], None]]) -> None :canonical: ros_sugar.core.routine.Routine.set_state_publisher ```{autodoc2-docstring} ros_sugar.core.routine.Routine.set_state_publisher ``` ```` ````{py:method} actions() -> typing.List[ros_sugar.core.action.Action] :canonical: ros_sugar.core.routine.Routine.actions ```{autodoc2-docstring} ros_sugar.core.routine.Routine.actions ``` ```` ````{py:method} stop_watching() -> None :canonical: ros_sugar.core.routine.Routine.stop_watching ```{autodoc2-docstring} ros_sugar.core.routine.Routine.stop_watching ``` ```` ````{py:method} get_required_topics() -> typing.List[ros_sugar.io.Topic] :canonical: ros_sugar.core.routine.Routine.get_required_topics ```{autodoc2-docstring} ros_sugar.core.routine.Routine.get_required_topics ``` ```` ````{py:property} state :canonical: ros_sugar.core.routine.Routine.state :type: typing.Dict ```{autodoc2-docstring} ros_sugar.core.routine.Routine.state ``` ```` ````{py:property} latest_step_messages :canonical: ros_sugar.core.routine.Routine.latest_step_messages :type: typing.Dict[str, str] ```{autodoc2-docstring} ros_sugar.core.routine.Routine.latest_step_messages ``` ```` ````{py:method} step_messages(index: typing.Optional[int] = None) -> typing.Union[typing.List[typing.Dict], typing.Dict] :canonical: ros_sugar.core.routine.Routine.step_messages ```{autodoc2-docstring} ros_sugar.core.routine.Routine.step_messages ``` ```` ````{py:method} pause(**_) -> ros_sugar.utils.ActionReturnType :canonical: ros_sugar.core.routine.Routine.pause ```{autodoc2-docstring} ros_sugar.core.routine.Routine.pause ``` ```` ````{py:method} resume(**_) -> ros_sugar.utils.ActionReturnType :canonical: ros_sugar.core.routine.Routine.resume ```{autodoc2-docstring} ros_sugar.core.routine.Routine.resume ``` ```` ````{py:method} abort(reason: str = 'aborted by request', run_on_abort: bool = True, **_) -> ros_sugar.utils.ActionReturnType :canonical: ros_sugar.core.routine.Routine.abort ```{autodoc2-docstring} ros_sugar.core.routine.Routine.abort ``` ```` ````{py:method} halt_in_flight() -> None :canonical: ros_sugar.core.routine.Routine.halt_in_flight ```{autodoc2-docstring} ros_sugar.core.routine.Routine.halt_in_flight ``` ```` `````