Source code for toil.options.cwl

import os
from argparse import ArgumentParser

from configargparse import SUPPRESS

from toil.version import baseVersion


[docs] def add_cwl_options(parser: ArgumentParser, suppress: bool = True) -> None: """ Add CWL options to the parser. This only adds nonpositional CWL arguments. :param parser: Parser to add options to :param suppress: Suppress help output :return: None """ suppress_help = SUPPRESS if suppress else None parser.add_argument("--not-strict", action="store_true", help=suppress_help) parser.add_argument( "--enable-dev", action="store_true", help=suppress_help or suppress_help or "Enable loading and running development versions of CWL", ) parser.add_argument( "--enable-ext", action="store_true", help=suppress_help or "Enable loading and running 'cwltool:' extensions to the CWL standards.", default=False, ) parser.add_argument("--quiet", dest="quiet", action="store_true", default=False, help=suppress_help) parser.add_argument("--basedir", type=str, help=suppress_help) # TODO: Might be hard-coded? parser.add_argument("--outdir", type=str, default=None, help=suppress_help) parser.add_argument("--version", action="version", version=baseVersion, help=suppress_help or "show program's version number and exit") parser.add_argument( "--log-dir", type=str, default="", help=suppress_help or "Log your tools stdout/stderr to this location outside of container", ) # this is as a result of suppressed help statements not working well with mutually_exclusive_groups, which will # cause an assertion error # https://github.com/python/cpython/issues/62090 dockergroup = parser.add_mutually_exclusive_group() if not suppress_help else parser.add_argument_group() dockergroup.add_argument( "--user-space-docker-cmd", help=suppress_help or "(Linux/OS X only) Specify a user space docker command (like " "udocker or dx-docker) that will be used to call 'pull' and 'run'", ) dockergroup.add_argument( "--singularity", action="store_true", default=False, help=suppress_help or "Use Singularity runtime for running containers. " "Requires Singularity v2.6.1+ and Linux with kernel version v3.18+ or " "with overlayfs support backported.", ) dockergroup.add_argument( "--podman", action="store_true", default=False, help=suppress_help or "Use Podman runtime for running containers. ", ) dockergroup.add_argument( "--no-container", action="store_true", help=suppress_help or "Do not execute jobs in a " "Docker container, even when `DockerRequirement` " "is specified under `hints`.", ) dockergroup.add_argument( "--leave-container", action="store_false", default=True, help=suppress_help or "Do not delete Docker container used by jobs after they exit", dest="rm_container", ) extra_dockergroup = parser.add_argument_group() extra_dockergroup.add_argument( "--custom-net", help=suppress_help or "Specify docker network name to pass to docker run command", ) cidgroup = parser.add_argument_group( "Options for recording the Docker container identifier into a file." ) cidgroup.add_argument( # Disabled as containerid is now saved by default "--record-container-id", action="store_true", default=False, help=suppress_help or SUPPRESS, dest="record_container_id", ) cidgroup.add_argument( "--cidfile-dir", type=str, help=suppress_help or "Store the Docker container ID into a file in the specified directory.", default=None, dest="cidfile_dir", ) cidgroup.add_argument( "--cidfile-prefix", type=str, help=suppress_help or "Specify a prefix to the container ID filename. " "Final file name will be followed by a timestamp. " "The default is no prefix.", default=None, dest="cidfile_prefix", ) parser.add_argument( "--preserve-environment", type=str, nargs="+", help=suppress_help or "Preserve specified environment variables when running" " CommandLineTools", metavar=("VAR1 VAR2"), default=("PATH",), dest="preserve_environment", ) parser.add_argument( "--preserve-entire-environment", action="store_true", help=suppress_help or "Preserve all environment variable when running CommandLineTools.", default=False, dest="preserve_entire_environment", ) parser.add_argument( "--destBucket", type=str, help=suppress_help or "Specify a cloud bucket endpoint for output files.", ) parser.add_argument("--beta-dependency-resolvers-configuration", default=None, help=suppress_help) parser.add_argument("--beta-dependencies-directory", default=None, help=suppress_help) parser.add_argument("--beta-use-biocontainers", default=None, action="store_true", help=suppress_help) parser.add_argument("--beta-conda-dependencies", default=None, action="store_true", help=suppress_help) parser.add_argument( "--tmpdir-prefix", type=str, help=suppress_help or "Path prefix for temporary directories", default=None, ) parser.add_argument( "--tmp-outdir-prefix", type=str, help=suppress_help or "Path prefix for intermediate output directories", default=None, ) parser.add_argument( "--force-docker-pull", action="store_true", default=False, dest="force_docker_pull", help=suppress_help or "Pull latest docker image even if it is locally present", ) parser.add_argument( "--no-match-user", action="store_true", default=False, help=suppress_help or "Disable passing the current uid to `docker run --user`", ) parser.add_argument( "--no-read-only", action="store_true", default=False, help=suppress_help or "Do not set root directory in the container as read-only", ) parser.add_argument( "--strict-memory-limit", action="store_true", help=suppress_help or "When running with " "software containers and the Docker engine, pass either the " "calculated memory allocation from ResourceRequirements or the " "default of 1 gigabyte to Docker's --memory option.", ) parser.add_argument( "--strict-cpu-limit", action="store_true", help=suppress_help or "When running with " "software containers and the Docker engine, pass either the " "calculated cpu allocation from ResourceRequirements or the " "default of 1 core to Docker's --cpu option. " "Requires docker version >= v1.13.", ) parser.add_argument( "--relax-path-checks", action="store_true", default=False, help=suppress_help or "Relax requirements on path names to permit " "spaces and hash characters.", dest="relax_path_checks", ) parser.add_argument( "--default-container", help=suppress_help or "Specify a default docker container that will be " "used if the workflow fails to specify one.", ) parser.add_argument( "--disable-validate", dest="do_validate", action="store_false", default=True, help=suppress_help or SUPPRESS, ) parser.add_argument( "--fast-parser", dest="fast_parser", action="store_true", default=False, help=suppress_help or SUPPRESS, ) # same workaround as dockergroup checkgroup = parser.add_mutually_exclusive_group() if not suppress_help else parser.add_argument_group() checkgroup.add_argument( "--compute-checksum", action="store_true", default=True, help=suppress_help or "Compute checksum of contents while collecting outputs", dest="compute_checksum", ) checkgroup.add_argument( "--no-compute-checksum", action="store_false", help=suppress_help or "Do not compute checksum of contents while collecting outputs", dest="compute_checksum", ) parser.add_argument( "--eval-timeout", help=suppress_help or "Time to wait for a Javascript expression to evaluate before giving " "an error, default 20s.", type=float, default=20, ) parser.add_argument( "--overrides", type=str, default=None, help=suppress_help or "Read process requirement overrides from file.", ) parser.add_argument( "--mpi-config-file", type=str, default=None, help=suppress_help or "Platform specific configuration for MPI (parallel " "launcher, its flag etc). See the cwltool README " "section 'Running MPI-based tools' for details of the format: " "https://github.com/common-workflow-language/cwltool#running-mpi-based-tools-that-need-to-be-launched", ) parser.add_argument( "--bypass-file-store", action="store_true", default=False, help=suppress_help or "Do not use Toil's file store and assume all " "paths are accessible in place from all nodes.", dest="bypass_file_store", ) parser.add_argument( "--reference-inputs", action="store_true", default=False, help=suppress_help or "Do not copy remote inputs into Toil's file " "store and assume they are accessible in place from " "all nodes.", dest="reference_inputs", ) parser.add_argument( "--disable-streaming", action="store_true", default=False, help=suppress_help or "Disable file streaming for files that have 'streamable' flag True", dest="disable_streaming", ) provgroup = parser.add_argument_group( "Options for recording provenance information of the execution" ) provgroup.add_argument( "--provenance", help=suppress_help or "Save provenance to specified folder as a " "Research Object that captures and aggregates " "workflow execution and data products.", type=str, ) provgroup.add_argument( "--enable-user-provenance", default=False, action="store_true", help=suppress_help or "Record user account info as part of provenance.", dest="user_provenance", ) provgroup.add_argument( "--disable-user-provenance", default=False, action="store_false", help=suppress_help or "Do not record user account info in provenance.", dest="user_provenance", ) provgroup.add_argument( "--enable-host-provenance", default=False, action="store_true", help=suppress_help or "Record host info as part of provenance.", dest="host_provenance", ) provgroup.add_argument( "--disable-host-provenance", default=False, action="store_false", help=suppress_help or "Do not record host info in provenance.", dest="host_provenance", ) provgroup.add_argument( "--orcid", help=suppress_help or "Record user ORCID identifier as part of " "provenance, e.g. https://orcid.org/0000-0002-1825-0097 " "or 0000-0002-1825-0097. Alternatively the environment variable " "ORCID may be set.", dest="orcid", default=os.environ.get("ORCID", ""), type=str, ) provgroup.add_argument( "--full-name", help=suppress_help or "Record full name of user as part of provenance, " "e.g. Josiah Carberry. You may need to use shell quotes to preserve " "spaces. Alternatively the environment variable CWL_FULL_NAME may " "be set.", dest="cwl_full_name", default=os.environ.get("CWL_FULL_NAME", ""), type=str, )