in aws_lambda_builders/builder.py [0:0]
def __init__(self, language, dependency_manager, application_framework, supported_workflows=None):
"""
Initialize the builder.
:type supported_workflows: list
:param supported_workflows:
Optional list of workflow modules that should be loaded. By default we load all the workflows bundled
with this library. This property is primarily used for testing. But in future it could be used to
dynamically load user defined workflows.
If set to None, we will load the default workflow modules.
If set to empty list, we will **not** load any modules. Pass an empty list if the workflows
were already loaded by the time this class is instantiated.
:raises lambda_builders.exceptions.WorkflowNotFoundError: If a workflow for given capabilities is not found
"""
# Load defaults if necessary. We check for `None` explicitly because callers could pass an empty list
# if they do not want to load any modules. This supports the case where workflows are already loaded and
# don't need to be loaded again.
self.supported_workflows = _SUPPORTED_WORKFLOWS if supported_workflows is None else supported_workflows
for workflow_module in self.supported_workflows:
LOG.debug("Loading workflow module '%s'", workflow_module)
# If a module is already loaded, this call is pretty much a no-op. So it is okay to keep loading again.
importlib.import_module(workflow_module)
self.capability = Capability(
language=language, dependency_manager=dependency_manager, application_framework=application_framework
)
self.selected_workflow_cls = get_workflow(self.capability)
LOG.debug("Found workflow '%s' to support capabilities '%s'", self.selected_workflow_cls.NAME, self.capability)