Compatibility Layer
Parslet includes a small compatibility layer so that simple Parsl and Dask workflows can be exchanged with Parslet. It provides two mechanisms:
Runtime shims that mimic portions of each library’s API.
Source-to-source converters implemented as abstract syntax tree (AST) transforms.
Note
These features are experimental and focus on pure Python code intended for local execution. Data staging directives, provider configuration and advanced Dask scheduler settings are not translated.
Dask compatibility
Drop-in replacements for dask.delayed()
and dask.compute()
live in
parslet.compat
:
from parslet.compat import delayed, compute
@delayed
def add(x, y):
return x + y
total = compute(add(1, 2))[0]
Existing Dask scripts can be translated either programmatically or via the CLI:
from parslet.compat import convert_dask_to_parslet
rewritten = convert_dask_to_parslet(open("workflow.py").read())
parslet convert --from-dask workflow.py --to-parslet workflow_parslet.py
To move in the opposite direction:
parslet convert --from-parslet recipe.py --to-dask recipe_dask.py
Parsl compatibility
Parsl interoperability mirrors the Dask bridge. Parslet provides
python_app
and bash_app
decorators as well as conversion utilities.
from parslet.compat import python_app
@python_app
def hello():
return "hi"
parslet convert --from-parsl app.py --to-parslet app_parslet.py
parslet convert --from-parslet recipe.py --to-parsl recipe_parsl.py
Each exported script recreates the original DAG by rendering every node as a
Parsl @python_app
and wiring the dependencies.
Caveats
Only pure Python task bodies are handled; Bash apps and staging directives are ignored.
The generated code targets local execution and requires further tuning for distributed or HPC environments.
Always review the converted source before relying on it in production.