Skip to main content

No project description provided

Project description

Linux Build Status Code coverage Documentation Status

cwl-utils

Python Utilities and Autogenerated Classes for loading and parsing CWL v1.0, CWL v1.1, and CWL v1.2 documents.

Requires Python 3.8+

Installation

pip3 install cwl-utils

To install from source:

git clone https://github.com/common-workflow-language/cwl-utils.git
cd cwl-utils
pip3 install .

Usage

Pull the all referenced software container images

cwl-docker-extract is useful to cache or pre-pull all software container images referenced in a CWL CommandLineTool or CWL Workflow (including all referenced CommandLineTools and sub-Workflows and so on).

The default behaviour is to use the Docker engine to download and save the software container images in Docker format.

cwl-docker-extract path_to_my_workflow.cwl
cwl-docker-extract --dir DIRECTORY path_to_my_workflow.cwl

Or you can use the Singularity software container engine to download and save the software container images and convert them to the Singularity format at the same time.

cwl-docker-extract --singularity --dir DIRECTORY path_to_my_workflow.cwl

Print all referenced software packages

cwl-cite-extract prints all software packages found (recursively) in the specified CWL document.

Currently the package name and any listed specs and version field are printed for all SoftwareRequirement s found.

cwl-cite-extract path_to_my_workflow.cwl

Replace CWL Expressions with concrete steps

cwl-expression-refactor refactors CWL documents so that any CWL Expression evaluations are separate steps (either CWL ExpressionTools or CWL CommandLineTools.) This allows execution by CWL engines that do not want to support inline expression evaluation outside of concrete steps, or do not want to directly support CWL’s optional InlineJavascriptRequirement at all.

cwl-expression-refactor directory/path/to/save/outputs path_to_my_workflow.cwl [more_workflows.cwl]

Split a packed CWL document

cwl-graph-split splits a packed CWL document file into multiple files.

Packed CWL documents use the $graph construct to contain multiple CWL Process objects (Workflow, CommandLineTool, ExpressionTool, Operation). Typically packed CWL documents contain a CWL Workflow under the name “main” and the workflow steps (including any sub-workflows).

cwl-graph-split --outdir optional/directory/path/to/save/outputs path_to_my_workflow.cwl

Pack a CWL document

cwl-pack packs a CWL document and all of its referenced documents into a single JSON document. Unlike cwl-normalizer, cwl-pack does not upgrade the CWL version and does not refactor expressions; it is a thin CLI wrapper around cwl_utils.pack.pack().

cwl-pack path_to_my_workflow.cwl
cwl-pack --outfile packed.json path_to_my_workflow.cwl

Normalize a CWL document

cwl-normalizer normalizes one or more CWL document so that for each document, a JSON format CWL document is produces with it and all of its dependencies packed together, upgrading to CWL v1.2, as needed. Can optionally refactor CWL Expressions into separate steps in the manner of cwl-expression-refactor.

cwl-normalizer directory/path/to/save/outputs path_to_my_workflow.cwl [more_workflows.cwl]

Generate for Workflow Parameters from a CWL document

cwl-inputs-schema-gen generates a JSON Schema for workflow input parameters from a CWL document.

cwl-inputs-schema-gen path_to_my_workflow.cwl

Using the CWL Parsers

from pathlib import Path
from ruamel import yaml
import sys

from cwl_utils.parser import load_document_by_uri, save

# File Input - This is the only thing you will need to adjust or take in as an input to your function:
cwl_file = Path("testdata/md5sum.cwl")  # or a plain string works as well

# Import CWL Object
cwl_obj = load_document_by_uri(cwl_file)

# View CWL Object
print("List of object attributes:\n{}".format("\n".join(map(str, dir(cwl_obj)))))

# Export CWL Object into a built-in typed object
saved_obj = save(cwl_obj)
print(f"Export of the loaded CWL object: {saved_obj}.")

Development

Regenerate parsers

To regenerate install the schema_salad package and run:

cwl_utils/parser/cwl_v1_0.py was created via schema-salad-tool --codegen python https://github.com/common-workflow-language/common-workflow-language/raw/codegen/v1.0/extensions.yml --codegen-parser-info "org.w3id.cwl.v1_0" > cwl_utils/parser/cwl_v1_0.py

cwl_utils/parser/cwl_v1_1.py was created via schema-salad-tool --codegen python https://github.com/common-workflow-language/cwl-v1.1/raw/codegen/extensions.yml --codegen-parser-info "org.w3id.cwl.v1_1" > cwl_utils/parser/cwl_v1_1.py

cwl_utils/parser/cwl_v1_2.py was created via schema-salad-tool --codegen python https://github.com/common-workflow-language/cwl-v1.2/raw/codegen/extensions.yml --codegen-parser-info "org.w3id.cwl.v1_2" > cwl_utils/parser/cwl_v1_2.py

Release

To release CWLUtils, bump the version in cwl_utils/__meta__.py, and tag that commit with the new version. The gh-action-pypi-publish should release that tag.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cwl_utils-0.42.tar.gz (397.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cwl_utils-0.42-py3-none-any.whl (458.5 kB view details)

Uploaded Python 3

File details

Details for the file cwl_utils-0.42.tar.gz.

File metadata

  • Download URL: cwl_utils-0.42.tar.gz
  • Upload date:
  • Size: 397.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cwl_utils-0.42.tar.gz
Algorithm Hash digest
SHA256 94e585dcc3082416c657ae446804b5e60f6363045743cbd64814ed85402e3f87
MD5 e0db3e55c6bbb1a2e9deb0bf07dde50c
BLAKE2b-256 5f39f14c6799741a1b3e00ca515dea63aefdb1c8a6549cdf99c86c7e15dc351e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cwl_utils-0.42.tar.gz:

Publisher: tag_to_publish.yml on common-workflow-language/cwl-utils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cwl_utils-0.42-py3-none-any.whl.

File metadata

  • Download URL: cwl_utils-0.42-py3-none-any.whl
  • Upload date:
  • Size: 458.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for cwl_utils-0.42-py3-none-any.whl
Algorithm Hash digest
SHA256 3ded53f626268d1113895f59e91a6ce2d8a1568823b4db506b4814ae2e4904c4
MD5 08e6a4ea37b5220bc8e0a375d6aaf38c
BLAKE2b-256 8eb423f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026

See more details on using hashes here.

Provenance

The following attestation bundles were made for cwl_utils-0.42-py3-none-any.whl:

Publisher: tag_to_publish.yml on common-workflow-language/cwl-utils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page