Skip to main content

An extra msgspec collection of custom types, casters, encode hooks, decode hooks and deprecation system.

Project description

msgspex

A collection of msgspec extensions: custom types, cast helpers, decode hooks, encode hooks and deprecation system.

Quick Start

import msgspex
from msgspex.custom_types import Email, datetime

value = msgspex.decoder.decode('"user@example.com"', type=Email)
dt = msgspex.decoder.decode('"2024-01-02T03:04:05Z"', type=datetime)
payload = msgspex.encoder.encode(dt)

Installing

pip install msgspex
uv add msgspex
poetry add msgspex

After import msgspex, all hooks and types are registered automatically.

Custom Types

1. Types from kungfu

  • Option[T] — optional value type based on kungfu (Some | Nothing | msgspec.UnsetType).

There is also decode-hook integration for kungfu.Sum (not a custom type, but supported by the decoder).

2. Types Derived from stdlib

  • date — re-export of datetime.date.
  • datetime — meta-type that covers StringTimestampDatetime, IntTimestampDatetime, FloatTimestampDatetime, ISODatetime (alias: isodatetime), and datetime.datetime.
  • timedelta — subclass of datetime.timedelta with cast support.
  • StrEnum, IntEnum, FloatEnum, BaseEnumMetaenum extensions for stable handling of unknown values.
  • Literal — runtime type conceptually compatible with typing.Literal.
  • dataclasses.InitVar — Passing vars to a __post_init__ method.

3. OpenAPI-Oriented Types

  • Emailformat: email
  • IDNEmailformat: idn-email
  • URIformat: uri
  • URIReferenceformat: uri-reference
  • IRIformat: iri
  • IRIReferenceformat: iri-reference
  • Hostnameformat: hostname
  • IDNHostnameformat: idn-hostname
  • IPv4format: ipv4
  • IPv6format: ipv6
  • JsonPointerformat: json-pointer
  • RelativeJsonPointerformat: relative-json-pointer
  • Regexformat: regex
  • Int32, Int64 — range-limited integer types
  • Float32, Float64 — finite, range-limited floating-point types

UUID, Decimal, date and time already supported by msgspec.

License

msgspex is MIT licensed

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

msgspex-1.1.0.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

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

msgspex-1.1.0-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file msgspex-1.1.0.tar.gz.

File metadata

  • Download URL: msgspex-1.1.0.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for msgspex-1.1.0.tar.gz
Algorithm Hash digest
SHA256 9c91d1eabcb83580e820b9c6618f15e91966acea8cf74552b68921d3d0b0b630
MD5 a62d71b0600ce5b562a5d47e340a69fb
BLAKE2b-256 7df68a9c10232a72fc883187267c015d9e81cbc293d1b496e8c62a9ca8f42eec

See more details on using hashes here.

File details

Details for the file msgspex-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: msgspex-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 40.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for msgspex-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be56514ab0c9e9a5dfacfffeaba9d4d39d31e73026fc71de5b443fb38491c02d
MD5 1ec12a89f191323982c1b7c1b165d6dc
BLAKE2b-256 7eeb21cfd89507caa1aa06b936df89619b84c0f175ff993a1d14385baf03a077

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