weaver.formats
¶
Module Contents¶
-
weaver.formats.
get_format
(mime_type) → Format[source]¶ Obtains a
Format
with predefined extension and encoding details from known MIME-types.
-
weaver.formats.
get_extension
(mime_type) → AnyStr[source]¶ Retrieves the extension corresponding to :paramref:`mime_type` if explicitly defined, or by parsing it.
-
weaver.formats.
get_cwl_file_format
(mime_type, make_reference=False, must_exist=True, allow_synonym=True) → Union[Tuple[Optional[JSON], Optional[AnyStr]], Optional[AnyStr]][source]¶ Obtains the corresponding IANA/EDAM
format
value to be applied under a CWL I/OFile
from the :paramref:`mime_type` (Content-Type header) using the first matched one.- If
make_reference=False
: - If there is a match, returns
tuple({<namespace-name: namespace-url>}, <format>)
with: - corresponding namespace mapping to be applied under
$namespaces
in the CWL. - value of
format
adjusted according to the namespace to be applied toFile
in the CWL.
- corresponding namespace mapping to be applied under
- If there is a match, returns
- If there is no match but
must_exist=False
, returns a literal and non-existing definition astuple({"iana": <iana-url>}, <format>)
. - Otherwise, returns
(None, None)
- If
- 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
ANDallow_reference=True
, retry the call with the synonym if available, or move to next step. Skip this step ifallow_reference=False
. - Returns a single
None
as there is not match (directly or synonym).
- If there is a match, returns the explicit format reference as
- If
Note
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 theformat
. You must therefore make sure that the returned reference (or a synonym format) really exists when usingmust_exist=False
before providing it to the CWL I/O definition. Settingmust_exist=False
should be used only for literal string comparison or pre-processing steps to evaluate formats.Parameters: - 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.
Returns: Resolved MIME-type format for CWL usage, accordingly to specified arguments (see description details).
-
weaver.formats.
clean_mime_type_format
(mime_type, suffix_subtype=False, strip_parameters=False) → AnyStr[source]¶ Removes any additional namespace key or URL from :paramref:`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.
Parameters: - 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 likeapplication/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.
Note
Parameters :paramref:`suffix_subtype` and :paramref:`strip_parameters` are not necessarily exclusive.