# Path: ebu_tt_live/config/common.py
# class ConfigurableComponent(RequiredConfig):
#     def __init__(self, config, local_config, backend=None):
#     def backend(self):
#     def configure_component(cls, config, local_config, **kwargs):
#     def _resolve_runtime_variable_match(cls, matchobj):
#     def resolve_runtime_variables(cls, str_parameter):
#     def start(self):
#     def stop(self):
# def install_app(app_obj):
# 
# Path: ebu_tt_live/strings.py
# ERR_CONF_WS_SERVER_PROTOCOL_MISMATCH = gettext('The address: {address} is in use by another server with different protocol version')
# 
# Path: ebu_tt_live/errors.py
# class ConfigurationError(Exception):
#     pass
# 
# Path: ebu_tt_live/strings.py
# ERR_NO_SUCH_COMPONENT = gettext('No such component: {type_name}')


import logging
from .common import ConfigurableComponent, Namespace, RequiredConfig
from ebu_tt_live.strings import ERR_CONF_WS_SERVER_PROTOCOL_MISMATCH
from ebu_tt_live.errors import ConfigurationError
from ebu_tt_live.strings import ERR_NO_SUCH_COMPONENT
        from ebu_tt_live.twisted import websocket, reactor, task, TwistedWSPushProducer, TwistedWSConsumer, \
            TwistedConsumer, TwistedPullProducer
        self._components_to_start = []
        self._all_configurators = set()

    def register_configurator(self, configurator):
        self._all_configurators.add(configurator)

    def start(self):
        for item in self._all_configurators:
            # Start all the components
            if item != self and item in self._components_to_start:
                log.info('Starting component: {}'.format(item))
                item.start()

    def register_component_start(self, component):
        self._components_to_start.append(component)
        log.info(self._components_to_start)

    def call_once(self, func, delay=0.0, result_callback=None, error_callback=None, *args, **kwargs):
        raise NotImplementedError()

    def call_periodically(self, func, interval=0.0, result_callback=None, error_callback=None, *args, **kwargs):
        raise NotImplementedError()


class DummyBackend(BackendBase):

    _simple_calls = None
    _periodic_calls = None

    def __init__(self, config, local_config):

# Path: ebu_tt_live/config/common.py
# class ConfigurableComponent(RequiredConfig):
#     def __init__(self, config, local_config, backend=None):
#     def backend(self):
#     def configure_component(cls, config, local_config, **kwargs):
#     def _resolve_runtime_variable_match(cls, matchobj):
#     def resolve_runtime_variables(cls, str_parameter):
#     def start(self):
#     def stop(self):
# def install_app(app_obj):
# 
# Path: ebu_tt_live/strings.py
# ERR_CONF_WS_SERVER_PROTOCOL_MISMATCH = gettext('The address: {address} is in use by another server with different protocol version')
# 
# Path: ebu_tt_live/errors.py
# class ConfigurationError(Exception):
#     pass
# 
# Path: ebu_tt_live/strings.py
# ERR_NO_SUCH_COMPONENT = gettext('No such component: {type_name}')


# Path: ebu_tt_live/config/backend.py
import logging
from .common import ConfigurableComponent, Namespace, RequiredConfig
from ebu_tt_live.strings import ERR_CONF_WS_SERVER_PROTOCOL_MISMATCH
from ebu_tt_live.errors import ConfigurationError
from ebu_tt_live.strings import ERR_NO_SUCH_COMPONENT
        from ebu_tt_live.twisted import websocket, reactor, task, TwistedWSPushProducer, TwistedWSConsumer, \
            TwistedConsumer, TwistedPullProducer

        self._components_to_start = []
        self._all_configurators = set()

    def register_configurator(self, configurator):
        self._all_configurators.add(configurator)

    def start(self):
        for item in self._all_configurators:
            # Start all the components
            if item != self and item in self._components_to_start:
                log.info('Starting component: {}'.format(item))
                item.start()

    def register_component_start(self, component):
        self._components_to_start.append(component)
        log.info(self._components_to_start)

    def call_once(self, func, delay=0.0, result_callback=None, error_callback=None, *args, **kwargs):
        raise NotImplementedError()

    def call_periodically(self, func, interval=0.0, result_callback=None, error_callback=None, *args, **kwargs):
        raise NotImplementedError()


class DummyBackend(BackendBase):

    _simple_calls = None
    _periodic_calls = None

    def __init__(self, config, local_config):

        self._simple_calls = []