Module Contents

weaver.formats.ACCEPT_LANGUAGE_EN_CA = en-CA[source]
weaver.formats.ACCEPT_LANGUAGE_FR_CA = fr-CA[source]
weaver.formats.ACCEPT_LANGUAGE_EN_US = en-US[source]
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_OCTET_STREAM = application/octet-stream[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_IMAGE_JPEG = image/jpeg[source]
weaver.formats.CONTENT_TYPE_IMAGE_PNG = image/png[source]
weaver.formats.CONTENT_TYPE_IMAGE_TIFF = image/tiff[source]
weaver.formats.CONTENT_TYPE_MULTI_PART_FORM = multipart/form-data[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._CONTENT_TYPE_CHAR_TYPES = ['application', 'multipart', 'text'][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]

Obtain the complete list of extensions that are permitted for processing by the application.


This is employed for security reasons. Files can still be specified with another allowed extension, but it will not automatically inherit properties applicable to scripts and executables. If a specific file type is refused due to its extension, a PR can be submitted to add it explicitly.

weaver.formats.get_format(mime_type: str, default: Optional[str] = None)Optional[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_content_type(extension: str, charset: Optional[str] = None, default: Optional[str] = None)Optional[str][source]

Retrieves the Content-Type corresponding to the specified extension if it can be matched.

  • extension – Extension for which to attempt finding a known Content-Type.

  • charset – Charset to apply to the Content-Type as needed if extension was matched.

  • default – Default Content-Type to return if no extension is matched.


Matched or default Content-Type.

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

Obtains the extended schema reference from the media-type identifier.

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)Optional[str][source]

Obtains a generic media-type identifier by cleaning up any additional parameters.

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.

Removes any leading temporary local file prefix inserted by CWL when resolving namespace mapping. This transforms file:///tmp/dir/path/package#application/json to plain application/json.

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.