v1.2.0
Relax type-checking of inputs with defaults
WDL inputs declared with default initializers, input { T x = :default: }
, can now be called with optional values whether or not their declared type carries the ?
quantifier.
Implications & example
When called with None
, the default applies if the declaration lacks the ?
quantifier. This change simplifies passing optional overrides through from workflow to task, while the task internally defines the appropriate default:
workflow w {
input {
String? s_override
}
call t { input: s = s_override }
}
task t {
input {
String s = "some default"
}
...
}
However, if caller expressly supplies None
for an input that is declared optional, String? s = "some default"
, the WDL specification does not yet explicate whether s
should take None
or the default in this case. For now our implementation has it take None
, but miniwdl check
also flags the ambiguity with UnnecessaryQuantifier
. See ongoing discussion: openwdl/wdl#464
The newly relaxed rule only applies for task/workflow call inputs; elsewhere, it remains necessary to use select_first()
or select_all()
to coerce an optional value to a non-optional type.
Fix bug causing runs with --no-cache
to still use stale cached download, and other rare race conditions
Usability improvements for logs and error messages