Skip to content

Repository files navigation

cwl2puml

PyPI - Version PyPI - Python Version

cwl2puml converts Common Workflow Language workflows into PlantUML diagrams.

It provides a CLI that can:

  • load a CWL workflow from a local path or URL
  • render PlantUML source files
  • optionally render PNG or SVG images through a PlantUML server

Supported Diagrams

  • activity
  • component
  • class
  • sequence
  • state

Requirements

  • Python >=3.10

Local quality checks

Install Hatch and Taskfiles and then install the Git hook:

task quality:pre-commit:install

Every commit runs Ruff (including the configured McCabe complexity limit), Ruff formatting, strict mypy checks, and the pytest suite. Run the complete hook explicitly with:

task quality:pre-commit:run

Installation

Install from the repository:

pip install .

For development:

pip install hatch

CLI Usage

Show the CLI help:

cwl2puml --help

Basic example:

cwl2puml \
  https://raw.githubusercontent.com/eoap/application-package-patterns/refs/heads/main/cwl-workflow/pattern-1.cwl \
  --workflow-id pattern-1 \
  --output ./out

This writes one .puml file per diagram type into ./out.

Generate only selected diagrams:

cwl2puml workflow.cwl \
  --workflow-id main \
  --diagrams component \
  --diagrams sequence \
  --output ./out

Generate SVG images through a PlantUML server:

cwl2puml workflow.cwl \
  --workflow-id main \
  --diagrams component \
  --output ./out \
  --convert-image \
  --image-format svg

Use a custom PlantUML server host:

cwl2puml workflow.cwl \
  --workflow-id main \
  --output ./out \
  --convert-image \
  --puml-server uml.planttext.com

Output

For each selected diagram type, the CLI writes:

  • <diagram>.puml
  • optionally <diagram>.png or <diagram>.svg

Development

Run the test matrix:

hatch run test:test-q

Run coverage:

hatch run test:test-cov

Run formatting checks:

hatch run dev:lint

Run Ruff fixes:

hatch run dev:check

Documentation

Project documentation: https://Terradue.github.io/cwl2puml/

Contributing

Open an issue at https://github.com/Terradue/cwl2puml/issues if you find a bug or want to propose a change.

License

Apache License, Version 2.0

Releases

Contributors

Languages