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