Skip to content

Commit 84939d4

Browse files
author
Peter Amstutz
committed
Add flag to skip validation.
1 parent d5a1ddd commit 84939d4

File tree

4 files changed

+15
-7
lines changed

4 files changed

+15
-7
lines changed

cwltool/argparser.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ def arg_parser(): # type: () -> argparse.ArgumentParser
214214
parser.add_argument("--custom-net", type=Text,
215215
help="Will be passed to `docker run` as the '--net' "
216216
"parameter. Implies '--enable-net'.")
217+
parser.add_argument("--disable-validate", dest="do_validate",
218+
action="store_false", default=True, help="Skip CWL document validation.")
217219

218220
exgroup = parser.add_mutually_exclusive_group()
219221
exgroup.add_argument("--enable-ga4gh-tool-registry", action="store_true", help="Enable resolution using GA4GH tool registry API",

cwltool/load_tool.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,8 @@ def validate_document(document_loader, # type: Loader
187187
fetcher_constructor=None, # type: FetcherConstructorType
188188
skip_schemas=None, # type: bool
189189
overrides=None, # type: List[Dict]
190-
metadata=None # type: Optional[Dict]
190+
metadata=None, # type: Optional[Dict]
191+
do_validate=True
191192
):
192193
# type: (...) -> Tuple[Loader, Names, Union[Dict[Text, Any], List[Dict[Text, Any]]], Dict[Text, Any], Text]
193194
"""Validate a CWL document."""
@@ -203,7 +204,7 @@ def validate_document(document_loader, # type: Loader
203204
jobobj = None
204205
if "cwl:tool" in workflowobj:
205206
job_loader = default_loader(fetcher_constructor) # type: ignore
206-
jobobj, _ = job_loader.resolve_all(workflowobj, uri)
207+
jobobj, _ = job_loader.resolve_all(workflowobj, uri, checklinks=do_validate)
207208
uri = urllib.parse.urljoin(uri, workflowobj["https://w3id.org/cwl/cwl#tool"])
208209
del cast(dict, jobobj)["https://w3id.org/cwl/cwl#tool"]
209210

@@ -254,7 +255,7 @@ def validate_document(document_loader, # type: Loader
254255
_add_blank_ids(workflowobj)
255256

256257
workflowobj["id"] = fileuri
257-
processobj, new_metadata = document_loader.resolve_all(workflowobj, fileuri)
258+
processobj, new_metadata = document_loader.resolve_all(workflowobj, fileuri, checklinks=do_validate)
258259
if not isinstance(processobj, (CommentedMap, CommentedSeq)):
259260
raise ValidationException("Workflow must be a dict or list.")
260261

@@ -269,7 +270,8 @@ def validate_document(document_loader, # type: Loader
269270
if preprocess_only:
270271
return document_loader, avsc_names, processobj, new_metadata, uri
271272

272-
schema.validate_doc(avsc_names, processobj, document_loader, strict)
273+
if do_validate:
274+
schema.validate_doc(avsc_names, processobj, document_loader, strict)
273275

274276
if new_metadata.get("cwlVersion") != update.LATEST:
275277
processobj = cast(CommentedMap, cmap(update.update(

cwltool/main.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,7 +396,8 @@ def main(argsl=None, # type: List[str]
396396
'ga4gh_tool_registries': [],
397397
'find_default_container': None,
398398
'make_template': False,
399-
'overrides': None
399+
'overrides': None,
400+
'do_validate': True
400401
}):
401402
if not hasattr(args, k):
402403
setattr(args, k, v)
@@ -477,7 +478,8 @@ def main(argsl=None, # type: List[str]
477478
preprocess_only=args.print_pre or args.pack,
478479
fetcher_constructor=fetcher_constructor,
479480
skip_schemas=args.skip_schemas,
480-
overrides=overrides)
481+
overrides=overrides,
482+
do_validate=args.do_validate)
481483

482484
if args.print_pre:
483485
stdout.write(json.dumps(processobj, indent=4))
@@ -497,6 +499,7 @@ def main(argsl=None, # type: List[str]
497499

498500
make_tool_kwds["find_default_container"] = functools.partial(find_default_container, args)
499501
make_tool_kwds["overrides"] = overrides
502+
make_tool_kwds["disable_js_validation"] = args.disable_js_validation or (not args.do_validate)
500503

501504
tool = make_tool(document_loader, avsc_names, metadata, uri,
502505
makeTool, make_tool_kwds)

cwltool/workflow.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,7 +545,8 @@ def __init__(self, toolpath_object, **kwargs):
545545
step_inputs.extend(step.tool["inputs"])
546546
step_outputs.extend(step.tool["outputs"])
547547

548-
static_checker(workflow_inputs, workflow_outputs, step_inputs, step_outputs)
548+
if kwargs.get("do_validate", True):
549+
static_checker(workflow_inputs, workflow_outputs, step_inputs, step_outputs)
549550

550551

551552
def job(self,

0 commit comments

Comments
 (0)