# Path: pipelines/pipeline/exceptions.py
# class PipelineError(RuntimeError):
#     pass
# 
# Path: pipelines/pipeline/task.py
# class TaskResult(dict):
#     def __init__(self, status, message='', data={}, return_obj={}):
#         self['status'] = status
#         self['message'] = message
#         self['data'] = data
#         self['return_obj'] = return_obj
# 
#     @property
#     def status(self):
#         return self.get('status')
# 
#     @property
#     def message(self):
#         return self.get('message')
# 
#     @property
#     def data(self):
#         return self.get('data')
# 
#     @property
#     def return_obj(self):
#         return self.get('return_obj')
# 
#     def is_successful(self):
#         return self.status == EXECUTION_SUCCESSFUL
# 
# Path: pipelines/plugin/base_plugin.py
# class BasePlugin(object):
#     name = 'undefined'
#     hooks = []
#     dry_run = False
# 
#     @classmethod
#     def from_dict(cls, conf_dict, event_mgr=None):
#         return cls()


from pipelines.pipeline.exceptions import PipelineError
from pipelines.pipeline.task import TaskResult
from pipelines.plugin.base_plugin import BasePlugin

class BaseExecutorPlugin(BasePlugin):
    dry_run = False

    def call(self, *args, **kwargs):
        result = self.execute(*args, **kwargs)

# Path: pipelines/pipeline/exceptions.py
# class PipelineError(RuntimeError):
#     pass
# 
# Path: pipelines/pipeline/task.py
# class TaskResult(dict):
#     def __init__(self, status, message='', data={}, return_obj={}):
#         self['status'] = status
#         self['message'] = message
#         self['data'] = data
#         self['return_obj'] = return_obj
# 
#     @property
#     def status(self):
#         return self.get('status')
# 
#     @property
#     def message(self):
#         return self.get('message')
# 
#     @property
#     def data(self):
#         return self.get('data')
# 
#     @property
#     def return_obj(self):
#         return self.get('return_obj')
# 
#     def is_successful(self):
#         return self.status == EXECUTION_SUCCESSFUL
# 
# Path: pipelines/plugin/base_plugin.py
# class BasePlugin(object):
#     name = 'undefined'
#     hooks = []
#     dry_run = False
# 
#     @classmethod
#     def from_dict(cls, conf_dict, event_mgr=None):
#         return cls()


# Path: pipelines/plugins/base_executor.py
from pipelines.pipeline.exceptions import PipelineError
from pipelines.pipeline.task import TaskResult
from pipelines.plugin.base_plugin import BasePlugin


class BaseExecutorPlugin(BasePlugin):
    dry_run = False

    def call(self, *args, **kwargs):
        result = self.execute(*args, **kwargs)

        if not isinstance(result, TaskResult):