From a5a6c0bee5bf1e4ac63e4174a4df0037d2d78c75 Mon Sep 17 00:00:00 2001 From: Daniel Stonier Date: Sun, 3 Sep 2023 15:11:17 +0000 Subject: [PATCH] [decorators] finally-style decorators and idioms --- .devcontainer/devcontainer.json | 1 + .../py310/.devcontainer/devcontainer.json | 10 +- .vscode/settings.json | 5 + CHANGELOG.rst | 2 +- docs/demos.rst | 32 ++++ docs/dot/demo-eventually-swiss.dot | 19 ++ docs/dot/demo-eventually.dot | 17 ++ docs/dot/demo-finally-single-tick.dot | 17 ++ docs/dot/eventually-swiss.dot | 19 ++ docs/dot/eventually.dot | 13 ++ docs/examples/eventually.py | 16 ++ docs/examples/eventually_swiss.py | 18 ++ docs/images/demo-eventually-swiss.png | Bin 0 -> 89000 bytes docs/images/demo-eventually.png | Bin 0 -> 90802 bytes py_trees/behaviour.py | 2 +- py_trees/behaviours.py | 1 + py_trees/decorators.py | 62 ++++++ py_trees/demos/__init__.py | 2 + py_trees/demos/eventually.py | 176 +++++++++++++++++ py_trees/demos/eventually_swiss.py | 177 ++++++++++++++++++ py_trees/idioms.py | 85 ++++++++- pyproject.toml | 2 + tests/test_decorators.py | 41 ++++ tests/test_eventually.py | 110 +++++++++++ 24 files changed, 821 insertions(+), 6 deletions(-) create mode 100644 docs/dot/demo-eventually-swiss.dot create mode 100644 docs/dot/demo-eventually.dot create mode 100644 docs/dot/demo-finally-single-tick.dot create mode 100644 docs/dot/eventually-swiss.dot create mode 100644 docs/dot/eventually.dot create mode 100755 docs/examples/eventually.py create mode 100755 docs/examples/eventually_swiss.py create mode 100644 docs/images/demo-eventually-swiss.png create mode 100644 docs/images/demo-eventually.png create mode 100644 py_trees/demos/eventually.py create mode 100644 py_trees/demos/eventually_swiss.py create mode 100644 tests/test_eventually.py diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 98c65cfc..5849c3d7 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -23,6 +23,7 @@ "bierner.markdown-preview-github-styles", "bungcip.better-toml", "eamodio.gitlens", + "joaompinto.vscode-graphviz", "ms-python.python", "omnilib.ufmt", "redhat.vscode-yaml", diff --git a/.devcontainer/py310/.devcontainer/devcontainer.json b/.devcontainer/py310/.devcontainer/devcontainer.json index 7a97b807..7668893c 100644 --- a/.devcontainer/py310/.devcontainer/devcontainer.json +++ b/.devcontainer/py310/.devcontainer/devcontainer.json @@ -19,11 +19,15 @@ "vscode": { "extensions": [ "bierner.github-markdown-preview", + "bierner.markdown-preview-github-styles", "bungcip.better-toml", - "streetsidesoftware.code-spell-checker", - "lextudio.restructuredtext", + "eamodio.gitlens", + "joaompinto.vscode-graphviz", "ms-python.python", - "omnilib.ufmt" + "omnilib.ufmt", + "redhat.vscode-yaml", + "streetsidesoftware.code-spell-checker", + "tht13.rst-vscode" ] } }, diff --git a/.vscode/settings.json b/.vscode/settings.json index b96bb6fa..49b2588c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,10 +12,15 @@ "behaviours", "bierner", "bungcip", + "epilog", + "graphviz", + "literalinclude", + "noodly", "omnilib", "py_trees", "pydot", "pypi", + "seealso", "ufmt", "usort" ] diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f411867b..635bab5d 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,7 +3,7 @@ Release Notes Forthcoming ----------- -* ... +* [decorators] finally-style decorators and idioms, `#427 `_ 2.2.3 (2023-02-08) ------------------ diff --git a/docs/demos.rst b/docs/demos.rst index a0154cc4..8f7735bb 100644 --- a/docs/demos.rst +++ b/docs/demos.rst @@ -147,6 +147,38 @@ py-trees-demo-eternal-guard :linenos: :caption: py_trees/demos/eternal_guard.py +.. _py-trees-demo-eventually-program: + +py-trees-demo-eventually +------------------------ + +.. automodule:: py_trees.demos.eventually + :members: + :special-members: + :show-inheritance: + :synopsis: demo the eventually idiom + +.. literalinclude:: ../py_trees/demos/eventually.py + :language: python + :linenos: + :caption: py_trees/demos/eventually.py + +.. _py-trees-demo-eventually-swiss-program: + +py-trees-demo-eventually-swiss +------------------------------ + +.. automodule:: py_trees.demos.eventually_swiss + :members: + :special-members: + :show-inheritance: + :synopsis: demo the general purpose eventually idiom + +.. literalinclude:: ../py_trees/demos/eventually_swiss.py + :language: python + :linenos: + :caption: py_trees/demos/eventually_swiss.py + .. _py-trees-demo-logging-program: py-trees-demo-logging diff --git a/docs/dot/demo-eventually-swiss.dot b/docs/dot/demo-eventually-swiss.dot new file mode 100644 index 00000000..088dac4b --- /dev/null +++ b/docs/dot/demo-eventually-swiss.dot @@ -0,0 +1,19 @@ +digraph pastafarianism { +ordering=out; +graph [fontname="times-roman"]; +node [fontname="times-roman"]; +edge [fontname="times-roman"]; +"Count with Result" [fillcolor=cyan, fontcolor=black, fontsize=9, label="Count with Result", shape=octagon, style=filled]; +"Work to Success" [fillcolor=orange, fontcolor=black, fontsize=9, label="Ⓜ Work to Success", shape=box, style=filled]; +"Count with Result" -> "Work to Success"; +Counter [fillcolor=gray, fontcolor=black, fontsize=9, label=Counter, shape=ellipse, style=filled]; +"Work to Success" -> Counter; +SetResultTrue [fillcolor=gray, fontcolor=black, fontsize=9, label=SetResultTrue, shape=ellipse, style=filled]; +"Work to Success" -> SetResultTrue; +"On Failure" [fillcolor=orange, fontcolor=black, fontsize=9, label="Ⓜ On Failure", shape=box, style=filled]; +"Count with Result" -> "On Failure"; +SetResultFalse [fillcolor=gray, fontcolor=black, fontsize=9, label=SetResultFalse, shape=ellipse, style=filled]; +"On Failure" -> SetResultFalse; +Failure [fillcolor=gray, fontcolor=black, fontsize=9, label=Failure, shape=ellipse, style=filled]; +"On Failure" -> Failure; +} diff --git a/docs/dot/demo-eventually.dot b/docs/dot/demo-eventually.dot new file mode 100644 index 00000000..0711f6b4 --- /dev/null +++ b/docs/dot/demo-eventually.dot @@ -0,0 +1,17 @@ +digraph pastafarianism { +ordering=out; +graph [fontname="times-roman"]; +node [fontname="times-roman"]; +edge [fontname="times-roman"]; +"Count and Record" [fillcolor=gold, fontcolor=black, fontsize=9, label="Count and Record\nSuccessOnOne", shape=parallelogram, style=filled]; +Counting [fillcolor=orange, fontcolor=black, fontsize=9, label="Ⓜ Counting", shape=box, style=filled]; +"Count and Record" -> Counting; +SetCountingFlagTrue [fillcolor=gray, fontcolor=black, fontsize=9, label=SetCountingFlagTrue, shape=ellipse, style=filled]; +Counting -> SetCountingFlagTrue; +Counter [fillcolor=gray, fontcolor=black, fontsize=9, label=Counter, shape=ellipse, style=filled]; +Counting -> Counter; +Eventually [fillcolor=ghostwhite, fontcolor=black, fontsize=9, label=Eventually, shape=ellipse, style=filled]; +"Count and Record" -> Eventually; +SetCountingFlagFalse [fillcolor=gray, fontcolor=black, fontsize=9, label=SetCountingFlagFalse, shape=ellipse, style=filled]; +Eventually -> SetCountingFlagFalse; +} diff --git a/docs/dot/demo-finally-single-tick.dot b/docs/dot/demo-finally-single-tick.dot new file mode 100644 index 00000000..12ee71f3 --- /dev/null +++ b/docs/dot/demo-finally-single-tick.dot @@ -0,0 +1,17 @@ +digraph pastafarianism { +ordering=out; +graph [fontname="times-roman"]; +node [fontname="times-roman"]; +edge [fontname="times-roman"]; +root [fillcolor=orange, fontcolor=black, fontsize=9, label="Ⓜ root", shape=box, style=filled]; +SetFlagFalse [fillcolor=gray, fontcolor=black, fontsize=9, label=SetFlagFalse, shape=ellipse, style=filled]; +root -> SetFlagFalse; +Parallel [fillcolor=gold, fontcolor=black, fontsize=9, label="Parallel\nSuccessOnOne", shape=parallelogram, style=filled]; +root -> Parallel; +Counter [fillcolor=gray, fontcolor=black, fontsize=9, label=Counter, shape=ellipse, style=filled]; +Parallel -> Counter; +Finally [fillcolor=ghostwhite, fontcolor=black, fontsize=9, label=Finally, shape=ellipse, style=filled]; +Parallel -> Finally; +SetFlagTrue [fillcolor=gray, fontcolor=black, fontsize=9, label=SetFlagTrue, shape=ellipse, style=filled]; +Finally -> SetFlagTrue; +} diff --git a/docs/dot/eventually-swiss.dot b/docs/dot/eventually-swiss.dot new file mode 100644 index 00000000..914642f0 --- /dev/null +++ b/docs/dot/eventually-swiss.dot @@ -0,0 +1,19 @@ +digraph pastafarianism { +ordering=out; +graph [fontname="times-roman"]; +node [fontname="times-roman"]; +edge [fontname="times-roman"]; +"Eventually (Swiss)" [fillcolor=cyan, fontcolor=black, fontsize=9, label="Eventually (Swiss)", shape=octagon, style=filled]; +"Work to Success" [fillcolor=orange, fontcolor=black, fontsize=9, label="Ⓜ Work to Success", shape=box, style=filled]; +"Eventually (Swiss)" -> "Work to Success"; +Worker [fillcolor=gray, fontcolor=black, fontsize=9, label=Worker, shape=ellipse, style=filled]; +"Work to Success" -> Worker; +"On Success" [fillcolor=gray, fontcolor=black, fontsize=9, label="On Success", shape=ellipse, style=filled]; +"Work to Success" -> "On Success"; +"On Failure" [fillcolor=orange, fontcolor=black, fontsize=9, label="Ⓜ On Failure", shape=box, style=filled]; +"Eventually (Swiss)" -> "On Failure"; +"On Failure*" [fillcolor=gray, fontcolor=black, fontsize=9, label="On Failure*", shape=ellipse, style=filled]; +"On Failure" -> "On Failure*"; +Failure [fillcolor=gray, fontcolor=black, fontsize=9, label=Failure, shape=ellipse, style=filled]; +"On Failure" -> Failure; +} diff --git a/docs/dot/eventually.dot b/docs/dot/eventually.dot new file mode 100644 index 00000000..0f80d3d8 --- /dev/null +++ b/docs/dot/eventually.dot @@ -0,0 +1,13 @@ +digraph pastafarianism { +ordering=out; +graph [fontname="times-roman"]; +node [fontname="times-roman"]; +edge [fontname="times-roman"]; +Eventually [fillcolor=gold, fontcolor=black, fontsize=9, label="Eventually\nSuccessOnOne", shape=parallelogram, style=filled]; +Worker [fillcolor=gray, fontcolor=black, fontsize=9, label=Worker, shape=ellipse, style=filled]; +Eventually -> Worker; +"Eventually*" [fillcolor=ghostwhite, fontcolor=black, fontsize=9, label="Eventually*", shape=ellipse, style=filled]; +Eventually -> "Eventually*"; +"On Completion" [fillcolor=gray, fontcolor=black, fontsize=9, label="On Completion", shape=ellipse, style=filled]; +"Eventually*" -> "On Completion"; +} diff --git a/docs/examples/eventually.py b/docs/examples/eventually.py new file mode 100755 index 00000000..38481ed7 --- /dev/null +++ b/docs/examples/eventually.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import py_trees + +if __name__ == "__main__": + worker = py_trees.behaviours.Success(name="Worker") + on_completion = py_trees.behaviours.Success(name="On Completion") + root = py_trees.idioms.eventually( + name="Eventually", + worker=worker, + on_completion=on_completion, + ) + py_trees.display.render_dot_tree( + root, py_trees.common.string_to_visibility_level("all") + ) diff --git a/docs/examples/eventually_swiss.py b/docs/examples/eventually_swiss.py new file mode 100755 index 00000000..11be7668 --- /dev/null +++ b/docs/examples/eventually_swiss.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import py_trees + +if __name__ == "__main__": + worker = py_trees.behaviours.Success(name="Worker") + on_failure = py_trees.behaviours.Success(name="On Failure") + on_success = py_trees.behaviours.Success(name="On Success") + root = py_trees.idioms.eventually_swiss( + name="Eventually (Swiss)", + workers=[worker], + on_failure=on_failure, + on_success=on_success, + ) + py_trees.display.render_dot_tree( + root, py_trees.common.string_to_visibility_level("all") + ) diff --git a/docs/images/demo-eventually-swiss.png b/docs/images/demo-eventually-swiss.png new file mode 100644 index 0000000000000000000000000000000000000000..d1fb8e39b8f1a085309912f83571d78a82cb20e5 GIT binary patch literal 89000 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 z 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

<(>s&3pVK|Ul4FUY_RMFa4 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ⓈD86qtiTH2G|w~lTxFV> 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 P1YDA0a-t<~^*{YDe)p|o literal 0 HcmV?d00001 diff --git a/py_trees/behaviour.py b/py_trees/behaviour.py index 0cfd16d1..5974b65b 100644 --- a/py_trees/behaviour.py +++ b/py_trees/behaviour.py @@ -344,7 +344,7 @@ def iterate(self, direct_descendants: bool = False) -> typing.Iterator[Behaviour yield child yield self - # TODO: better type refinement of 'viso=itor' + # TODO: better type refinement of 'visitor' def visit(self, visitor: typing.Any) -> None: """ Introspect on this behaviour with a visitor. diff --git a/py_trees/behaviours.py b/py_trees/behaviours.py index 6fbd3df1..c52c6608 100644 --- a/py_trees/behaviours.py +++ b/py_trees/behaviours.py @@ -280,6 +280,7 @@ def update(self) -> common.Status: :data:`~py_trees.common.Status.RUNNING` while not expired, the given completion status otherwise """ self.counter += 1 + self.feedback_message = f"count: {self.counter}" if self.counter <= self.duration: return common.Status.RUNNING else: diff --git a/py_trees/decorators.py b/py_trees/decorators.py index c984e16f..d35ce63c 100644 --- a/py_trees/decorators.py +++ b/py_trees/decorators.py @@ -38,6 +38,7 @@ * :class:`py_trees.decorators.EternalGuard` * :class:`py_trees.decorators.Inverter` * :class:`py_trees.decorators.OneShot` +* :class:`py_trees.decorators.OnTerminate` * :class:`py_trees.decorators.Repeat` * :class:`py_trees.decorators.Retry` * :class:`py_trees.decorators.StatusToBlackboard` @@ -920,3 +921,64 @@ def update(self) -> common.Status: the behaviour's new status :class:`~py_trees.common.Status` """ return self.decorated.status + + +class OnTerminate(Decorator): + """ + Trigger the child for a single tick on :meth:`terminate`. + + Always return :data:`~py_trees.common.Status.RUNNING` and on + on :meth:`terminate`, call the child's + :meth:`~py_trees.behaviour.Behaviour.update` method, once. + + This is useful to cleanup, restore a context switch or to + implement a finally-like behaviour. + + .. seealso:: :meth:`py_trees.idioms.eventually` + """ + + def __init__(self, name: str, child: behaviour.Behaviour): + """ + Initialise with the standard decorator arguments. + + Args: + name: the decorator name + child: the child to be decorated + """ + super(OnTerminate, self).__init__(name=name, child=child) + + def tick(self) -> typing.Iterator[behaviour.Behaviour]: + """ + Bypass the child when ticking. + + Yields: + a reference to itself + """ + self.logger.debug(f"{self.__class__.__name__}.tick()") + self.status = self.update() + yield self + + def update(self) -> common.Status: + """ + Return with :data:`~py_trees.common.Status.RUNNING`. + + Returns: + the behaviour's new status :class:`~py_trees.common.Status` + """ + return common.Status.RUNNING + + def terminate(self, new_status: common.Status) -> None: + """Tick the child behaviour once.""" + self.logger.debug( + "{}.terminate({})".format( + self.__class__.__name__, + "{}->{}".format(self.status, new_status) + if self.status != new_status + else f"{new_status}", + ) + ) + if new_status == common.Status.INVALID: + self.decorated.tick_once() + # Do not need to stop the child here - this method + # is only called by Decorator.stop() which will handle + # that responsibility immediately after this method returns. diff --git a/py_trees/demos/__init__.py b/py_trees/demos/__init__.py index fc9d44e6..9495902d 100644 --- a/py_trees/demos/__init__.py +++ b/py_trees/demos/__init__.py @@ -21,6 +21,8 @@ from . import display_modes # usort:skip # noqa: F401 from . import dot_graphs # usort:skip # noqa: F401 from . import either_or # usort:skip # noqa: F401 +from . import eventually # usort:skip # noqa: F401 +from . import eventually_swiss # usort:skip # noqa: F401 from . import lifecycle # usort:skip # noqa: F401 from . import selector # usort:skip # noqa: F401 from . import sequence # usort:skip # noqa: F401 diff --git a/py_trees/demos/eventually.py b/py_trees/demos/eventually.py new file mode 100644 index 00000000..55f771ee --- /dev/null +++ b/py_trees/demos/eventually.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python +# +# License: BSD +# https://raw.githubusercontent.com/splintered-reality/py_trees/devel/LICENSE +# +############################################################################## +# Documentation +############################################################################## + +""" +Trigger 'finally'-like behaviour with :meth:`py_trees.idioms.eventually`. + +.. argparse:: + :module: py_trees.demos.eventually + :func: command_line_argument_parser + :prog: py-trees-demo-eventually-program + +.. graphviz:: dot/demo-eventually.dot + +.. image:: images/demo-eventually.png + +""" + +############################################################################## +# Imports +############################################################################## + +import argparse +import sys +import typing + +import py_trees +import py_trees.console as console + +############################################################################## +# Classes +############################################################################## + + +def description(root: py_trees.behaviour.Behaviour) -> str: + """ + Print description and usage information about the program. + + Returns: + the program description string + """ + content = "The single tick version of the 'eventually' idiom.\n\n" + content += "A counter is started and a variable 'counting' is set\n" + content += "to True to indicate it is in progress. On completion,\n" + content += "regardless of success or failure, the variable is\n" + content += "set back to False\n" + content += "\n" + content += "NB: The demo is run twice - on the first, the count\n" + content += "terminates with SUCCESS and on the second, with FAILURE.\n" + content += "\n" + content += "EVENTS\n" + content += " - 1 : counter is started\n" + content += " - 2a : count completes with SUCCESS||FAILURE\n" + content += " - 2b : the eventually pathway is triggered\n" + content += " - 2c : blackboard 'counting' variable is set to False\n" + content += "\n" + if py_trees.console.has_colours: + banner_line = console.green + "*" * 79 + "\n" + console.reset + s = banner_line + s += console.bold_white + "Eventually".center(79) + "\n" + console.reset + s += banner_line + s += "\n" + s += content + s += "\n" + s += banner_line + else: + s = content + return s + + +def epilog() -> typing.Optional[str]: + """ + Print a noodly epilog for --help. + + Returns: + the noodly message + """ + if py_trees.console.has_colours: + return ( + console.cyan + + "And his noodly appendage reached forth to tickle the blessed...\n" + + console.reset + ) + else: + return None + + +def command_line_argument_parser() -> argparse.ArgumentParser: + """ + Process command line arguments. + + Returns: + the argument parser + """ + parser = argparse.ArgumentParser( + description=description(create_root(py_trees.common.Status.SUCCESS)), + epilog=epilog(), + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + group = parser.add_mutually_exclusive_group() + group.add_argument( + "-r", "--render", action="store_true", help="render dot tree to file" + ) + return parser + + +def create_root( + expected_work_termination_result: py_trees.common.Status, +) -> py_trees.behaviour.Behaviour: + """ + Create the root behaviour and it's subtree. + + Returns: + the root behaviour + """ + set_counting_flag_true = py_trees.behaviours.SetBlackboardVariable( + name="SetCountingFlagTrue", + variable_name="counting", + variable_value=True, + overwrite=True, + ) + set_counting_flag_false = py_trees.behaviours.SetBlackboardVariable( + name="SetCountingFlagFalse", + variable_name="counting", + variable_value=False, + overwrite=True, + ) + counter = py_trees.behaviours.TickCounter( + name="Counter", duration=1, completion_status=expected_work_termination_result + ) + counting = py_trees.composites.Sequence( + name="Counting", memory=True, children=[set_counting_flag_true, counter] + ) + root = py_trees.idioms.eventually( + name="Count and Record", + worker=counting, + on_completion=set_counting_flag_false, + ) + return root + + +############################################################################## +# Main +############################################################################## + + +def main() -> None: + """Entry point for the demo script.""" + args = command_line_argument_parser().parse_args() + # py_trees.logging.level = py_trees.logging.Level.DEBUG + print(description(create_root(py_trees.common.Status.SUCCESS))) + + #################### + # Rendering + #################### + if args.render: + py_trees.display.render_dot_tree(create_root(py_trees.common.Status.SUCCESS)) + sys.exit() + + for status in (py_trees.common.Status.SUCCESS, py_trees.common.Status.FAILURE): + py_trees.blackboard.Blackboard.clear() + console.banner(f"Experiment - Terminate with {status}") + root = create_root(status) + root.tick_once() + print(py_trees.display.unicode_tree(root=root, show_status=True)) + print(py_trees.display.unicode_blackboard()) + root.tick_once() + print(py_trees.display.unicode_tree(root=root, show_status=True)) + print(py_trees.display.unicode_blackboard()) + + print("\n") diff --git a/py_trees/demos/eventually_swiss.py b/py_trees/demos/eventually_swiss.py new file mode 100644 index 00000000..933e7c9c --- /dev/null +++ b/py_trees/demos/eventually_swiss.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python +# +# License: BSD +# https://raw.githubusercontent.com/splintered-reality/py_trees/devel/LICENSE +# +############################################################################## +# Documentation +############################################################################## + +""" +Demonstrate a swiss-knife variant of the eventually idiom. + +.. argparse:: + :module: py_trees.demos.eventually_swiss + :func: command_line_argument_parser + :prog: py-trees-demo-eventually-swiss-program + +.. graphviz:: dot/demo-eventually-swiss.dot + +.. image:: images/demo-eventually-swiss.png + +""" + +############################################################################## +# Imports +############################################################################## + +import argparse +import sys +import typing + +import py_trees +import py_trees.console as console + +############################################################################## +# Classes +############################################################################## + + +def description(root: py_trees.behaviour.Behaviour) -> str: + """ + Print description and usage information about the program. + + Returns: + the program description string + """ + content = "The swiss-knife version of the 'eventually' idiom.\n\n" + content += "A counter is started and on successful completion\n" + content += "(or otherwise), the result is recorded on the blackboard.\n" + content += "\n" + content += "NB: The demo is run twice - on the first, the count\n" + content += "terminates with SUCCESS and on the second, with FAILURE.\n" + content += "\n" + content += "EVENTS\n" + content += " - 1 : counter is started\n" + content += " - 2a : count completes with SUCCESS||FAILURE\n" + content += " - 2b : eventually pathways are triggered\n" + content += " - 2c : blackboard count variable is set to true||false\n" + content += "\n" + if py_trees.console.has_colours: + banner_line = console.green + "*" * 79 + "\n" + console.reset + s = banner_line + s += ( + console.bold_white + + "Eventually - Swiss Variant".center(79) + + "\n" + + console.reset + ) + s += banner_line + s += "\n" + s += content + s += "\n" + s += banner_line + else: + s = content + return s + + +def epilog() -> typing.Optional[str]: + """ + Print a noodly epilog for --help. + + Returns: + the noodly message + """ + if py_trees.console.has_colours: + return ( + console.cyan + + "And his noodly appendage reached forth to tickle the blessed...\n" + + console.reset + ) + else: + return None + + +def command_line_argument_parser() -> argparse.ArgumentParser: + """ + Process command line arguments. + + Returns: + the argument parser + """ + parser = argparse.ArgumentParser( + description=description(create_root(py_trees.common.Status.SUCCESS)), + epilog=epilog(), + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + group = parser.add_mutually_exclusive_group() + group.add_argument( + "-r", "--render", action="store_true", help="render dot tree to file" + ) + return parser + + +def create_root( + expected_work_termination_result: py_trees.common.Status, +) -> py_trees.behaviour.Behaviour: + """ + Create the root behaviour and it's subtree. + + Returns: + the root behaviour + """ + set_result_true = py_trees.behaviours.SetBlackboardVariable( + name="SetResultTrue", + variable_name="result", + variable_value=True, + overwrite=True, + ) + set_result_false = py_trees.behaviours.SetBlackboardVariable( + name="SetResultFalse", + variable_name="result", + variable_value=False, + overwrite=True, + ) + worker = py_trees.behaviours.TickCounter( + name="Counter", duration=1, completion_status=expected_work_termination_result + ) + root = py_trees.idioms.eventually_swiss( + name="Count with Result", + workers=[worker], + on_failure=set_result_false, + on_success=set_result_true, + ) + return root + + +############################################################################## +# Main +############################################################################## + + +def main() -> None: + """Entry point for the demo script.""" + args = command_line_argument_parser().parse_args() + # py_trees.logging.level = py_trees.logging.Level.DEBUG + print(description(create_root(py_trees.common.Status.SUCCESS))) + + #################### + # Rendering + #################### + if args.render: + py_trees.display.render_dot_tree(create_root(py_trees.common.Status.SUCCESS)) + sys.exit() + + for status in (py_trees.common.Status.SUCCESS, py_trees.common.Status.FAILURE): + py_trees.blackboard.Blackboard.clear() + console.banner(f"Experiment - Terminate with {status}") + root = create_root(status) + root.tick_once() + print(py_trees.display.unicode_tree(root=root, show_status=True)) + print(py_trees.display.unicode_blackboard()) + root.tick_once() + print(py_trees.display.unicode_tree(root=root, show_status=True)) + print(py_trees.display.unicode_blackboard()) + + print("\n") diff --git a/py_trees/idioms.py b/py_trees/idioms.py index 1189f5e9..515a18d7 100644 --- a/py_trees/idioms.py +++ b/py_trees/idioms.py @@ -19,7 +19,7 @@ from . import behaviour, behaviours, blackboard, common, composites, decorators ############################################################################## -# Creational Methods +# Idioms ############################################################################## @@ -276,3 +276,86 @@ def oneshot( ) subtree_root.add_children([oneshot_with_guard, oneshot_result]) return subtree_root + + +def eventually( + name: str, + worker: behaviour.Behaviour, + on_completion: behaviour.Behaviour, +) -> behaviour.Behaviour: + """ + Implement a single-tick 'try-finally'-like pattern. + + This idiom uses the :class:`~py_trees.decorators.OnTerminate` + decorator along with a parallel to trigger an + on_completion behaviour (or subtree) as soon as the + worker returns :data:`~py_trees.common.Status.SUCCESS` or + :data:`~py_trees.common.Status.FAILURE`). + + .. note: The on_completion behaviour is only ticked once + + .. tip: + + If you have multiple workers, put them in a sequence and + pass that to the idiom. + + .. graphviz:: dot/eventually.dot + + Args: + worker: the worker behaviour or subtree + name: the name to use for the idiom root + on_completion: the behaviour or subtree to tick on work completion + + Returns: + :class:`~py_trees.behaviour.Behaviour`: the root of the oneshot subtree + + .. seealso:: :ref:`py-trees-demo-eventually-program`, :meth:`py_trees.idioms.eventually_swiss` + """ + subtree_root = composites.Parallel( + name=name, + policy=common.ParallelPolicy.SuccessOnOne(), + children=[], + ) + decorator = decorators.OnTerminate(name="Eventually", child=on_completion) + subtree_root.add_children([worker, decorator]) + return subtree_root + + +def eventually_swiss( + name: str, + workers: typing.List[behaviour.Behaviour], + on_failure: behaviour.Behaviour, + on_success: behaviour.Behaviour, +) -> behaviour.Behaviour: + """ + Implement a multi-tick, general purpose 'try-except-else'-like pattern. + + This is a swiss knife version of the eventually idiom + that facilitates a multi-tick response for specialised + handling work sequence's completion status. + + .. graphviz:: dot/eventually-swiss.dot + + Args: + name: the name to use for the idiom root + workers: the worker behaviours or subtrees + on_success: the behaviour or subtree to tick on work success + on_failure: the behaviour or subtree to tick on work failure + + Returns: + :class:`~py_trees.behaviour.Behaviour`: the root of the oneshot subtree + + .. seealso:: :meth:`py_trees.idioms.eventually`, :ref:`py-trees-demo-eventually-swiss-program` + """ + on_success_sequence = composites.Sequence( + name="Work to Success", memory=True, children=workers + [on_success] + ) + on_failure_sequence = composites.Sequence( + name="On Failure", + memory=True, + children=[on_failure, behaviours.Failure(name="Failure")], + ) + subtree_root = composites.Selector( + name=name, memory=False, children=[on_success_sequence, on_failure_sequence] + ) + return subtree_root diff --git a/pyproject.toml b/pyproject.toml index 494a7708..c3904919 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,6 +66,8 @@ py-trees-demo-display-modes = "py_trees.demos.display_modes:main" py-trees-demo-dot-graphs = "py_trees.demos.dot_graphs:main" py-trees-demo-either-or = "py_trees.demos.either_or:main" py-trees-demo-eternal-guard = "py_trees.demos.eternal_guard:main" +py-trees-demo-eventually = "py_trees.demos.eventually:main" +py-trees-demo-eventually-swiss = "py_trees.demos.eventually_swiss:main" py-trees-demo-logging = "py_trees.demos.logging:main" py-trees-demo-pick-up-where-you-left-off = "py_trees.demos.pick_up_where_you_left_off:main" py-trees-demo-selector = "py_trees.demos.selector:main" diff --git a/tests/test_decorators.py b/tests/test_decorators.py index c9a8b367..b5200b97 100644 --- a/tests/test_decorators.py +++ b/tests/test_decorators.py @@ -604,3 +604,44 @@ def test_status_to_blackboard() -> None: result=decorator.status, ) assert decorator.status == py_trees.common.Status.SUCCESS + + +def test_on_terminate() -> None: + console.banner("OnTerminate") + + blackboard = py_trees.blackboard.Client() + blackboard.register_key(key="flag", access=py_trees.common.Access.WRITE) + blackboard.flag = False + + set_flag_true = py_trees.behaviours.SetBlackboardVariable( + name="SetFlag", variable_name="flag", variable_value=True, overwrite=True + ) + worker = py_trees.behaviours.TickCounter( + name="Counter-1", duration=1, completion_status=py_trees.common.Status.SUCCESS + ) + parallel = py_trees.composites.Parallel( + name="Parallel", + policy=py_trees.common.ParallelPolicy.SuccessOnOne(), + children=[], + ) + decorator = py_trees.decorators.OnTerminate(name="Eventually", child=set_flag_true) + parallel.add_children([worker, decorator]) + parallel.tick_once() + py_trees.tests.print_assert_banner() + py_trees.tests.print_assert_details( + text="BB Variable (flag)", + expected=False, + result=blackboard.flag, + ) + print(py_trees.display.unicode_tree(root=parallel, show_status=True)) + assert not blackboard.flag + + parallel.tick_once() + py_trees.tests.print_assert_banner() + py_trees.tests.print_assert_details( + text="BB Variable (flag)", + expected=True, + result=blackboard.flag, + ) + print(py_trees.display.unicode_tree(root=parallel, show_status=True)) + assert blackboard.flag diff --git a/tests/test_eventually.py b/tests/test_eventually.py new file mode 100644 index 00000000..3e3dbf0c --- /dev/null +++ b/tests/test_eventually.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python +# +# License: BSD +# https://raw.githubusercontent.com/splintered-reality/py_trees/devel/LICENSE +# +############################################################################## +# Imports +############################################################################## + +import py_trees +import py_trees.console as console +import py_trees.tests +import pytest + +############################################################################## +# Eternal Guard +############################################################################## + + +def test_eventually() -> None: + console.banner("Eventually") + + blackboard = py_trees.blackboard.Client() + blackboard.register_key(key="flag", access=py_trees.common.Access.WRITE) + blackboard.flag = False + + set_flag_true = py_trees.behaviours.SetBlackboardVariable( + name="SetFlag", variable_name="flag", variable_value=True, overwrite=True + ) + worker = py_trees.behaviours.TickCounter( + name="Counter-1", duration=1, completion_status=py_trees.common.Status.SUCCESS + ) + parallel = py_trees.idioms.eventually( + name="Parallel", worker=worker, on_completion=set_flag_true + ) + parallel.tick_once() + py_trees.tests.print_assert_banner() + py_trees.tests.print_assert_details( + text="BB Variable (flag)", + expected=False, + result=blackboard.flag, + ) + print(py_trees.display.unicode_tree(root=parallel, show_status=True)) + assert not blackboard.flag + + parallel.tick_once() + py_trees.tests.print_assert_banner() + py_trees.tests.print_assert_details( + text="BB Variable (flag)", + expected=True, + result=blackboard.flag, + ) + print(py_trees.display.unicode_tree(root=parallel, show_status=True)) + assert blackboard.flag + + +def test_eventually_swiss() -> None: + console.banner("Eventually (Swiss)") + set_result_true = py_trees.behaviours.SetBlackboardVariable( + name="SetResultTrue", + variable_name="result", + variable_value=True, + overwrite=True, + ) + set_result_false = py_trees.behaviours.SetBlackboardVariable( + name="SetResultFalse", + variable_name="result", + variable_value=False, + overwrite=True, + ) + worker = py_trees.behaviours.TickCounter( + name="Counter", duration=1, completion_status=py_trees.common.Status.FAILURE + ) + root = py_trees.idioms.eventually_swiss( + name="Count with Result", + workers=[worker], + on_failure=set_result_false, + on_success=set_result_true, + ) + blackboard = py_trees.blackboard.Client() + blackboard.register_key(key="result", access=py_trees.common.Access.READ) + + root.tick_once() + print(py_trees.display.unicode_tree(root=root, show_status=True)) + print(py_trees.display.unicode_blackboard()) + + py_trees.tests.print_assert_banner() + with pytest.raises(KeyError) as context: # if raised, context survives + print("With blackboard.get('result') ...") + print("Expecting a KeyError with substring 'does not yet exist'\n") + blackboard.get("result") + # py_trees.tests.print_assert_details("KeyError raised", "raised", "not raised") + py_trees.tests.print_assert_details("KeyError raised", "yes", "yes") + assert "KeyError" == context.typename + py_trees.tests.print_assert_details( + " substring match", "does not yet exist", f"{context.value}" + ) + assert "does not yet exist" in str(context.value) + + root.tick_once() + print(py_trees.display.unicode_tree(root=root, show_status=True)) + print(py_trees.display.unicode_blackboard()) + + py_trees.tests.print_assert_banner() + py_trees.tests.print_assert_details( + text="BB Variable (flag)", + expected=False, + result=blackboard.result, + ) + assert not blackboard.result