weaver.processes.wps_workflow
Module Contents
- weaver.processes.wps_workflow.default_make_tool(toolpath_object: weaver.typedefs.CWL_ToolPathObject, loading_context: cwltool.context.LoadingContext, package_process: weaver.processes.wps_package.WpsPackage) cwltool.process.Process [source]
Generate the tool class object from the CWL definition to handle its execution.
Warning
Package
cwltool
introduces explicit typing definitions withmypy_extensions
. This can causeTypeError("interpreted classes cannot inherit from compiled")
when usingcwltool.process.Process
as base class for our custom definitions below. To avoid the error, we must enforce the type usingcast()
.
- class weaver.processes.wps_workflow.WpsWorkflow(toolpath_object: weaver.typedefs.CWL_ToolPathObject, loading_context: cwltool.context.LoadingContext, package_process: weaver.processes.wps_package.WpsPackage)[source]
Definition of a CWL
workflow
that can executeWPS
application packages as intermediate job steps.Steps are expected to be defined as individual
weaver.processes.wps_package.WpsPackage
references.Initialize this CommandLineTool.
- job(job_order: cwltool.utils.CWLObjectType, output_callbacks: Callable[[Any, Any], Any], runtime_context: cwltool.context.RuntimeContext) cwltool.utils.JobsGeneratorType [source]
Workflow job generator.
- Parameters:
job_order – inputs of the job submission
output_callbacks – method to fetch step outputs and corresponding step details
runtime_context – configs about execution environment
- Returns:
- collect_output(schema: cwltool.utils.CWLObjectType, builder: cwltool.builder.Builder, outdir: str, fs_access: cwltool.stdfsaccess.StdFsAccess, compute_checksum: bool = True) cwltool.utils.CWLOutputType | None [source]
Collect outputs from the step Process following its execution.
Note
Because the staging operation following remote Process execution nests each output under a directory name matching respective output IDs, globs must be update with that modified nested directory as well.
- class weaver.processes.wps_workflow.WpsWorkflowJob(builder: cwltool.builder.Builder, job_order: cwltool.utils.CWLObjectType, make_path_mapper: Callable[Ellipsis, cwltool.pathmapper.PathMapper], requirements: weaver.typedefs.CWL_RequirementsList, hints: weaver.typedefs.CWL_RequirementsList, name: str, wps_process: weaver.processes.wps_process_base.WpsProcessInterface, expected_outputs: List[weaver.typedefs.CWL_Output_Type])[source]
Base class for get_requirement().
Initialize the job object.
- _resolve_expected_output_files(expected_outputs: List[weaver.typedefs.CWL_Output_Type]) None [source]
Finds the
{id: glob-pattern}
for any eventual output files to collect from the Workflow step.- Parameters:
expected_outputs – All potential output definitions the step defines.
- Returns:
Resolved output locations to look for result files, considering the nested Output-ID path.
- _retrieve_secret_inputs(runtime_context: cwltool.context.RuntimeContext) weaver.typedefs.CWL_RuntimeInputsMap [source]
Retrieve the job inputs with reverse resolution of any secrets defined in the store.
Because the remote Process (of any type) will not have the local runtime store definition, they cannot themselves resolve the original values.
Warning
Any following steps after this call must be mindful of what they log to avoid leaking secrets.
- collect_literal_outputs(results: weaver.typedefs.JobResults) weaver.typedefs.CWL_Results [source]
Collects the literal values provided as output.
Typical CWL applications (i.e: the ones not implemented by derived
WpsProcessInterface
) will only return outputs fromFile
/Directory
, or a literal inferred by some JavaScript expression or loaded by contents from another source. Because of this, literal never needs to be collected in these cases. Since a Process derived fromWpsProcessInterface
can directly return literal data, their values must be explicit chained for following Workflow steps.