Module Contents

weaver.formats.CONTENT_TYPE_APP_CWL = application/x-cwl[source]
weaver.formats.CONTENT_TYPE_APP_FORM = application/x-www-form-urlencoded[source]
weaver.formats.CONTENT_TYPE_APP_NETCDF = application/x-netcdf[source]
weaver.formats.CONTENT_TYPE_APP_GZIP = application/gzip[source]
weaver.formats.CONTENT_TYPE_APP_HDF5 = application/x-hdf5[source]
weaver.formats.CONTENT_TYPE_APP_TAR = application/x-tar[source]
weaver.formats.CONTENT_TYPE_APP_TAR_GZ = application/tar+gzip[source]
weaver.formats.CONTENT_TYPE_APP_YAML = application/x-yaml[source]
weaver.formats.CONTENT_TYPE_APP_ZIP = application/zip[source]
weaver.formats.CONTENT_TYPE_TEXT_HTML = text/html[source]
weaver.formats.CONTENT_TYPE_TEXT_PLAIN = text/plain[source]
weaver.formats.CONTENT_TYPE_APP_PDF = application/pdf[source]
weaver.formats.CONTENT_TYPE_APP_JSON = application/json[source]
weaver.formats.CONTENT_TYPE_APP_GEOJSON = application/geo+json[source]
weaver.formats.CONTENT_TYPE_APP_VDN_GEOJSON = application/vnd.geo+json[source]
weaver.formats.CONTENT_TYPE_APP_XML = application/xml[source]
weaver.formats.CONTENT_TYPE_IMAGE_GEOTIFF = image/tiff; subtype=geotiff[source]
weaver.formats.CONTENT_TYPE_TEXT_XML = text/xml[source]
weaver.formats.CONTENT_TYPE_ANY = */*[source]
weaver.formats._CONTENT_TYPE_EXTENSION_MAPPING :Dict[str, str][source]
weaver.formats._CONTENT_TYPE_FORMAT_MAPPING :Dict[str, Format][source]
weaver.formats.IANA_NAMESPACE = iana[source]
weaver.formats.EDAM_NAMESPACE = edam[source]
weaver.formats.EDAM_SCHEMA = http://edamontology.org/EDAM_1.24.owl[source]
weaver.formats.WPS_VERSION_100 = 1.0.0[source]
weaver.formats.WPS_VERSION_200 = 2.0.0[source]
weaver.formats.OUTPUT_FORMAT_JSON = json[source]
weaver.formats.OUTPUT_FORMAT_XML = xml[source]
weaver.formats.get_format(mime_type: str)pywps.inout.formats.Format[source]

Obtains a Format with predefined extension and encoding details from known MIME-types.

weaver.formats.get_extension(mime_type: str)str[source]

Retrieves the extension corresponding to mime_type if explicitly defined, or by parsing it.

weaver.formats.get_cwl_file_format(mime_type: str, make_reference: bool = False, must_exist: bool = True, allow_synonym: bool = True)Union[Tuple[Optional[JSON], Optional[str]], Optional[str]][source]

Obtains the corresponding IANA/EDAM format value to be applied under a CWL I/O File from the mime_type (Content-Type header) using the first matched one.

Lookup procedure is as follows:

  • If make_reference=False:
    • If there is a match, returns tuple({<namespace-name: namespace-url>}, <format>) with:
      1. corresponding namespace mapping to be applied under $namespaces in the CWL.

      2. value of format adjusted according to the namespace to be applied to File in the CWL.

    • If there is no match but must_exist=False, returns a literal and non-existing definition as tuple({"iana": <iana-url>}, <format>).

    • If there is no match but must_exist=True AND allow_synonym=True, retry the call with the synonym if available, or move to next step. Skip this step if allow_synonym=False.

    • Otherwise, returns (None, None)

  • If make_reference=True:
    • If there is a match, returns the explicit format reference as <namespace-url>/<format>.

    • If there is no match but must_exist=False, returns the literal reference as <iana-url>/<format> (N.B.: literal non-official MIME-type reference will be returned even if an official synonym exists).

    • If there is no match but must_exist=True AND allow_synonym=True, retry the call with the synonym if available, or move to next step. Skip this step if allow_synonym=False.

    • Returns a single None as there is not match (directly or synonym).


In situations where must_exist=False is used and that the namespace and/or full format URL cannot be resolved to an existing reference, CWL will raise a validation error as it cannot confirm the format. You must therefore make sure that the returned reference (or a synonym format) really exists when using must_exist=False before providing it to the CWL I/O definition. Setting must_exist=False should be used only for literal string comparison or pre-processing steps to evaluate formats.

  • mime_type – Some reference, namespace’d or literal (possibly extended) MIME-type string.

  • make_reference – Construct the full URL reference to the resolved MIME-type. Otherwise return tuple details.

  • must_exist – Return result only if it can be resolved to an official MIME-type (or synonym if enabled), otherwise None. Non-official MIME-type can be enforced if disabled, in which case IANA namespace/URL is used as it preserves the original <type>/<subtype> format.

  • allow_synonym – Allow resolution of non-official MIME-type to an official MIME-type synonym if available. Types defined as synonym have semantically the same format validation/resolution for CWL. Requires must_exist=True, otherwise the non-official MIME-type is employed directly as result.


Resolved MIME-type format for CWL usage, accordingly to specified arguments (see description details).

weaver.formats.clean_mime_type_format(mime_type: str, suffix_subtype: bool = False, strip_parameters: bool = False)str[source]

Removes any additional namespace key or URL from mime_type so that it corresponds to the generic representation (e.g.: application/json) instead of the <namespace-name>:<format> mapping variant used in CWL->inputs/outputs->File->format or the complete URL reference.

According to provided arguments, it also cleans up additional parameters or extracts sub-type suffixes.

  • mime_type – MIME-type, full URL to MIME-type or namespace-formatted string that must be cleaned up.

  • suffix_subtype – Remove additional sub-type specializations details separated by + symbol such that an explicit format like application/vnd.api+json returns only its most basic suffix format defined as``application/json``.

  • strip_parameters – Removes additional MIME-type parameters such that only the leading part defining the type/subtype are returned. For example, this will get rid of ; charset=UTF-8 or ; version=4.0 parameters.


Parameters suffix_subtype and strip_parameters are not necessarily exclusive.