Source code for bobocep.cep.action.action

# Copyright (c) 2019-2023 r3w0p
# The following code can be redistributed and/or
# modified under the terms of the MIT License.

"""
Action definitions.
"""

from abc import ABC, abstractmethod
from typing import Tuple, Any

from bobocep import BoboError
from bobocep.cep.event import BoboEventComplex

_EXC_NAME_LEN = "name must have a length greater than 0"


[docs]class BoboActionError(BoboError): """ An action error. """
[docs]class BoboAction(ABC): """ An action. """
[docs] def __init__(self, name: str, *args, **kwargs): """ :param name: The action name. :param args: Action arguments. :param kwargs: Action keyword arguments. """ super().__init__() if len(name) == 0: raise BoboActionError(_EXC_NAME_LEN) self._name = name self._args = args self._kwargs = kwargs
@property def name(self) -> str: """ :return: Action name. """ return self._name
[docs] @abstractmethod def execute(self, event: BoboEventComplex) -> Tuple[bool, Any]: """ :param event: The complex event that triggered action. :return: Whether the action execution was successful, and any additional data. """