cwl_utils.pack
==============

.. py:module:: cwl_utils.pack

.. autoapi-nested-parse::

   CWL document packing functions.

   The link resolution is as follows:

   We always have two components: the base and the link
   If the link is a url or absolute path it is what is used to fetch the data.
   If the link is a relative path it is combined with the base and that is what is
   used to fetch data

   From https://github.com/rabix/sbpack/blob/b8404a0859ffcbe1edae6d8f934e51847b003320/sbpack/lib.py



Attributes
----------

.. autoapisummary::

   cwl_utils.pack.logger


Functions
---------

.. autoapisummary::

   cwl_utils.pack.get_inner_dict
   cwl_utils.pack.pack_process
   cwl_utils.pack.listify_everything
   cwl_utils.pack.normalize_sources
   cwl_utils.pack.load_schemadefs
   cwl_utils.pack.resolve_schemadefs
   cwl_utils.pack.resolve_imports
   cwl_utils.pack.resolve_steps
   cwl_utils.pack.add_missing_requirements
   cwl_utils.pack.pack


Module Contents
---------------

.. py:data:: logger

.. py:function:: get_inner_dict(cwl, path)

.. py:function:: pack_process(cwl, base_url, cwl_version, parent_user_defined_types = None)

.. py:function:: listify_everything(cwl)

   Convert many CWL construct from their map to the list version.

   See https://www.commonwl.org/v1.1/Workflow.html#map


.. py:function:: normalize_sources(cwl)

   Normalize the steps and output of a CWL Workflow.


.. py:function:: load_schemadefs(cwl, base_url, parent_user_defined_types = None)

   Internalize any SchemaDefRequirement, and remove it.


.. py:function:: resolve_schemadefs(cwl, base_url, user_defined_types)

.. py:function:: resolve_imports(cwl, base_url)

.. py:function:: resolve_steps(cwl, base_url, cwl_version, parent_user_defined_types = None)

   Load and pack all "run" sections of the workflow steps.


.. py:function:: add_missing_requirements(cwl)

   Due to packing, we may need to add a "SubworkflowFeatureRequirement".


.. py:function:: pack(cwl_path)

   Pack a CWL document at the given path.


