Skip to content

Commit 3799c7d

Browse files
authored
Merge pull request #706 from common-workflow-language/skip-validation
Add flag to skip validation.
2 parents a0ef554 + 9a5877f commit 3799c7d

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
lines changed

cwltool/argparser.py

+3
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ 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,
219+
help=argparse.SUPPRESS)
217220

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

cwltool/load_tool.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ def validate_document(document_loader, # type: Loader
193193
fetcher_constructor=None, # type: FetcherConstructorType
194194
skip_schemas=None, # type: bool
195195
overrides=None, # type: List[Dict]
196-
metadata=None # type: Optional[Dict]
196+
metadata=None, # type: Optional[Dict]
197+
do_validate=True
197198
):
198199
# type: (...) -> Tuple[Loader, Names, Union[Dict[Text, Any], List[Dict[Text, Any]]], Dict[Text, Any], Text]
199200
"""Validate a CWL document."""
@@ -209,7 +210,7 @@ def validate_document(document_loader, # type: Loader
209210
jobobj = None
210211
if "cwl:tool" in workflowobj:
211212
job_loader = default_loader(fetcher_constructor) # type: ignore
212-
jobobj, _ = job_loader.resolve_all(workflowobj, uri)
213+
jobobj, _ = job_loader.resolve_all(workflowobj, uri, checklinks=do_validate)
213214
uri = urllib.parse.urljoin(uri, workflowobj["https://w3id.org/cwl/cwl#tool"])
214215
del cast(dict, jobobj)["https://w3id.org/cwl/cwl#tool"]
215216

@@ -262,7 +263,7 @@ def validate_document(document_loader, # type: Loader
262263
_add_blank_ids(workflowobj)
263264

264265
workflowobj["id"] = fileuri
265-
processobj, new_metadata = document_loader.resolve_all(workflowobj, fileuri)
266+
processobj, new_metadata = document_loader.resolve_all(workflowobj, fileuri, checklinks=do_validate)
266267
if not isinstance(processobj, (CommentedMap, CommentedSeq)):
267268
raise ValidationException("Workflow must be a dict or list.")
268269

@@ -277,7 +278,8 @@ def validate_document(document_loader, # type: Loader
277278
if preprocess_only:
278279
return document_loader, avsc_names, processobj, new_metadata, uri
279280

280-
schema.validate_doc(avsc_names, processobj, document_loader, strict)
281+
if do_validate:
282+
schema.validate_doc(avsc_names, processobj, document_loader, strict)
281283

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

cwltool/main.py

+5-2
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)
@@ -478,7 +479,8 @@ def main(argsl=None, # type: List[str]
478479
preprocess_only=args.print_pre or args.pack,
479480
fetcher_constructor=fetcher_constructor,
480481
skip_schemas=args.skip_schemas,
481-
overrides=overrides)
482+
overrides=overrides,
483+
do_validate=args.do_validate)
482484

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

499501
make_tool_kwds["find_default_container"] = functools.partial(find_default_container, args)
500502
make_tool_kwds["overrides"] = overrides
503+
make_tool_kwds["disable_js_validation"] = args.disable_js_validation or (not args.do_validate)
501504

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

cwltool/workflow.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,8 @@ def __init__(self, toolpath_object, **kwargs):
557557
step_inputs.extend(step.tool["inputs"])
558558
step_outputs.extend(step.tool["outputs"])
559559

560-
static_checker(workflow_inputs, workflow_outputs, step_inputs, step_outputs)
560+
if kwargs.get("do_validate", True):
561+
static_checker(workflow_inputs, workflow_outputs, step_inputs, step_outputs)
561562

562563

563564
def job(self,

0 commit comments

Comments
 (0)