# Path: robograph/datamodel/base/exceptions.py
# class NodeOutputLabelUndefinedError(Exception):
#     """
#     Marks that the label for a node's output is still not specified
#     """
#     pass


from robograph.datamodel.base.exceptions import NodeOutputLabelUndefinedError
        Updates _params with the _reqs entries that are found into context
        :param context: dict
        :return: None
        """
        for key in self._reqs:
            if context.get(key, None):
                self._params[key] = context[key]

    def set_output_label(self, output_label):
        """
        Specifies which tagging label to apply to this node's output value
        :param output_label: str
        :return: None
        """
        self._output_label = output_label

    def output(self):
        """
        Performs the magic! This is supposed to be implemented by subclasses
        :return: a value
        """
        pass

    def execute(self):
        """
        Outputs a dict containing the labeled result of this node execution.
        If the label is not yet defined, raises an exception
        :return: dict
        """
        if self._output_label is None:

# Path: robograph/datamodel/base/exceptions.py
# class NodeOutputLabelUndefinedError(Exception):
#     """
#     Marks that the label for a node's output is still not specified
#     """
#     pass


# Path: robograph/datamodel/base/node.py
from robograph.datamodel.base.exceptions import NodeOutputLabelUndefinedError

        Updates _params with the _reqs entries that are found into context
        :param context: dict
        :return: None
        """
        for key in self._reqs:
            if context.get(key, None):
                self._params[key] = context[key]

    def set_output_label(self, output_label):
        """
        Specifies which tagging label to apply to this node's output value
        :param output_label: str
        :return: None
        """
        self._output_label = output_label

    def output(self):
        """
        Performs the magic! This is supposed to be implemented by subclasses
        :return: a value
        """
        pass

    def execute(self):
        """
        Outputs a dict containing the labeled result of this node execution.
        If the label is not yet defined, raises an exception
        :return: dict
        """
        if self._output_label is None:

            raise NodeOutputLabelUndefinedError()