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.2.tar.gz (54.5 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.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: media_type_version-0.1.2.tar.gz
  • Upload date:
  • Size: 54.5 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.2.tar.gz
Algorithm Hash digest
SHA256 3594f31003a3c47db9c04a6fccba295e85b0ff28346827038c76a6aeffa59029
MD5 2d2bddd21c11860f92939e02c4712b50
BLAKE2b-256 e790f63cf2acf10c9ea7c2d8307316b220689b4cb1d533872eaefaa519b349a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for media_type_version-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e1a86b1ecfaa9fd75144e04204cf5417b3c09f0a9245348c3b48efcf5a62d379
MD5 68858d6200b8624ecc2e199bb67cf0f1
BLAKE2b-256 200703f1cded97275fd8550f333f4ccd3dc940e88e58c757afa1aec2858ba8a8

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