Source code for cwlgen.import_cwl

'''
Library to handle the manipulation and generation of CWL tool
'''

#  Import  ------------------------------

# General libraries
import os
import six
import logging

# External libraries
import ruamel.yaml as ryaml
import cwlgen

logging.basicConfig(level=logging.INFO)
_LOGGER = logging.getLogger(__name__)

#  Class(es)  ------------------------------


[docs]def parse_cwl(cwl_path): """ Method that parses a CWL file and will a :class:`cwlgen.Workflow` or :class:`cwlgen.CommandLineTool`. Note: this will not import additional files. :param cwl_path: PATH to the CWL file :type cwl_path: str :return: :class:`cwlgen.Workflow` | :class:`cwlgen.CommandLineTool` """ with open(cwl_path) as yaml_file: cwl_dict = ryaml.load(yaml_file, Loader=ryaml.Loader) return parse_cwl_dict(cwl_dict)
def parse_cwl_string(cwlstr): cwl_dict = ryaml.load(cwlstr, Loader=ryaml.Loader) return parse_cwl_dict(cwl_dict)
[docs]def parse_cwl_dict(cwl_dict): """ Method that parses a dictionary and will return a :class:`cwlgen.Workflow` or :class:`cwlgen.CommandLineTool`. :param cwl_dict: The dictionary to pass, must contain a 'class' field. :type cwl_dict: :class:`dict` :return: :class:`cwlgen.Workflow` | :class:`cwlgen.CommandLineTool` """ cl = cwl_dict.get("class") if cl == "CommandLineTool": return cwlgen.CommandLineTool.parse_dict(cwl_dict) elif cl == "Workflow": return cwlgen.Workflow.parse_dict(cwl_dict) raise NotImplementedError("The CWL class '" + str(cl) + "' was not a recognised CWL class")