# cwltool.job

## Attributes

`CollectOutputsType` |
`needs_shell_quoting_re` |
`FORCE_SHELLED_POPEN` |
`SHELL_COMMAND_TEMPLATE` |
`CONTROL_CODE_RE` |

## Classes

`JobBase` | Base class for get_requirement().
`CommandLineJob` | Base class for get_requirement().
`ContainerCommandLineJob` | Commandline job using containers.

## Functions

`relink_initialworkdir`(pathmapper, host_outdir, ...[, ...]) |
`neverquote`(string[, pos, endpos]) | No-op.

## Module Contents

cwltool.job.CollectOutputsType

cwltool.job.needs_shell_quoting_re

cwltool.job.FORCE_SHELLED_POPEN

cwltool.job.SHELL_COMMAND_TEMPLATE = Multiline-String
  Show Value

      """#!/bin/bash
      python3 "run_job.py" "job.json"
      """

cwltool.job.relink_initialworkdir(pathmapper, host_outdir, container_outdir, inplace_update=False)
  Parameters:

    - pathmapper (cwltool.pathmapper.PathMapper)

    - host_outdir (str)

    - container_outdir (str)

    - inplace_update (bool)

  Return type:

    None

cwltool.job.neverquote(string, pos=0, endpos=0)

  No-op.

  Parameters:

    - string (str)

    - pos (int)

    - endpos (int)

  Return type:

    re.Match[str] | None

class cwltool.job.JobBase(builder, joborder, make_path_mapper, requirements, hints, name)

  Bases: `cwltool.utils.HasReqsHints`

  Base class for get_requirement().

  Parameters:

    - builder (cwltool.builder.Builder)

    - joborder (cwltool.utils.CWLObjectType)

    - make_path_mapper (collections.abc.Callable[[list[cwltool.utils.CWLObjectType], str, cwltool.context.RuntimeContext, bool], cwltool.pathmapper.PathMapper])

    - requirements (list[cwltool.utils.CWLObjectType])

    - hints (list[cwltool.utils.CWLObjectType])

    - name (str)

  builder
  joborder
  stdin: str | None = None
  stderr: str | None = None
  stdout: str | None = None
  successCodes: collections.abc.Iterable[int] = []
  temporaryFailCodes: collections.abc.Iterable[int] = []
  permanentFailCodes: collections.abc.Iterable[int] = []
  requirements
  hints
  name
  command_line: list[str] = []
  pathmapper
  make_path_mapper
  generatemapper: cwltool.pathmapper.PathMapper | None = None
  collect_outputs = None
  output_callback: cwltool.utils.OutputCallbackType | None = None
  outdir = ''
  tmpdir = ''
  environment: collections.abc.MutableMapping[str, str]
  generatefiles: cwltool.utils.DirectoryType
  stagedir: str | None = None
  inplace_update = False
  timelimit: int | None = None
  networkaccess: bool = False
  mpi_procs: int | None = None
  __repr__()

    Represent this Job object.

    Return type:

      str

  abstractmethod run(runtimeContext, tmpdir_lock=None)
    Parameters:

      - runtimeContext (cwltool.context.RuntimeContext)

      - tmpdir_lock (Union[threading.Lock, None])

    Return type:

      None

  static extract_environment(runtimeContext, envVarReq)

    Extract environment variables that should be preserved.

    Parameters:

      - runtimeContext (cwltool.context.RuntimeContext)

      - envVarReq (collections.abc.Mapping[str, str])

    Return type:

      collections.abc.Mapping[str, str]

  prepare_environment(runtimeContext, envVarReq)

    Set up environment variables.

    Here we prepare the environment for the job, based on any preserved variables and EnvVarRequirement. Later, changes due to MPIRequirement, Secrets, or SoftwareRequirement are applied (in that order).

    Parameters:

      - runtimeContext (cwltool.context.RuntimeContext)

      - envVarReq (collections.abc.Mapping[str, str])

    Return type:

      None

  process_monitor(sproc)

    Watch a process, logging its max memory usage.

    Parameters:

      sproc (subprocess.Popen[str])

    Return type:

      None

class cwltool.job.CommandLineJob(builder, joborder, make_path_mapper, requirements, hints, name)

  Bases: `JobBase`

  Base class for get_requirement().

  Parameters:

    - builder (cwltool.builder.Builder)

    - joborder (cwltool.utils.CWLObjectType)

    - make_path_mapper (collections.abc.Callable[[list[cwltool.utils.CWLObjectType], str, cwltool.context.RuntimeContext, bool], cwltool.pathmapper.PathMapper])

    - requirements (list[cwltool.utils.CWLObjectType])

    - hints (list[cwltool.utils.CWLObjectType])

    - name (str)

  run(runtimeContext, tmpdir_lock=None)
    Parameters:

      - runtimeContext (cwltool.context.RuntimeContext)

      - tmpdir_lock (Union[threading.Lock, None])

    Return type:

      None

cwltool.job.CONTROL_CODE_RE = '\\x1b\\[[0-9;]*[a-zA-Z]'

class cwltool.job.ContainerCommandLineJob(builder, joborder, make_path_mapper, requirements, hints, name)

  Bases: `JobBase`

  Commandline job using containers.

  Parameters:

    - builder (cwltool.builder.Builder)

    - joborder (cwltool.utils.CWLObjectType)

    - make_path_mapper (collections.abc.Callable[[list[cwltool.utils.CWLObjectType], str, cwltool.context.RuntimeContext, bool], cwltool.pathmapper.PathMapper])

    - requirements (list[cwltool.utils.CWLObjectType])

    - hints (list[cwltool.utils.CWLObjectType])

    - name (str)

  CONTAINER_TMPDIR: str = '/tmp'
  abstractmethod get_from_requirements(r, pull_image, force_pull, tmp_outdir_prefix, image_base_path=None)
    Parameters:

      - r (cwltool.utils.CWLObjectType)

      - pull_image (bool)

      - force_pull (bool)

      - tmp_outdir_prefix (str)

      - image_base_path (str | None)

    Return type:

      str | None

  abstractmethod create_runtime(env, runtime_context)

    Return the list of commands to run the selected container engine.

    Parameters:

      - env (collections.abc.MutableMapping[str, str])

      - runtime_context (cwltool.context.RuntimeContext)

    Return type:

      tuple[list[str], str | None]

  static append_volume(runtime, source, target, writable=False)
    Abstractmethod:

    Parameters:

      - runtime (list[str])

      - source (str)

      - target (str)

      - writable (bool)

    Return type:

      None

    Add binding arguments to the runtime list.

  abstractmethod add_file_or_directory_volume(runtime, volume, host_outdir_tgt)

    Append volume a file/dir mapping to the runtime option list.

    Parameters:

      - runtime (list[str])

      - volume (cwltool.pathmapper.MapperEnt)

      - host_outdir_tgt (str | None)

    Return type:

      None

  abstractmethod add_writable_file_volume(runtime, volume, host_outdir_tgt, tmpdir_prefix)

    Append a writable file mapping to the runtime option list.

    Parameters:

      - runtime (list[str])

      - volume (cwltool.pathmapper.MapperEnt)

      - host_outdir_tgt (str | None)

      - tmpdir_prefix (str)

    Return type:

      None

  abstractmethod add_writable_directory_volume(runtime, volume, host_outdir_tgt, tmpdir_prefix)

    Append a writable directory mapping to the runtime option list.

    Parameters:

      - runtime (list[str])

      - volume (cwltool.pathmapper.MapperEnt)

      - host_outdir_tgt (str | None)

      - tmpdir_prefix (str)

    Return type:

      None

  create_file_and_add_volume(runtime, volume, host_outdir_tgt, secret_store, tmpdir_prefix)

    Create the file and add a mapping.

    Parameters:

      - runtime (list[str])

      - volume (cwltool.pathmapper.MapperEnt)

      - host_outdir_tgt (str | None)

      - secret_store (cwltool.secrets.SecretStore | None)

      - tmpdir_prefix (str)

    Return type:

      str

  add_volumes(pathmapper, runtime, tmpdir_prefix, secret_store=None, any_path_okay=False)

    Append volume mappings to the runtime option list.

    Parameters:

      - pathmapper (cwltool.pathmapper.PathMapper)

      - runtime (list[str])

      - tmpdir_prefix (str)

      - secret_store (cwltool.secrets.SecretStore | None)

      - any_path_okay (bool)

    Return type:

      None

  run(runtimeContext, tmpdir_lock=None)
    Parameters:

      - runtimeContext (cwltool.context.RuntimeContext)

      - tmpdir_lock (Union[threading.Lock, None])

    Return type:

      None

  docker_monitor(cidfile, tmpdir_prefix, cleanup_cidfile, docker_exe, process)

    Record memory usage of the running Docker container.

    Parameters:

      - cidfile (str)

      - tmpdir_prefix (str)

      - cleanup_cidfile (bool)

      - docker_exe (str)

      - process (subprocess.Popen[str])

    Return type:

      None