A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML.
Project description
msgspec
is a fast serialization and validation library, with builtin
support for JSON, MessagePack,
YAML, and TOML. It features:
-
🚀 High performance encoders/decoders for common protocols. The JSON and MessagePack implementations regularly benchmark as the fastest options for Python.
-
🎉 Support for a wide variety of Python types. Additional types may be supported through extensions.
-
🔍 Zero-cost schema validation using familiar Python type annotations. In benchmarks
msgspec
decodes and validates JSON ~2x faster than orjson can decode it alone. -
✨ A speedy Struct type for representing structured data. If you already use dataclasses or attrs, structs should feel familiar. However, they're 10-100x faster for common operations.
All of this is included in a lightweight library with no required dependencies.
msgspec
may be used for serialization alone, as a faster JSON or
MessagePack library. For the greatest benefit though, we recommend using
msgspec
to handle the full serialization & validation workflow:
Define your message schemas using standard Python type annotations.
>>> import msgspec
>>> class User(msgspec.Struct):
... """A new type describing a User"""
... name: str
... groups: set[str] = set()
... email: str | None = None
Encode messages as JSON, or one of the many other supported protocols.
>>> alice = User("alice", groups={"admin", "engineering"})
>>> alice
User(name='alice', groups={"admin", "engineering"}, email=None)
>>> msg = msgspec.json.encode(alice)
>>> msg
b'{"name":"alice","groups":["admin","engineering"],"email":null}'
Decode messages back into Python objects, with optional schema validation.
>>> msgspec.json.decode(msg, type=User)
User(name='alice', groups={"admin", "engineering"}, email=None)
>>> msgspec.json.decode(b'{"name":"bob","groups":[123]}', type=User)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
msgspec.ValidationError: Expected `str`, got `int` - at `$.groups[0]`
msgspec
is designed to be as performant as possible, while retaining some of
the nicities of validation libraries like
pydantic. For supported types,
encoding/decoding a message with msgspec
can be
~10-80x faster than alternative libraries.
See the documentation for more information.
LICENSE
New BSD. See the License File.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for msgspec-0.14.2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3288b65ee7c78d08f32003a8b5ca72fff12c6a7400bd35f9d65630c9d58efce2 |
|
MD5 | 0a9da1ec370d246feefe5776725151a2 |
|
BLAKE2b-256 | 25e61c3b6dd97580499eaabe502e3bbd992ee7af0a1195d88c30c695fee7e0fb |
Hashes for msgspec-0.14.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 59491de3566c7789bdb0a152f305e150a6ba3e825af471680b05a029a664a89a |
|
MD5 | 65e35d18416a5068306e9587a41aa4ca |
|
BLAKE2b-256 | a2cef0b33b16358d1e4b8b39ec072ddea514b253a818d11ef41a405412a77056 |
Hashes for msgspec-0.14.2-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26bcb3a69b348be2757ab19e86038e586920522a99d49d358c12890fbcfb6aa8 |
|
MD5 | 7ec6194de7940deb904c7a0fe4c42901 |
|
BLAKE2b-256 | e2c7c7457d9a1a46d215461280ff4fe3288573c9b41915713eec9f22f1f52bbf |
Hashes for msgspec-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 580464c7ca5c47a1422973c853301bbfd3d1a4184bdb6bddb73b5df094d8fc55 |
|
MD5 | f7341dcd2807cc86f75bcdc72de82431 |
|
BLAKE2b-256 | b716ed0ef3b4ee7c0e12870ea6077b0cf0fcd299351a41952a1fd470d10b4a39 |
Hashes for msgspec-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b8a766b9f3e7f87946965a8ffc6e72f7a3ec8d031b3168df16762bfd3d03205 |
|
MD5 | 8781b6bf5ec0f66d8f3b9889d225200b |
|
BLAKE2b-256 | 7963f17047abf971d5a5f20408f341d3e17a885eccca54382ccda11d84caf879 |
Hashes for msgspec-0.14.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d03861f0d271b696faefb1a885ea0c7dc7db70baaa05c7f18086f2b9085d1cb8 |
|
MD5 | 659d7fc739b7f9103fcffb83b90eb362 |
|
BLAKE2b-256 | 163fece9cc333cbe630c90988ffcaa4c11fe7a2a8f1f2b80e64f81f7719cba86 |
Hashes for msgspec-0.14.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0a3908309581e4e632457fac1938fec7fd84121396ddab6ddca37784e6db068 |
|
MD5 | 8a2c1565e1421448a6230580ce49fb35 |
|
BLAKE2b-256 | e606c2cab4614cefcf51e1abf11df881a5a0bc2611b38f86fbf42fbda31b2d15 |
Hashes for msgspec-0.14.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f13e47803aedbb32c9375317fedbd20af3397dc024d311eebdc635c07f6f908 |
|
MD5 | 84035f19ce2ba50dad78a585d524aeed |
|
BLAKE2b-256 | a9080100cbfaa1b769a6e491d29a47281045923134dde1ed73300b92bc2742c8 |
Hashes for msgspec-0.14.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b965c14851f146537f1b732cd2ed16c38e0c59662f23b72d396aee21e81aed4f |
|
MD5 | f48e980dbaa6c42a747ec5f90ce56cca |
|
BLAKE2b-256 | e0fc591caa9cac809f1ca9e6d11b74c1bf365de54278aae0b4e36f6b12e1032c |
Hashes for msgspec-0.14.2-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87c4cd1bb197be11f89ad779038c8989d6ffcb8b360705107f034e4d2783c0a6 |
|
MD5 | 239c155606fbdd21c2a93b901ff64fa7 |
|
BLAKE2b-256 | a18fb3521f3ea51b28df717a8d5e7f6638d3706c915ec856efd5224bcd0daf05 |
Hashes for msgspec-0.14.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57a79cfa306fda2c66f4fc7eb72836c0f78fd9a6d748d028960b387797f0381b |
|
MD5 | 4fac010389e4bd1389bb170a0dde0a2c |
|
BLAKE2b-256 | 8abc489fe7aed7f0c52de2dc723fa0fb3ca4e156d689c75d128eac8e8b01e26a |
Hashes for msgspec-0.14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2039451b22813af2fd5cbe99eaecfc318d64fcee5af0ce5b3d5cce12427d24cd |
|
MD5 | 9dcd0c0d47bbbadaaf15273922c68b21 |
|
BLAKE2b-256 | 8915d7b478821f0302ad4727e38ca29866e87430aeba39bcb9cc2bc1c3c5309b |
Hashes for msgspec-0.14.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a12e704786256431d559c2027d6135a64f2339f009118d97906709cd8409e7ac |
|
MD5 | 2b3ff3fc6a06205fb18a003218d25b56 |
|
BLAKE2b-256 | cacbd6615e0c016043ba1b628b2575a88ca0ad8158f0be76d2234df53fa8da14 |
Hashes for msgspec-0.14.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ed61cad6b20f0218a8d239294c4b30b4e82854871ba0434cf0d54497043bffe |
|
MD5 | e0aedb1eeefee6d6bdadff5d28a4a494 |
|
BLAKE2b-256 | d461ae1a8450562d0e0291058d6f77204d1e1417b32745370fb1d861bac01149 |
Hashes for msgspec-0.14.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8927efaf506e5a8f9ffe76602e08d30a80c19b38d50a7e783887c317573ecd80 |
|
MD5 | 8442980160cb4030390e63cbac2e0e8b |
|
BLAKE2b-256 | 95b94dd7de3f546c904b2441b7393834d21c073b4ba583ceaf74f7cd41e541f0 |
Hashes for msgspec-0.14.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | decd1d2015d340ebfd58f29ed2916e118ca255b6a94fc1787a236a2654dfd8ff |
|
MD5 | 2ea11f674e3e12a6921fad73fb1cff00 |
|
BLAKE2b-256 | d4fc312119e0948fd0e97c003d576c1cf69798568c7736c17fca9295c82dd9bb |
Hashes for msgspec-0.14.2-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff7c987330e2be62eb8811bc2da33507e8edeb761f4fd343f2fa5fdafce4f989 |
|
MD5 | 6fc88211c290377de98a46a24e8799cb |
|
BLAKE2b-256 | 5c43e6104f8dcbd944d7889ca17bac1ffef0b432cf415f5e73f91c911df0935a |
Hashes for msgspec-0.14.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eee59e73982ca0d730f8d4e8fb5f01da9fa466490dea43ea1bcfa23b8a8bbc0d |
|
MD5 | ac2ef9eb419dda0359923b1c70ee5f60 |
|
BLAKE2b-256 | 91a27c5a79ca1bfa4edb9fa1f270e3d7b65c479875971e3019427f7795b7336b |
Hashes for msgspec-0.14.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e50885274e2041e49ec5d7cce8e59768f599c27dfb4c046edaf9ab25b1fddc2 |
|
MD5 | d440c49ab0ce151a81b4252f01a41d19 |
|
BLAKE2b-256 | baeac651796963cb9ba9e705c8b4193eef06a7056e720ac8f2b5e118762e7e22 |
Hashes for msgspec-0.14.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c8f7e631fad9d5a33fcfb0f2a27eb86dc0390e91d6b51c95a604b7ccbc264f1 |
|
MD5 | f48b4670c6adc0fc9296b891c8ef5168 |
|
BLAKE2b-256 | 5bd7ff398e3571be426a0472629aaa9af3151a657f9f561df756d03365fafe21 |
Hashes for msgspec-0.14.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94fc3d9a8835f18c18b48fdf49f7d445184061bfbc457a6623a4eb1f74ebe806 |
|
MD5 | 7551746b648b821ca8518dc06f408b55 |
|
BLAKE2b-256 | fedfd89e976b6012e6ac7b440ed71885e4dce8e2406d6f1dab31966a93e9f893 |
Hashes for msgspec-0.14.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78361dadef4b993b8c4a887d3d267b89b0ea0846259eadf2fe993659e4dbf9c8 |
|
MD5 | f0d93f67a0ccfb734b689b16c65e3c5d |
|
BLAKE2b-256 | cc4dc118ea94fce1c9ca60ff3d660dca4692a602c41a37b35c184bca91756f47 |
Hashes for msgspec-0.14.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d85e9bfd1441216010c084626d968e96a3d88d762959c5eb430de62076cd7fe9 |
|
MD5 | 01a6ace9fef14f48d06112886c3cc000 |
|
BLAKE2b-256 | a1dee97cfee0c25cb036083ee435084695ba455e510aee16f239af1677228adb |
Hashes for msgspec-0.14.2-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d469aede5d986223d6ec9a8d0713156f96fd6b427b12e14f81d26627a47687b9 |
|
MD5 | 765390f975d9e2b69cc1f0163c7174df |
|
BLAKE2b-256 | 1e4b76792af8f82281a9bebb26c7b9b96a6e4df50014fdcd8549d36af1b5981b |
Hashes for msgspec-0.14.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f97006b9c9e24e9677fb84f43586fb4d03a72eb426199656a1c24775c62b9fe4 |
|
MD5 | 8d3610a88725f34b8629095f589258ff |
|
BLAKE2b-256 | 9e500e1eb558e30a917b549e30399ca55f16d456500ed70d75e6045883fa6d70 |
Hashes for msgspec-0.14.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03ddc8c518afbea4fb89afb587d77f11d00909f003966d437f31fb8fffdfac28 |
|
MD5 | c6f929c801e79a10c2a491920d6bcb7d |
|
BLAKE2b-256 | c8e8608c7b956a7d6f702dc7b3b094fa8d30d6604afe1ae6d3cbc534ba9bef54 |
Hashes for msgspec-0.14.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 587371a65798a0f0182d0a7a4b7c4b87a5f46e25e8821c6474b3f717dcfcad14 |
|
MD5 | f0b2621a065cd6057d1f6f367b0926bc |
|
BLAKE2b-256 | 8f22d9e577835e503a3844f5a90445527658a2a04c6fa4bb8ab7b8644f79c5fb |
Hashes for msgspec-0.14.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fc99f0929fa91cc53fa35f59be366d67f116c2b7f0f3b29dc60e3179f6fb205 |
|
MD5 | 7111e93228c242e5b18e73722eb9203f |
|
BLAKE2b-256 | db3701ca959f9bb38f75f5cb175468c1027a4c99655ed57c78781fcc82351b3f |