"""
:mod:`zsl.application.modules.context_module`
---------------------------------------------
Application context describes the environment in which the application is run\
and is responsible for specific initializations on it.
"""
import logging
from injector import Module, singleton
from zsl.application.initialization_context import InitializationContext
from zsl.application.initializers.library_initializer import LibraryInitializer
from zsl.application.initializers.service_initializer import ServiceInitializer
from zsl.application.initializers.unittest_initializer import UnitTestInitializer
#: Initializers used in all applications
default_initializers = (LibraryInitializer, ServiceInitializer)
#: Initializers used in unit test applications
unittest_initializers = default_initializers + (UnitTestInitializer,)
[docs]
class DefaultContextModule(Module):
"""Adds default application context to current configuration."""
def _create_context(self):
logging.getLogger(__name__).debug("Creating default context.")
return InitializationContext(initializers=default_initializers)
[docs]
def configure(self, binder):
context = self._create_context()
binder.bind(InitializationContext, to=context, scope=singleton)
[docs]
class WorkerContextModule(DefaultContextModule):
"""Worker application context to current configuration."""
pass
[docs]
class TestContextModule(DefaultContextModule):
"""Test application context to current configuration"""
def _create_context(self):
return InitializationContext(unit_test=True, initializers=unittest_initializers)