Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.tool_util.cwl.cwltool_deps
"""Logic for dealing with cwltool as an optional dependency.
Use this as the import interface for cwltool and just call
:func:`ensure_cwltool_available` before using any of the imported
functionality at runtime.
"""
import re
import warnings
warnings.filterwarnings("ignore", message=r"[\n.]DEPRECATION: Python 2", module="cwltool")
try:
import requests
except ImportError:
requests = None
try:
from cwltool import (
main,
workflow,
job,
process,
pathmapper,
)
except ImportError:
main = None
workflow = None
job = None
process = None
pathmapper = None
try:
from cwltool.context import (
getdefault,
LoadingContext,
RuntimeContext,
)
from cwltool.job import relink_initialworkdir
from cwltool.stdfsaccess import StdFsAccess
except ImportError:
getdefault = None
LoadingContext = None
relink_initialworkdir = None
RuntimeContext = None
StdFsAccess = None
try:
from cwltool import load_tool
from cwltool.load_tool import (
default_loader,
resolve_and_validate_document,
)
except ImportError:
default_loader = None
load_tool = None
resolve_and_validate_document = None
try:
from cwltool import command_line_tool
command_line_tool.ACCEPTLIST_RE = command_line_tool.ACCEPTLIST_EN_RELAXED_RE
except ImportError:
command_line_tool = None
try:
import shellescape
except ImportError:
shellescape = None
try:
import schema_salad
from schema_salad import (
ref_resolver,
sourceline,
)
except ImportError:
schema_salad = None
ref_resolver = None
sourceline = None
needs_shell_quoting = re.compile(r"""(^$|[\s|&;()<>\'"$@])""").search
# if set to True, file format checking is not performed.
beta_relaxed_fmt_check = True
[docs]def ensure_cwltool_available():
"""Assert optional dependencies proxied via this module are available at runtime.
Throw an ImportError with a description of the problem if they do not exist.
"""
if main is None or workflow is None or shellescape is None:
message = "This feature requires cwltool and dependencies to be available, they are not."
if main is None:
message += " cwltool is not unavailable."
elif resolve_and_validate_document is None:
message += " cwltool.load_tool.resolve_and_validate_document is unavailable - cwltool version is too old."
if requests is None:
message += " Library 'requests' unavailable."
if shellescape is None:
message += " Library 'shellescape' unavailable."
if schema_salad is None:
message += " Library 'schema_salad' unavailable."
raise ImportError(message)
__all__ = (
'default_loader',
'ensure_cwltool_available',
'getdefault',
'load_tool',
'LoadingContext',
'main',
'needs_shell_quoting',
'pathmapper',
'process',
'ref_resolver',
'relink_initialworkdir',
'resolve_and_validate_document',
'RuntimeContext',
'schema_salad',
'shellescape',
'sourceline',
'StdFsAccess',
'workflow',
)