Releases: chanzuckerberg/miniwdl
Release list
v0.6.0
miniwdl run
--dirbehavior revised to be more predictable: always run in a new timestamp-named subdirectory of the specified directory, unless the latter ends with.- Automatically download input files specified as public http[s]/ftp/gs URIs
- Honor
runtime.maxRetriesto retry task command or docker failures output_linksfeature expanded to apply to all nested task/workflow runs, and include Files embedded in structs and other composite output values- Manipulate ownership/permissions to improve security and user experience:
- as run completes, chown everything in run directory to invoking user and primary group
- run task commands with membership in invoking user's primary group, ensuring access to working directory even if they've dropped privileges (a good docker security practice)
--as-meto force all task commands to run as invoking user (more secure, but blocks commands that assume root e.g. apt-get)
- Revert to always running command in bash (as required by WDL spec) rather than container $SHELL
miniwdl check
- Suppress
UnnecessaryQuantifierfor optionalFile?task outputs
v0.5.2
miniwdl run
- generates a "rerun" script in the run directory, which can be sourced from the shell to re-run with the same inputs (#149)
- use docker image's $SHELL to interpret task command, instead of hard-coding bash
- log messages have been revised and reformatted to facilitate programmatic consumption (#248)
- probable fix for a sporadic hang under erratic host performance, such as when out of memory (#263)
- based on runtime.memory, create host memory reservations to avoid overbooking parallel memory-intensive tasks (#250)
- memory reservations affect task scheduling, but aren't enforced limits (unlike runtime.cpu, which creates both reservations and limits)
- shares thread pools to respect task concurrency limits across sub-workflow calls (#203)
Known limitations:
- Task output files must reside in or under the initial working directory (#214)
- Task input files are mounted read-only by default; commands to rename or remove them can succeed only with
--copy-input-files(#210) - Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (#193)
- Scheduler ignores runtime.disks and runtime.maxTries (#251)
Please vote on these and/or report other interoperability problems via Issues!
v0.5.1
miniwdl run
- support optional
File?outputs from tasks (#255, openwdl/wdl#310) - display the available inputs/outputs in source order
- fix duplication in
workflow.logfile
Known limitations:
- Task output files must reside in or under the initial working directory (#214)
- Task input files are mounted read-only by default; commands to rename or remove them can succeed only with
--copy-input-files(#210) - Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (#193)
- Scheduler considers each tasks's
runtime.cpu(default 1) versus the available host processors, but ignoresruntime.{memory,disks}(#250) - Scheduler may exceed the
-@parallelism limit argument when sub-workflows are called, potentially up to # host processors (#203).
Please vote on these and/or report other interoperability problems via Issues!
miniwdl cromwell
- Cromwell 47
WDL
- permit unbound, optional declarations in task/workflow bodies (outside of inputs) as a way of creating a null value for later use (#253)
WDL.Type.Anyalways coerces to/from optional types- preserve
Value.exprreferences when value is coerced
v0.5.0 parallel workflows on local host
miniwdl run
The built-in runner can now parallelize tasks and sub-workflows on the local host, using Docker Swarm locally to schedule containers (which it'll enable automatically). Start with miniwdl run_self_test to quickly test the installation viability.
Known limitations:
- Task output files must reside in or under the initial working directory (#214)
- Task input files are mounted read-only by default; commands to rename or remove them can succeed only with
--copy-input-files(#210) - Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (#193)
- Scheduler considers each tasks's
runtime.cpu(default 1) versus the available host processors, but ignoresruntime.{memory,disks}(#250) - Scheduler may exceed the
-@parallelism limit argument when sub-workflows are called, potentially up to # host processors (#203).
Please vote on these and/or report other interoperability problems via Issues!
Other changes:
- Add
:latesttag toruntime.dockerif no other tag present (#232 @jdidion) - Mount all input files into one in-container directory (except when filenames would collide) to improve interoperability using hts index files
miniwdl cromwell
- Cromwell 46.1
miniwdl check
WDL
v0.4.1 maintenance
miniwdl run
Standing limitations:
- Calls run sequentially (#202, #203)
- Task input files are mounted read-only; commands to rename or remove them will fail (#210)
- Task output files must reside in or under the initial working directory (#214)
- Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (#193)
Please vote on these and/or report other interoperability problems via Issues!
miniwdl cromwell
- accept relative file paths in input JSON file, interpreting them relative to current working directory (#230 @prihoda)
- Cromwell 45.1
WDL
v0.4.0
miniwdl run
- Improved logging with tty colors and other enhancements
- New subcommand
miniwdl run_self_testruns a little workflow to test the installation - Library functions involving file I/O (e.g.
read_string(),write_lines()) are now available in workflows as well as tasks (#204) - Prevent use of host files neither supplied in the workflow inputs nor generated by the workflow (e.g.
/etc/passwd) - Fix up type coercions in call inputs and struct instances
Remaining limitations:
- Calls run sequentially (#202, #203)
- Task input files are mounted read-only; commands to rename or remove them will fail (#210)
- Task output files must reside in or under the initial working directory (#214)
- Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (#193)
Please vote on these and/or report other interoperability problems via Issues!
WDL package
Breaking API changes:
WDL.Envrewritten with an easier, more-Pythonic interface- Simplify compound
Valueconstructors so that e.g.Value.Arrayneeds to be told the array item type rather than the fullType.Array(...)
We now plan to minimize further breaking API changes to the WDL AST data structures, on the way to a 1.0 version.
Other changes:
- Add
__str__to Expr classes (#215 @DavyCats) - String-to-Int/Float coercions allowed, may fail at runtime (#198)
- Statically reject use of
stdout(),stderr(), andglob()outside of task output sections - Set
pos : SourcePositionattribute on the subset ofWDL.Typeobjects instantiated by the syntax parser (e.g.Decl.type&StructTypeDef@dinvlad) - Fix
WDL.resolve_file_import()pass-through call toWDL.Tree.resolve_file_import()(@dinvlad) - Tighten name collision rules for 1.0+ workflow outputs (#196)
Housekeeping
- Parallelized unit test suite using pytest
- Cromwell 45, lark-parser 0.7.3
v0.3.0
miniwdl run
🏁 This is the first release with a credible built-in capability to execute workflows on the local host. It's in early testing, but please try it out and let us know about any interoperability problems via Issues!
Salient limitations:
- Calls run sequentially (#202, #203)
- Task input files are mounted read-only; commands to rename or remove them will fail (#210)
- Task output files must reside in or under the initial working directory (#214)
- Library functions that involve file I/O (e.g.
read_string(),write_lines()) are available in tasks but not workflows (#204) - Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (#193)
miniwdl check
- detects cyclic dependencies involving scatter & conditional expressions
miniwdl cromwell
- accept --options with Cromwell workflow options JSON file (#206 @prihoda)
- fix CLI arg completer regression
- Cromwell 44
WDL
- Refactor workflow AST to facilitate runtime dependency analysis, with
WorkflowNodeandWorkflowSectionbase classes exposing dependency ID strings, and explicitGathernodes - Refactor
WDL.load()to permit overriding file-reading logic (#177 @dinvlad) - Rename
WDL.{Workflow,Scatter,Conditional}.elementsto.body - Rename
WDL.Expr.Ident.ctxtoWDL.Expr.Ident.referee
Housekeeping
v0.2.2
miniwdl cromwell
WDL
- clean up & document programmatic access to
miniwdl checklint warnings - parser: allow comma after last element of map and object literals, as well as arrays
miniwdl run
- new subcommand shares
miniwdl cromwell's command-line interface, instead invoking the work-in-progress internal runner. Currently, it can be used to run individual tasks (WDL documents with one task) on the local host.
v0.2.1
miniwdl check
UnknownRuntimeKeyfor task runtime entries not on a list of known keys (#150 @pshapiro4broad)
miniwdl cromwell
- accept
--input INPUTS.jsonwith a Cromwell-style input JSON file, merging in any additional inputs from the command line (#165 @prihoda) - allow override of Cromwell JAR and config file through arguments and env vars (#171 @cmarkello)
- Cromwell 42
WDL package
- struct initialization from map literal (where the key type is
String-coercible and the value type is coercible to each respective struct member type) - struct literals (object/map) may omit optional struct members
- parser: remove remaining constraints on the order of workflow elements/sections (#173 @patmagee)
meta
- Add biowdl/aligning and biowdl/expression-quantification test corpi
- miniwdl package is available through conda-forge (@rhpvorderman)
v0.2.0
miniwdl check
- detect call name collisions even if callee has no outputs (#133)
UnusedDeclarationignore likely secondary files based on name suffix case-insensitively
miniwdl cromwell
- adds support for shell tab-completion of the available input names, using argcomplete
WDL
- add
WDL.values_to_jsonandWDL.values_from_jsonfor conversion betweenWDL.Env.Valuesand Cromwell-style JSON WDL.loadcan takesource_text : strof the source code instead of reading it from disk/URI (#154)- provide
pos : SourcePositionforSyntaxErrorandImportError(#153 @dinvlad) - task 'non-input' declarations may interleave anywhere among other task sections (#156)
- workflow output expressions can reference previous workflow outputs (#155 @rhpvorderman)
- exclude output declarations from Workflow.available_inputs (#135 @patmagee)
- StdLib refactoring and several additional function implementations
- Address value coercion loose ends: enforcing optional/nonempty quantifiers, recursive coercions in compound types, refined error objects & messages
- Errors no longer embed source line/column in the textual message; the
pos : SourcePositionattribute remains available
meta
- Add biowdl/tasks test corpus
- Improving test suite Mac OS X compatibility although some issues remain
Starting from this release, work-in-progress WDL runner functionality is included in the code base & test suite; but it's still far from usable for general purposes.