Registry / workflow / miniwdl

miniwdl

JSON →
library1.14.2pypypiunverified

miniwdl is a Python library and command-line tool for running and developing Workflow Description Language (WDL) workflows locally. It provides a WDL runtime, a parser, and utilities for WDL authors. The current version is 1.13.1, and it maintains an active release cadence, addressing bugs, updating dependencies, and enhancing WDL specification compliance.

pip install miniwdl
INSTALL
IMPORT
SIG · MINIWDL
M
miniwdl
workflowpythonv1.14.2
Install
4.6s avg
Import
Disk
39MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.14.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.910 runs
installs and imports cleanly · install 0.0s · import 0.000s · 41.6MB
glibc
py 3.103.910 runs
installs and imports cleanly · install 4.6s · import 0.000s · 43MB
39MB installed
● package 39MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

runner
from WDL import runner
from WDL import runner

This quickstart demonstrates how to programmatically run a simple WDL workflow using `miniwdl.runner.run`. It creates a temporary WDL file, defines inputs, executes the workflow, and prints the output.

import miniwdl.runner import os # Create a simple WDL file for demonstration wdl_content = """ version 1.0 workflow hello { input { String name } call hello_task { input: name = name } } task hello_task { input { String name } command { echo "Hello, ${name}!" } output { String message = read_string(stdout()) } } """ with open("hello.wdl", "w") as f: f.write(wdl_content) # Define inputs as a dictionary inputs = {"hello.name": "WDL User"} # Run the WDL workflow try: run_result = miniwdl.runner.run( wdl="hello.wdl", inputs=inputs, dir=os.getcwd() # Specify directory where WDL is found ) # Access outputs print(f"Workflow output: {run_result.outputs['hello.hello_task.message']}") except Exception as e: print(f"An error occurred: {e}") finally: # Clean up the dummy WDL file if os.path.exists("hello.wdl"): os.remove("hello.wdl")
miniwdl --version
Debug
Known issues
breakingImplicit coercions from optional types (e.g., `String?`) to non-optional types (`String`) were disallowed starting in v1.9.0.
fix
Explicitly cast optional values to their non-optional counterparts using `as String` or ensure the target variable is also optional. For example, `my_optional_string_var as String`.
affects: >=1.9.0
breakingThe default `-l` (login shell) flag for task command bash interpreters was removed in v1.9.0. This can change the environment available to your tasks.
fix
If your tasks rely on login shell features (e.g., specific `~/.bashrc` settings), you can restore this behavior by configuring `[task_runtime] bash_cmd_shell_opts = ['-l']` in your miniwdl configuration file.
affects: >=1.9.0
gotchaWith Python 3.10+ and `asyncio`, you might encounter errors related to the event loop. v1.13.1 fixed an issue with `asyncio.get_event_loop()`.
fix
Upgrade to miniwdl v1.13.1 or newer to resolve `asyncio.get_event_loop()` related errors on modern Python versions.
affects: <1.13.1 on Python 3.10+
gotchav1.13.0 introduced changes for WDL 1.1 spec compliance, including dedenting task commands before interpolation and stricter type checking for struct literals. This could subtly alter behavior for existing WDLs.
fix
Review WDLs for reliance on specific command indentation or implicit field handling in structs. Update WDLs to conform strictly to WDL 1.1 specification and declare all struct fields explicitly.
affects: >=1.13.0
gotchaInternal migration from `pkg_resources` to `importlib_metadata` in v1.13.1. While this primarily affects miniwdl's internals, outdated `setuptools` in the user environment could cause issues.
fix
Ensure your `setuptools` package is up-to-date (`pip install --upgrade setuptools`) if you encounter any import or packaging-related errors.
affects: N/A (internal change)
Upgrade
Version history
1.14.2latest on PyPI · released Apr 26, 2026
Audit
Dependencies
pythonrequiredminiwdl requires Python 3.8 or newer.
Agent activity
33 hits · last 30 days
node
30
OpenAI (training)
1
Resources
miniwdl — pip install miniwdl · libregistry