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.4-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44d551aee1ec8aa2d7b64762557c266bcbf7d5109f2246955718d05becc509d6 |
|
MD5 | 88aa7073202495d6dc2807dbf5fae314 |
|
BLAKE2b-256 | af8804611d8365f735ae1ba71b402842afbd336811b4916424f558692c9c4a65 |
Hashes for msgspec-0.18.4-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e21bc5aae6b80dfe4eb75dc1bb29af65483f967d5522e9e3812115a0ba285cac |
|
MD5 | f5812b7bf8c0e1fe6284f4f9a1afca96 |
|
BLAKE2b-256 | eafab66a0964eac3621fbc10efba04cc6143066e2887e7ad4625df11eaa7d454 |
Hashes for msgspec-0.18.4-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a198409f672f93534c9c36bdc9eea9fb536827bd63ea846882365516a961356 |
|
MD5 | 74fc68922b091ab67900c4064347a370 |
|
BLAKE2b-256 | 7cdb3f7413dc5dc7c3de6d495b9c093939af3ebcaef237c76a1d36810b16e7a2 |
Hashes for msgspec-0.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d99f3c13569a5add0980b0d8c6e0bd94a656f6363b26107435b3091df979d228 |
|
MD5 | 3b6a8a5fcad0769faf50bbfe64f8c264 |
|
BLAKE2b-256 | 6bdba842284b693a337af449bff384979c493272372215d04dd92f28c0c178cf |
Hashes for msgspec-0.18.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc2405dba5af6478dedd3512bb92197b6f9d1bc0095655afbe9b54d7a426f19f |
|
MD5 | 78c5b12665fabefbfb32ad6f719efbd5 |
|
BLAKE2b-256 | 42095cb495456ed7cc3d2dc33100a847bd5e04fa1e2f6d1211a318b4ed984c04 |
Hashes for msgspec-0.18.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f668102958841c5bbd3ba7cf569a65d17aa3bdcf22124f394dfcfcf53cc5a9b9 |
|
MD5 | 07bed118f7e18df14dc3108c34ba33d9 |
|
BLAKE2b-256 | 538a641d2b2e6ac73c303e9af0b3489abc6c4f2530afb3caf5ac08dbc0aa98aa |
Hashes for msgspec-0.18.4-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8476848f4937da8faec53700891694df2e412453cb7445991f0664cdd1e2dd16 |
|
MD5 | 72663a870c9a00e20910e144c96fb822 |
|
BLAKE2b-256 | bbefef9f239ceda10528732463f10007295a1a1309e2c00431d84a0658cfb905 |
Hashes for msgspec-0.18.4-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 828ef92f6654915c36ef6c7d8fec92404a13be48f9ff85f060e73b30299bafe1 |
|
MD5 | 0d171db4db91c5b032e136a62c403aca |
|
BLAKE2b-256 | 6dad8b578ee9520276b422a9c78434f981dd8fff130be2b668d0c80d2531b72a |
Hashes for msgspec-0.18.4-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 227fee75a25080a8b3677cdd95b9c0c3652e27869004a084886c65eb558b3dd6 |
|
MD5 | de4ec56fb349a1ae415dd622a9c77118 |
|
BLAKE2b-256 | 32f046fbe037444a69a12d662de7b1361311d6ca07f04155facd4ca8205b0fff |
Hashes for msgspec-0.18.4-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86800265f87f192a0daefe668e0a9634c35bf8af94b1f297e1352ac62d2e26da |
|
MD5 | 4d2d8e3a5a378cdead48ac9f14f542c6 |
|
BLAKE2b-256 | 00e09d1d977daab0b812aca7906efc314c2459a82e7bf677f23baefb07b7fffe |
Hashes for msgspec-0.18.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 826dcb0dfaac0abbcf3a3ae991749900671796eb688b017a69a82bde1e624662 |
|
MD5 | 4aa4f181b155e2cc930ecc13c52ac47e |
|
BLAKE2b-256 | c4db143d1e58ffd80a9a7d0d728478e3376c246a19b56c5dbfd847e5298cbef0 |
Hashes for msgspec-0.18.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b052fd7d25a8aa2ffde10126ee1d97b4c6f3d81f3f3ab1258ff759a2bd794874 |
|
MD5 | 653b36fb70f4a23d2271eadbb0b11c40 |
|
BLAKE2b-256 | 0778b87395e71d729bbc0d4c80f46a4e44a07c670917143d84b368ee3be8fad1 |
Hashes for msgspec-0.18.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | acdcef2fccfff02f80ac8673dbeab205c288b680d81e05bfb5ae0be6b1502a7e |
|
MD5 | 601d7b0403b4fc0d48b6ecc1a198a834 |
|
BLAKE2b-256 | 7740c4b840a8df05b7d49e4eb132e45bcff23dce157d57bc61c7f32066440690 |
Hashes for msgspec-0.18.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e14287c3405093645b3812e3436598edd383b9ed724c686852e65d569f39f953 |
|
MD5 | 27ed420e4bd7d2673cddb084f9f2e78c |
|
BLAKE2b-256 | 511016ce74ff9eb23157af9e9166aea3c078b6fbb607c04c7909cb20254f9c90 |
Hashes for msgspec-0.18.4-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc25e6100026f5e1ecb5120150f4e78beb909cbeb0eb724b9982361b75c86c6b |
|
MD5 | dd714b66a2e094eeb3e2ea53b38cbf2c |
|
BLAKE2b-256 | d48ecdec51dc76f6604ec36e48a573693d21a0a4240b0c254059af59f68e79a8 |
Hashes for msgspec-0.18.4-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73e70217ff5e4ac244c8f1b0769215cbc81e1c904e135597a5b71162857e6c27 |
|
MD5 | d6cad2a37b25d06c8da5e95f27bcf4ec |
|
BLAKE2b-256 | bc341fa46c644e89f48ca607d95f75c113c678ad994d3675cb370e2c4caea28f |
Hashes for msgspec-0.18.4-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da13a06e77d683204eee3b134b08ecd5e4759a79014027b1bcd7a12c614b466d |
|
MD5 | 75e7271c9eb2069fb1f550d79a4bbc72 |
|
BLAKE2b-256 | 8d1ba62b8c70df5eac516b9636d405fc6bc5ec1f160a751c30d386be0debafc1 |
Hashes for msgspec-0.18.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d08175cbb55c1a87dd258645dce6cd00705d6088bf88e7cf510a9d5c24b0720b |
|
MD5 | 2c6e5e5da200c7be3d3589397d01ae5e |
|
BLAKE2b-256 | ef48ec6fa869ae5b83cc22cb828919bfbf76f8404829e13bc9b25c69fed85b19 |
Hashes for msgspec-0.18.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 241277eed9fd91037372519fca62aecf823f7229c1d351030d0be5e3302580c1 |
|
MD5 | 64b945d3f31c0bbc47f8048dc3a22662 |
|
BLAKE2b-256 | 6f59814c3db925c07e9c93c0416f9deda4c5d0fca23da247af3b4593111ac1e7 |
Hashes for msgspec-0.18.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9714b78965047638c01c818b4b418133d77e849017de17b0655ee37b714b47a6 |
|
MD5 | 57360dd0e19f9935d54155ce43835d3d |
|
BLAKE2b-256 | 1dec6aad64aa7c5c594f0438712900ee06cc86e09e896d5270b94998f5d81c70 |
Hashes for msgspec-0.18.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d24a291a3c94a7f5e26e8f5ef93e72bf26c10dfeed4d6ae8fc87ead02f4e265 |
|
MD5 | 623af5e11d26ded31debb933bcf66c0a |
|
BLAKE2b-256 | 7e0d72c6402825cf1448a3fac3a8c7a9fb75626affba2c62fe4fe372221dcf49 |
Hashes for msgspec-0.18.4-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f446f16ea57d70cceec29b7cb85ec0b3bea032e3dec316806e38575ea3a69b4 |
|
MD5 | 0d7c98cd81f155aa073b30883e986873 |
|
BLAKE2b-256 | 20f31dbe15ae43206aca30422aa17c7453e38161def22a392ae5a54df2c5b76b |
Hashes for msgspec-0.18.4-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8064908ddb3d95d3261aaca48fd38abb16ccf59dc3f2d01eb4e04591fc1e9bd4 |
|
MD5 | e9ecf3a03acd7c8199677f66ebe7dcde |
|
BLAKE2b-256 | 070519a5cca97d516231f472742482a5ca74d1e1fc8e4369dc62ba76cb4f7fb4 |
Hashes for msgspec-0.18.4-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 991aa3c76d1b1ec84e840d0b3c96692af834e1f8a1e1a3974cbd189eaf0f2276 |
|
MD5 | 602a50dd6c317cfec81d7992dcd5af99 |
|
BLAKE2b-256 | 6bfd24d2477ef6f6eff784e0df12e65332ec182e5e5b551dfb54821af1c735df |
Hashes for msgspec-0.18.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b01efbf80a987a99e9079257c893c026dc661d4cd05caa1f7eabf4accc7f1fbc |
|
MD5 | be50235fc50ed40b309a28adb48dec04 |
|
BLAKE2b-256 | 266a55121b6c58dd860d74a33e60e4f6a182f1693bfbe1bc7ca74ea83ded4e8b |
Hashes for msgspec-0.18.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | deb11ba2709019192636042df5c8db8738e45946735627021b7e7934714526e4 |
|
MD5 | a08964d66778030ee5c5e8800a3a9b26 |
|
BLAKE2b-256 | c3d2a4fe6b545893ceb42ad1e946cb9c6215bc5004d19e5002fc0d1275c23cd3 |
Hashes for msgspec-0.18.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4294158c233884f3b3220f0e96a30d3e916a4781f9502ae6d477bd57bbc80ad |
|
MD5 | 4c70113d3edf943110f704d2590329ca |
|
BLAKE2b-256 | 29cabc51d7d31a7d2b0354370b61ce112c21e63354b104455165e17e7116f56f |
Hashes for msgspec-0.18.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 847d79f6f0b698671ff390aa5a66e207108f2c23b077ef9314ca4fe7819fa4ec |
|
MD5 | d78ebd94f6577d4c50e9ec7eaa5fd3bf |
|
BLAKE2b-256 | cfddda9a3b344032316c917488d953b5508421b2b09e802573384a8ee3de6be2 |
Hashes for msgspec-0.18.4-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e95817021db96c43fd81244228e185b13b085cca3d5169af4e2dfe3ff412954 |
|
MD5 | 2d72eda4b0f740bf89730438cc2d5a5d |
|
BLAKE2b-256 | a75da9ea2e58e3711681c4a9fd5e6392d69edb9c79c8ebdaec5e81b1242330d2 |
Hashes for msgspec-0.18.4-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e95bd0a946b5b7206f27c0f654f490231c9ad5e5a4ff65af8c986f5114dfaf0e |
|
MD5 | 8ea00db39132445d1cbc924915a25181 |
|
BLAKE2b-256 | 88aea74669b026fa960e7c45e1e570267a9fcaae877021e35efd0ef3057387be |
Hashes for msgspec-0.18.4-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55e578fd921c88de0d3a209fe5fd392bb66623924c6525b42cea37c72bf8d558 |
|
MD5 | af2cc65828390bef3a28108f6a67cf99 |
|
BLAKE2b-256 | 90ed2bf9985a896f9e31402fc6ecd4bec9e7ef4cf85a1142f00308b82ded6ea5 |
Hashes for msgspec-0.18.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6229dd49438d81ed7a3470e3cbc9646b1cc1b120d415a1786df880dabb1d1c4 |
|
MD5 | 7f38893eee796400da12c63ce12a6fae |
|
BLAKE2b-256 | c10510fdb2468cf719ed48e685b69ca9d5a74ce32ec8bc9d3880d1c83556dd4e |
Hashes for msgspec-0.18.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96ccaef83adc0ce96d95328a03289cd5aead4fe400aac21fbe2008855a124a01 |
|
MD5 | 6f0c179724621121cb5d70dae5dda46b |
|
BLAKE2b-256 | 8ab3fb78ec80165b5cc93f30d180c4d01d5f4b66fb6aa815ad07b2e0dea97e5b |
Hashes for msgspec-0.18.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87bc01949a35970398f5267df8ed4189c340727bb6feec99efdb9969dd05cf30 |
|
MD5 | fd2179ff0ed5102898145ec81685b58e |
|
BLAKE2b-256 | 630e964ffae76791a56670a506bc6c87ebcae70579e543194f53a832c1370728 |
Hashes for msgspec-0.18.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbbc08d59f74de5791bda63569f26a35ae1dd6bd20c55c3ceba5567b0e5a8ef1 |
|
MD5 | 1d2251d28d2f4798a39dc3ecf8f17d2c |
|
BLAKE2b-256 | 7e337c8a8d9dccc71acfe44bc17cbfb2687a946e4f6de6a301f893912f32bc3d |