cwltool.command_line_tool

Implementation of CommandLineTool.

Attributes

OutputPortsType

Exceptions

ParameterOutputWorkflowException

Common base class for all non-exit exceptions.

Classes

PathCheckingMode

What characters are allowed in path names.

ExpressionJob

Job for ExpressionTool.

ExpressionTool

Abstract CWL Process.

AbstractOperation

Abstract CWL Process.

CallbackJob

Callback Job class, used by CommandLineTool.job().

CommandLineTool

Abstract CWL Process.

Functions

remove_path(f)

Remove any 'path' property, if present.

revmap_file(builder, outdir, f)

Remap a file from internal path to external path.

check_adjust(accept_re, builder, file_o)

Map files to assigned path inside a container.

check_valid_locations(fs_access, ob)

default_make_path_mapper(reffiles, stagedir, ...)

Build a PathMapper for the given inputs.

Module Contents

class cwltool.command_line_tool.PathCheckingMode(*args, **kwds)

Bases: enum.Enum

Inheritance diagram of cwltool.command_line_tool.PathCheckingMode

What characters are allowed in path names.

We have the strict (default) mode and the relaxed mode.

STRICT

Accepts names that contain one or more of the following:

\w

unicode word characters

this includes most characters that can be part of a word in any language, as well as numbers and the underscore

.

a literal period

+

a literal plus sign

,

a literal comma

-

a literal minus sign

:

a literal colon

@

a literal at-symbol

]

a literal end-square-bracket

^

a literal caret symbol

\u2600-\u26FF

matches a single character in the range between ☀ (index 9728) and ⛿ (index 9983)

\U0001f600-\U0001f64f

matches a single character in the range between 😀 (index 128512) and 🙏 (index 128591)

Note: the following characters are intentionally not included:

  1. reserved words in POSIX: !, {, }

  2. POSIX metacharacters listed in the CWL standard as okay to reject: |, &, ;, <, >, (, ), $, `, ", ', <space>, <tab>, <newline>.

    (In accordance with https://www.commonwl.org/v1.0/CommandLineTool.html#File under “path” )

  3. POSIX path separator: \

    (also listed at https://www.commonwl.org/v1.0/CommandLineTool.html#File under “path”)

  4. Additional POSIX metacharacters: *, ?, [, #, ˜, =, %.

TODO: switch to https://pypi.org/project/regex/ and use \p{Extended_Pictographic} instead of the manual emoji ranges

RELAXED

Accept anything.

class cwltool.command_line_tool.ExpressionJob(builder, script, output_callback, requirements, hints, outdir=None, tmpdir=None)

Job for ExpressionTool.

Parameters:
builder
requirements
hints
output_callback
outdir = None
tmpdir = None
script
prov_obj: cwltool.cwlprov.provenance_profile.ProvenanceProfile | None = None
run(runtimeContext, tmpdir_lock=None)
Parameters:
Return type:

None

class cwltool.command_line_tool.ExpressionTool(toolpath_object, loadingContext)

Bases: cwltool.process.Process

Inheritance diagram of cwltool.command_line_tool.ExpressionTool

Abstract CWL Process.

Parameters:
job(job_order, output_callbacks, runtimeContext)
Parameters:
Return type:

collections.abc.Generator[ExpressionJob, None, None]

class cwltool.command_line_tool.AbstractOperation(toolpath_object, loadingContext)

Bases: cwltool.process.Process

Inheritance diagram of cwltool.command_line_tool.AbstractOperation

Abstract CWL Process.

Parameters:
job(job_order, output_callbacks, runtimeContext)
Parameters:
Return type:

cwltool.utils.JobsGeneratorType

cwltool.command_line_tool.remove_path(f)

Remove any ‘path’ property, if present.

Parameters:

f (cwl_utils.types.CWLFileType | cwl_utils.types.CWLDirectoryType)

Return type:

None

cwltool.command_line_tool.revmap_file(builder, outdir, f)

Remap a file from internal path to external path.

For Docker, this maps from the path inside tho container to the path outside the container. Recognizes files in the pathmapper or remaps internal output directories to the external directory.

Parameters:
Return type:

cwl_utils.types.CWLFileType | cwl_utils.types.CWLDirectoryType

class cwltool.command_line_tool.CallbackJob(job, output_callback, cachebuilder, jobcache)

Callback Job class, used by CommandLineTool.job().

Parameters:
job
output_callback
cachebuilder
outdir
prov_obj: cwltool.cwlprov.provenance_profile.ProvenanceProfile | None = None
run(runtimeContext, tmpdir_lock=None)
Parameters:
Return type:

None

cwltool.command_line_tool.check_adjust(accept_re, builder, file_o)

Map files to assigned path inside a container.

We need to also explicitly walk over input, as implicit reassignment doesn’t reach everything in builder.bindings

Parameters:
Return type:

cwl_utils.types.CWLFileType | cwl_utils.types.CWLDirectoryType

cwltool.command_line_tool.check_valid_locations(fs_access, ob)
Parameters:
Return type:

None

cwltool.command_line_tool.OutputPortsType
exception cwltool.command_line_tool.ParameterOutputWorkflowException(msg, port)

Bases: cwltool.errors.WorkflowException

Inheritance diagram of cwltool.command_line_tool.ParameterOutputWorkflowException

Common base class for all non-exit exceptions.

Parameters:
msg
port
__str__()

Return str(self).

Return type:

str

cwltool.command_line_tool.default_make_path_mapper(reffiles, stagedir, runtimeContext, separateDirs)

Build a PathMapper for the given inputs.

The concrete class is taken from path_mapper (defaulting to PathMapper), so a custom PathMapper can be supplied by setting that attribute on the RuntimeContext – mirroring the make_fs_access extension point – without subclassing CommandLineTool.

Parameters:
Return type:

cwltool.pathmapper.PathMapper

class cwltool.command_line_tool.CommandLineTool(toolpath_object, loadingContext)

Bases: cwltool.process.Process

Inheritance diagram of cwltool.command_line_tool.CommandLineTool

Abstract CWL Process.

Parameters:
prov_obj
path_check_mode: PathCheckingMode
make_job_runner(runtimeContext)

Return the correct CommandLineJob class given the container settings.

Parameters:

runtimeContext (cwltool.context.RuntimeContext)

Return type:

type[cwltool.job.JobBase]

make_path_mapper(reffiles, stagedir, runtimeContext, separateDirs)

Create the PathMapper for these inputs.

Delegates to default_make_path_mapper(), which selects the concrete PathMapper class from path_mapper. This is an instance method (not a @staticmethod) so that subclasses of CommandLineTool may override it; being a regular method it also dispatches correctly when cwltool is compiled with mypyc.

Parameters:
Return type:

cwltool.pathmapper.PathMapper

updatePathmap(outdir, pathmap, fn)

Update a PathMapper with a CWL File or Directory object.

Parameters:
Return type:

None

job(job_order, output_callbacks, runtimeContext)
Parameters:
Return type:

collections.abc.Generator[cwltool.job.JobBase | CallbackJob, None, None]

collect_output_ports(ports, builder, outdir, rcode, compute_checksum=True, jobname='', readers=None)
Parameters:
Return type:

OutputPortsType

collect_output(schema, builder, outdir, fs_access, compute_checksum=True)
Parameters:
Return type:

cwl_utils.types.CWLOutputType | None