def get_workflow_config(runtime, code_dir, project_dir):
selectors_by_runtime = {<EOL>"<STR_LIT>": BasicWorkflowSelector(PYTHON_PIP_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(PYTHON_PIP_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(PYTHON_PIP_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(NODEJS_NPM_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(NODEJS_NPM_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(NODEJS_NPM_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(RUBY_BUNDLER_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(DOTNET_CLIPACKAGE_CONFIG),<EOL>"<STR_LIT>": BasicWorkflowSelector(DOTNET_CLIPACKAGE_CONFIG),<EOL>"<STR_LIT>": ManifestWorkflowSelector([<EOL>JAVA_GRADLE_CONFIG._replace(executable_search_paths=[code_dir, project_dir]),<EOL>JAVA_KOTLIN_GRADLE_CONFIG._replace(executable_search_paths=[code_dir, project_dir]),<EOL>JAVA_MAVEN_CONFIG<EOL>]),<EOL>}<EOL>if runtime not in selectors_by_runtime:<EOL><INDENT>raise UnsupportedRuntimeException("<STR_LIT>".format(runtime))<EOL><DEDENT>selector = selectors_by_runtime[runtime]<EOL>try:<EOL><INDENT>config = selector.get_config(code_dir, project_dir)<EOL>return config<EOL><DEDENT>except ValueError as ex:<EOL><INDENT>raise UnsupportedRuntimeException("<STR_LIT>"<EOL>.format(runtime, str(ex)))<EOL><DEDENT>
Get a workflow config that corresponds to the runtime provided. This method examines contents of the project
and code directories to determine the most appropriate workflow for the given runtime. Currently the decision is
based on the presence of a supported manifest file. For runtimes that have more than one workflow, we choose a
workflow by examining ``code_dir`` followed by ``project_dir`` for presence of a supported manifest.

Parameters
----------
runtime str
    The runtime of the config

code_dir str
    Directory where Lambda function code is present

project_dir str
    Root of the Serverless application project.

Returns
-------
namedtuple(Capability)
    namedtuple that represents the Builder Workflow Config