Skip to content

v1.2.0

Compare
Choose a tag to compare
@mlin mlin released this 08 Jun 10:28
· 195 commits to main since this release

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