# Path: apiritif/action_plugins.py
# class BaseActionHandler(metaclass=ABCMeta):
# 
#     YAML_ACTION_START = 'yaml_action_start'
#     YAML_ACTION_END = 'yaml_action_end'
#     TEST_CASE_START = 'test_case_start'
#     TEST_CASE_STOP = 'test_case_stop'
# 
#     def __init__(self, **kwargs):
#         pass
# 
#     @abstractmethod
#     def startup(self):
#         pass
# 
#     @abstractmethod
#     def handle(self, session_id, action_type, action):
#         pass
# 
#     @abstractmethod
#     def finalize(self):
#         pass


from threading import local
from apiritif.action_plugins import BaseActionHandler
        only_one = False
        if isinstance(names, str):
            names = [names]
            only_one = True
        kwargs = [_thread_local.kwargs.get(key) for key in names]
        if only_one:
            return kwargs[0]
        else:
            return kwargs

    elif hasattr(_thread_local, "args"):
        return _thread_local.args


def get_transaction_handlers():
    transaction_handlers = get_from_thread_store('transaction_handlers')
    return transaction_handlers


def clean_transaction_handlers():
    handlers = {'enter': [], 'exit': []}
    _thread_local.kwargs["transaction_handlers"] = handlers


def set_transaction_handlers(handlers):
    put_into_thread_store(transaction_handlers=handlers)


def external_handler(session_id, action_type, action):
    for handler in get_action_handlers():

# Path: apiritif/action_plugins.py
# class BaseActionHandler(metaclass=ABCMeta):
# 
#     YAML_ACTION_START = 'yaml_action_start'
#     YAML_ACTION_END = 'yaml_action_end'
#     TEST_CASE_START = 'test_case_start'
#     TEST_CASE_STOP = 'test_case_stop'
# 
#     def __init__(self, **kwargs):
#         pass
# 
#     @abstractmethod
#     def startup(self):
#         pass
# 
#     @abstractmethod
#     def handle(self, session_id, action_type, action):
#         pass
# 
#     @abstractmethod
#     def finalize(self):
#         pass


# Path: apiritif/thread.py
from threading import local
from apiritif.action_plugins import BaseActionHandler

        only_one = False
        if isinstance(names, str):
            names = [names]
            only_one = True
        kwargs = [_thread_local.kwargs.get(key) for key in names]
        if only_one:
            return kwargs[0]
        else:
            return kwargs

    elif hasattr(_thread_local, "args"):
        return _thread_local.args


def get_transaction_handlers():
    transaction_handlers = get_from_thread_store('transaction_handlers')
    return transaction_handlers


def clean_transaction_handlers():
    handlers = {'enter': [], 'exit': []}
    _thread_local.kwargs["transaction_handlers"] = handlers


def set_transaction_handlers(handlers):
    put_into_thread_store(transaction_handlers=handlers)


def external_handler(session_id, action_type, action):
    for handler in get_action_handlers():

        if isinstance(handler, BaseActionHandler):