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.18.2-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84cc7932f78aeec6ef014cca4bb4ecea8469bc05f13c9eacdfa27baa785e54b9 |
|
MD5 | 70efba65cb210eb8ab2bc24c1300cf73 |
|
BLAKE2b-256 | 88f8feecb1356eaf71b45d2bdd9defb97cf96c39df847f62b99a572ef5431ee6 |
Hashes for msgspec-0.18.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b56cc7b9956daefb309447bbbb2581c84e5d5e3b89d573b1d5a25647522d2e43 |
|
MD5 | 0fdcf321ecf26d953caa3c50b1623b79 |
|
BLAKE2b-256 | 4c120f74fce23cb510fe220374cd78cf36d96131c0832bcb1f3ac769209b34b8 |
Hashes for msgspec-0.18.2-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25f7e3adaf1ca5d80455057576785069475b1d941eb877dbd0ae738cc5d1fefa |
|
MD5 | ab78a848d9ffe1e5fc18aee755196aea |
|
BLAKE2b-256 | 9842b099d9bb48141b11c2ce57f8855648635fa00c255fb4cb9fa0aec3cd6a87 |
Hashes for msgspec-0.18.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80e57102469ee0d2186c72d42fa9460981ccd4252bdb997bf04ef2af0818984f |
|
MD5 | df46b662f32ec3ca98d4ad2291aa6ae6 |
|
BLAKE2b-256 | ba9d541a84ffba4f5f5cba57980d919d6ca154fde6356e6ea207fe906c545e64 |
Hashes for msgspec-0.18.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ade3959577bff46c7d9476962d2d7aa086b2820f3da03ee000e9be4958404829 |
|
MD5 | 4f2aafa310a8552ac1c4319c3b4b572b |
|
BLAKE2b-256 | 6b5821c33d0d4e2457a65e22fd508af03af6d0f8f030a0902d707d6bfbc001e0 |
Hashes for msgspec-0.18.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e03ff009f3a2e1fe883703f98098d12aea6b30934707b404fd994e9ea1c1bfa7 |
|
MD5 | bcf4827699cd01a8e9c6b455ac313b22 |
|
BLAKE2b-256 | e5b94d25d26ac43866827bc532e3844ca0215ff8f1655943b9f1089086034934 |
Hashes for msgspec-0.18.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3bfc55d5ca60b3aa2c2287191aa9e943c54eb0aef16d4babb92fddcc047093b1 |
|
MD5 | 1bd781440ed65e1dce2cd19374ffd1fa |
|
BLAKE2b-256 | 0cd31d46ca3f90fbf8cd0fb834cc98a5ea0b28e482b2d67ab08d03821bf970fc |
Hashes for msgspec-0.18.2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d127bf90f29f1211520f1baa897b10f2a9c05b8648ce7dc89dfc9ca45599be53 |
|
MD5 | 1dbe72cf97375b858eb4760762da6cd5 |
|
BLAKE2b-256 | 824de42485c243dc3205cfcd41bef6a88055aa066de2f41bddbac18c408a6a07 |
Hashes for msgspec-0.18.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b065995f3a41e4c8274a86e1ee84ac432969918373c777de239ef14f9537d80 |
|
MD5 | 498b5e1e4326aee80d12eefaa7898ce2 |
|
BLAKE2b-256 | aad1dcd1b96e4b533b7b842753a85b9a04f285b4b0fb48887f79caa99a5db396 |
Hashes for msgspec-0.18.2-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78a593bc0db95416d633b28cff00af0465f04590d53ff1a80a33d7e2728820ad |
|
MD5 | 1b0bf6f8e2c0499924321b8a198d8463 |
|
BLAKE2b-256 | 4eae1269f6b8b5ed3d2225200bdcf22701fd2c27ad24d1974e00eb5f847eef43 |
Hashes for msgspec-0.18.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 358c2b908f1ed63419ccc5f185150c0caa3fc49599f4582504637cbfd5ff6242 |
|
MD5 | f49e7562597d4ef73e926061264d9671 |
|
BLAKE2b-256 | dbca89fce1f808d1cfb6c2083f31801b98d48e1cc1c19200a67708b5a49a0553 |
Hashes for msgspec-0.18.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abcb92ffbca77bcfbedd5b29b68629628948982aafb994658e7abfad6e15913c |
|
MD5 | f427acff5bbb0244c3e64d1e3a9e8c81 |
|
BLAKE2b-256 | 64a0576348f3461b6f407d5281775189ed07e5f76c2c79cd193576f01fda8515 |
Hashes for msgspec-0.18.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ad4f4704045a0fb1b5226769d9cdc00a4a69adec2e6770064f3db73bb91bbf9 |
|
MD5 | 5c6a24988e37217789e27831b1bca866 |
|
BLAKE2b-256 | 50fbc9cd780ee2851cce263b7479e1e6efcc4191f9d123be95f7a6a5d821f12a |
Hashes for msgspec-0.18.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1535855b0db1bee4e5c79384010861de2a23391b45095785e84ec9489abc56cd |
|
MD5 | 2e688127733150e25d01aa29e5286f18 |
|
BLAKE2b-256 | d9b170932ae861311ee4b2265f61b2e1dd91450d2997816b7f52fd4151186539 |
Hashes for msgspec-0.18.2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70fa7f008008e2c823ecc1a143258bb2820ac76010cf6003091fa3832b6334c9 |
|
MD5 | 403ab1fcc95681fc8a83b209b4f1c01b |
|
BLAKE2b-256 | 6242bed6b346752c0c0d5939e64de61cd411ed01ee161968920df39bdfc4bb55 |
Hashes for msgspec-0.18.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b90a44550f19ee0b8c37dbca75f96473299275001af2a00273d736b7347ead6d |
|
MD5 | 34499345cb458c41b751066df0a54da4 |
|
BLAKE2b-256 | c64405f1a94ecc5fdaafb8b54cfbeca6ffef66d0c1f509fe6db8aeb29ef43f71 |
Hashes for msgspec-0.18.2-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 595f14f628825d9d79eeea6e08514144a3d516eb014f0c6191f91899c83a6836 |
|
MD5 | 4273a56ddaff3648bc2016734e91a6da |
|
BLAKE2b-256 | 6059a2eef28e4df3e4b488deb4a8211994f350cea408ca4f8939ed5f991f0215 |
Hashes for msgspec-0.18.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c79ac853409b0000727f4c3e5fb32fe38122ad94b9e074f992fa9ea7f00eb498 |
|
MD5 | fa6074942fec570bed7749c6c685de71 |
|
BLAKE2b-256 | f9c7ad39b24b42d16cfc3d3b643f4b8aea8e85fe138e9d327b110d950aea3d07 |
Hashes for msgspec-0.18.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c1ee8b9667fde3b5d7e0e0b555a8b70e2fa7bf2e02e9e8673af262c82c7b691 |
|
MD5 | 75365681f299a246cff97c5b2524198f |
|
BLAKE2b-256 | 3bad738fa5cd4ce59ecf6a4a3270f91abba1c80dff0b7fce7a3d8e122d4cc8d0 |
Hashes for msgspec-0.18.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a75c4efa7565048f81e709a366e14b9dc10752b3fb5ea1f3c8de5abfca3db3c2 |
|
MD5 | b34ebdbbe273cb178bae88585ada5996 |
|
BLAKE2b-256 | b7c52389f679078bbf8ca6bc74ff1fce108a81f1bdd04ca65b310266b86a5b26 |
Hashes for msgspec-0.18.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 84fcf74b6371494aa536bf438ef96b08ce8f6e40483a01ed305535a40113136b |
|
MD5 | ce62fc90b6c692c44e8f579651443708 |
|
BLAKE2b-256 | 5c6e47a2f58fec4cab2142431e5d2fda367eeaae44fdbc905a0493ebe660b145 |
Hashes for msgspec-0.18.2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b9b3ed82f71816cddf0a9cdaae30a1d1addf8fe56ec09e7368db93ce43b29a81 |
|
MD5 | a980a0a588bd0b1af821590a2272f6f0 |
|
BLAKE2b-256 | 7d8bba0e7be5749a5ec5213dd897a3ab72edf0eb4de2c8faa2c9f1d06bd76836 |
Hashes for msgspec-0.18.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb80befd343f3b378c8abad0367154703c74bde02fc62cbcf1a0e6b5fa779459 |
|
MD5 | d60bfe581acab6173eb04d9314f62349 |
|
BLAKE2b-256 | f1337bb1fdb73910414116982160cf3fd5a1aa69bf8693abf19f26238b551278 |
Hashes for msgspec-0.18.2-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baaba2411003f2e7a4328b5a58eba9efeb4c5e6a27e8ffd2adaccdc8feb0a805 |
|
MD5 | 3abf1782223092828db6fbe914ad133d |
|
BLAKE2b-256 | 089b07343b4a1c7597d56e8c9aa95ccc16f4511f40f0764714650a02060b5878 |
Hashes for msgspec-0.18.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23e65efaef864bf66a4ddfae9c2200c40ce1a50411f454de1757f3651e5762cd |
|
MD5 | 18eadcf0a8036265ad03d1f2d26aac77 |
|
BLAKE2b-256 | d550904fefdf9851c9d1514e05e0551bdc80c3cb2a2f2c07f5fc79208ca743e9 |
Hashes for msgspec-0.18.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccaddb764b5abe457c0eded4a252f5fbeb8b04a946b46a06a7e6ca299c35dcb1 |
|
MD5 | f1348fa745058fea6e1c9089626b9c5f |
|
BLAKE2b-256 | 8439437daf547a34e044ed6f7f39b5ded286ae594ed8bec5d8b6e2f71c4313e8 |
Hashes for msgspec-0.18.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f71c33efda990ecddc878ea2bb37f22e941d4264ded83e1b2309f86d335cde7 |
|
MD5 | 0a7f0aa1fef97ac7a294b0f8ee35b036 |
|
BLAKE2b-256 | 1ae51b6b75c1ea2e1a4f120c67fe96472a5afdebc83a0d277eb182d7b0def6da |
Hashes for msgspec-0.18.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35420ae8afaa90498733541c0d8b2a73c70548a8a4d86da11201ed6df557e98f |
|
MD5 | f1a7d1cea22d5600f581deb3d96a0097 |
|
BLAKE2b-256 | 4bfffa40ba602b7bfba5b4683849177272bd3b63ef9e4e9885a94ef4219f1a2f |