Skip to main content

Extract the format version from a media type string

Project description

media-type-version - extract the format version from a media type string

[Home | GitLab | PyPI | Python API | ReadTheDocs]

Overview

The media-type-version library is designed to be used as the first step in parsing structured data, e.g. configuration files, serialized classes, etc. The caller extracts the media type string (e.g. a JSON "mediaType": "..." key) and passes it in for parsing. The caller then decides what to do with the extracted version information - is this version supported, what fields are expected to be there, should any extraneous fields produce errors, and so on.

The media type string is expected to be in a <prefix>.vX.Y<suffix> format, with a fixed prefix and suffix. The prefix will usually be a vendor-specific media type. The version part consists of two unsigned integer numbers. The suffix, if used, may correspond to the file format. A sample media type string identifying a TOML configuration file for a text-processing program could be vnd.ringlet.textproc.publync.config/publync.v0.2+toml

The library

The media-type-version library provides a single function, extract(), that parses a media type string, strips the specified prefix and suffix, and looks for a .vX.Y version string left. It then returns the (X, Y) version tuple.

Python example:

mtv_cfg: Final = media_type_version.Config(
    log=logging.Logger(...),
    prefix="vnd.acme/thing",
    suffix="+toml",
)

ver_major, ver_minor = media_type_version.extract(mtv_cfg, "vnd.acme/thing.v3.12+toml")

Rust example:

use media_type_version::{Config as MTVConfig, Error as MTVError, Version as MTVersion};

let cfg = MTVConfig::builder()
    .prefix("vnd.acme/thing")
    .suffix("+toml")
    .build()
    .map_err(MTVError::into_owned_error)?;
assert_eq!(
    media_type_version::extract(&cfg, "vnd.acme/thing.v3.12+toml").as_tuple(),
    (3, 12)
);

The mtv-extract tool

The media-type-version library also provides a command-line tool called mtv-extract that will read a series of strings from the specified files, parse them as media-type strings with the specified prefix and suffix, and output a line consisting of two tab-separated numbers for each parsed string:

$ { echo vnd.acme/thing.v3.47; echo vnd.acme/thing.v42.616; } | mtv-extract -q -p vnd.acme/thing -- -
3       47
42      616
$

The mtv-extract tool supports the following command-line options:

  • -p prefix (required): the prefix to strip from the media type string
  • -q: quiet operation; only display warnings and error messages
  • -s suffix: the optional suffix to strip from the media type string
  • -v: verbose operation; display diagnostic output

Contact

The media-type-version library was written by Peter Pentchev. It is developed in a GitLab repository. This documentation is hosted at Ringlet with a copy at ReadTheDocs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

media_type_version-0.1.1.tar.gz (53.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

media_type_version-0.1.1-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file media_type_version-0.1.1.tar.gz.

File metadata

  • Download URL: media_type_version-0.1.1.tar.gz
  • Upload date:
  • Size: 53.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for media_type_version-0.1.1.tar.gz
Algorithm Hash digest
SHA256 26db6d7545e97d6d4c1f0c88ce8895a0c5709bdebb0483edb621494f0ac66dcf
MD5 a76cf7d80257272f8da6d7e6e7c462e4
BLAKE2b-256 b3891864ae599e43145f8708c8b3e8b475d243ffa325ef5c8d9190e548be87a8

See more details on using hashes here.

File details

Details for the file media_type_version-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for media_type_version-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 10ef50c8528fa8c0426cff67e1700a4e5aae747a054782e576e1cd88172f2768
MD5 a001c46b4a4d6629c4e4a56113e23739
BLAKE2b-256 e61da6bdc2a99dcde8dead9fc59a6b7089cf2535df886a533895665e54d58683

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page