Source code for flagman.actions.print

# -*- coding: utf-8 -*-
"""Print actions for flagman.

Most likely only useful for debugging.
"""
from time import sleep

from flagman.actions import Action
from flagman.exceptions import ActionClosed


[docs]class PrintAction(Action): """A simple Action that prints messages at the various stages of execution. (message: str) """
[docs] def set_up(self, msg: str) -> None: # type: ignore """Store the message to be printed and print "init" message. :param msg: the message """ self._msg = msg print('init')
[docs] def run(self) -> None: """Print the message.""" print(self._msg)
[docs] def tear_down(self) -> None: """Print "cleanup" message.""" print('cleanup')
[docs]class DelayedPrintAction(PrintAction): """An Action that prints messages at the various stages of execution and has a configurable delay in the run stage. (message: str, delay: int) """ # noqa: E501
[docs] def set_up(self, msg: str, delay: str) -> None: # type: ignore """Store the message and the delay. :param msg: the message :param delay: the delay in seconds """ self._delay = int(delay) super().set_up(msg)
[docs] def run(self) -> None: """Print the message, delay, and print a finished message.""" super().run() sleep(self._delay) print('finished delaying')
[docs]class PrintOnceAction(PrintAction): """An Action that prints a message once and then cleans up after itself. (message: str) """
[docs] def set_up(self, msg: str) -> None: # type: ignore """Store the message. :param msg: the message """ super().set_up(msg)
[docs] def run(self) -> None: """Print the message and close the action.""" super().run() self._close() raise ActionClosed('Only print once')