cwl2ogc converts CWL workflow/tool inputs and outputs into:
- OGC API - Processes I/O descriptors
- JSON Schema documents for those I/O definitions
This is useful when publishing CWL-based application packages through OGC API - Processes interfaces.
Warning
Since release 0.20.0, cwl2ogc is also available as a
transpiler-mate plugin.
Use transpiler-mate cwl2ogc for command-line conversion; the standalone
cwl2ogc command was removed in 0.18.0. The Python library remains available.
See the plugin guide for installation and usage.
The OGC API - Processes Deploy/Replace/Undeploy workflow requires a process description that exposes valid input and output metadata. cwl2ogc helps generate that description directly from CWL definitions.
pip install cwl2ogcPython 3.10+ is required.
Install the runtime and plugin in the same Python environment:
pip install transpiler-mate-runtime "cwl2ogc>=0.20.0"Generate OGC input/output descriptions from your CWL document:
transpiler-mate cwl2ogc --output processes.json workflow.cwlShow command help:
transpiler-mate cwl2ogc --helpThe output maps workflow IDs to process descriptions, each containing application metadata. Selecting a process with a source fragment produces one description. See the plugin guide for source requirements and output details.
from cwl_utils.parser import load_document_by_uri
from cwl2ogc import BaseCWLtypes2OGCConverter
workflow = load_document_by_uri("tests/artifacts/cwl-types/inp.cwl#inp")
converter = BaseCWLtypes2OGCConverter(workflow)
inputs = converter.get_inputs()
outputs = converter.get_outputs()
inputs_json_schema = converter.get_inputs_json_schema()
outputs_json_schema = converter.get_outputs_json_schema()Requirements:
dockertask
Run the published playground image:
task run-playgroundBuild and run the local playground image:
task run-playground-devOpen http://127.0.0.1.
Install development tooling with Hatch and run checks:
hatch run test:test
hatch run dev:check
hatch run dev:lintProject documentation is organized around four needs:
- Tutorials: learn through a first conversion and notebooks.
- How-to guides: use the plugin or generate JSON Schema.
- Reference: Python API and plugin output.
- Explanation: understand the conversion model.
Issues and pull requests are welcome: https://github.com/transpiler-mate/cwl2ogc/issues
Install Hatch and Taskfiles then install the Git hook:
task quality:pre-commit:installEvery 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