A fast serialization and validation library, with builtin support for JSON, MessagePack, YAML, and TOML.
Reason this release was yanked:
Memory leak in JSON decoder
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
~2-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.13.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 70051d3efa22ab8770b3cb0180447e684efdc5d22f1e8ceca38bc0127d4d8052 |
|
MD5 | 0220d9a979631e998700e988cf03f154 |
|
BLAKE2b-256 | c211b6ddaa74bf680ef9c9cb2a9b703046d7875215c72477b3d0475c810d7ce3 |
Hashes for msgspec-0.13.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94fc2c21c1eaf5b92964b40bfabd51b65e29f6756376d328474d6b2e703f8e51 |
|
MD5 | 11116edc965d06f4e194a41e7ce4b835 |
|
BLAKE2b-256 | 119b07e9df5da448e6c0f1c83bdb142a87dc9960066114d09191437e90aa1150 |
Hashes for msgspec-0.13.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dbaaf643c0c4d5372eaec722392defca336c9fef1f221d7c46b7e76d48482f1d |
|
MD5 | e551124e3ef3a9b3b470e6967262829c |
|
BLAKE2b-256 | 8940ac5766ead755448e92c3b7ae75baf4ea9b2b1c3ae4ef9c5f3a738c6c5511 |
Hashes for msgspec-0.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 837584e46611cc56509e23d688b5d263bee6a3e42d83c31857b9f5cbd0c44b91 |
|
MD5 | e0620484938d0d799765e579d02e2072 |
|
BLAKE2b-256 | dbd0d9b4e9580c255dc8b32ef22f43584b2eea8c27854963e2c696bedb130719 |
Hashes for msgspec-0.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e48a3b9a290dd8197bd6cd6331eb2d2b9e136ec725dd77881728c334435f537 |
|
MD5 | 26e878ffbfd7ee42fedfdb79d4db08c7 |
|
BLAKE2b-256 | 46c98108bc4413e803a57450576c8f0b245091fe99e5a7fa6c2340d7c50d4c28 |
Hashes for msgspec-0.13.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b3fb5a25999761cc55d3f3c1ae598a449898bf9251702ba2e27bca2f5b56ad5 |
|
MD5 | bef9f696a236bb23976402280a4b5360 |
|
BLAKE2b-256 | 19fba0a7f26e6b9f1050be688a22fe6c6486449483480dcebabb43716604a80d |
Hashes for msgspec-0.13.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 084c3aedaf3467c11b7afc4fbe1ac709030519706454c24b2e11e55212adba24 |
|
MD5 | 11be4b5ce9fe0e3720f7a4cc4995b23e |
|
BLAKE2b-256 | 89006711634ef7ddab5865a5b1fc9a2c749933ff76eaa8d0ce5d35740f1d61f8 |
Hashes for msgspec-0.13.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c53799555c5ac056473cc35557d8b9ef045e24507f73b5256ce8abe00136142f |
|
MD5 | 2a4da5a7f987b4a32514074261bef3aa |
|
BLAKE2b-256 | d3b9aa72aeb607136aa86947ad76d4e90f3c7cf5451b5d7eea5dbb18932d25b7 |
Hashes for msgspec-0.13.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46b89036786e5907855602645b71b87269e43e0094541946ba983a36d62f1b4e |
|
MD5 | 76b1055a4e8ba3c32b48cd9fed3310c7 |
|
BLAKE2b-256 | 1365702366be2389ee7f4a144b19c9720bf68baa513b1ab22d45df208e0313b2 |
Hashes for msgspec-0.13.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0cf6084a4eb9d906f9292d1863e3d12c0d624551fb79c1f12f910fbb1e818e7 |
|
MD5 | ef7fb7b66c0f1406936928ec1e0d8a59 |
|
BLAKE2b-256 | c337e9c8bea4582663258d5cf9f0d4cf5bfdae957fd301a07d6f12d3e70d31ee |
Hashes for msgspec-0.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 52e74cf0a0907553acd9946e3c1416b47e1d568eb004049820d9055644ad0478 |
|
MD5 | 4dab38347039c28fe5144c31f12b8641 |
|
BLAKE2b-256 | 77ec0f5961c0c86bafe2b79f841aa142e15b52837b634bcbe362ccfa4a8f5789 |
Hashes for msgspec-0.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a66cf73a4392196720193d35f0e0fd1613872371c928017c4363f5a7c150e96 |
|
MD5 | c5a47f50575dccc1264249f3a99351e3 |
|
BLAKE2b-256 | 73ee0bcc578d671595f2c4311014dc695daf8e862dcecd365b6afe29fb31f7a9 |
Hashes for msgspec-0.13.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f54aaad28cd0f6983187d5280d289536a668910a6c431162324bc2576f5b4831 |
|
MD5 | 56281abe2e169b7987e43b8154981078 |
|
BLAKE2b-256 | c53ce323fb431ce8532ce4147d3ef6da6c789823c152580227ac604ed886a5f3 |
Hashes for msgspec-0.13.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bbf33b1c2a25793af463c463c30ec6dbe4305130ea7bcb12d85bd92feb252af |
|
MD5 | 4166cb0ee20df97e547bdecec3f20011 |
|
BLAKE2b-256 | 5211c910087cd573f2fd21e23f67af16f7e06a005f59f2c8381ebfb67bd2f161 |
Hashes for msgspec-0.13.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68c5bf57a5cdd5791f360585a9b850e2758a27c2e6530ed64715b7cbcee9993e |
|
MD5 | d9f594be14b955446abc363cf451d4d0 |
|
BLAKE2b-256 | 8e354b49964071dbc19f3585b8d527156adfdd6be7d3d243bb8661540702f4f2 |
Hashes for msgspec-0.13.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5fc20dc8d1c1d8f6ea7e064b8f638b04dd98e5f590471c5dfe3aa8fd7d88129 |
|
MD5 | ad260507915a6dbaaabd3334c6590ceb |
|
BLAKE2b-256 | e0d2dac0a12a7403748d4dc2652fc689794f7bd4284c5ad1329963c4e0bb11b5 |
Hashes for msgspec-0.13.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0605914d4afc009aeafb18777414cb91edfd138ac8445dfc29c62e63eb703a00 |
|
MD5 | 34cc040e68d8d457a0dcb6c4b581c3eb |
|
BLAKE2b-256 | f81e1856a06b9a5e53a055fb84c6017060ff0d10d3dbd43d92ccdbe980e0e3cf |
Hashes for msgspec-0.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4257d3f1ed2b3e7dd35e9229f0ef59f4c8a6adf881f62b918dce65c730e5b32 |
|
MD5 | 1e1967bbf781b553591e387202598c55 |
|
BLAKE2b-256 | 886ad39c8a7692b508472d098e2c2d63f3c47e19e63a7bcc596168368ad49ccd |
Hashes for msgspec-0.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f70197352ec5cdb7bbd9955fa890962b56908770ba62c70ac24cb36a4e178b4 |
|
MD5 | c8318960784090dd46c4770a94755f62 |
|
BLAKE2b-256 | f9e92e8d9853c7900a9043e67beefd45fe27c50883eec146dfa5f4ab8ed9b489 |
Hashes for msgspec-0.13.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7657bbc8e1f60076cdf1ab48df828894b7222cad410838880f5e302221e1d874 |
|
MD5 | fab8f10aa9618fafcc506f66b8665530 |
|
BLAKE2b-256 | 56c9b47451fb4747336c6c2ca67892335807c080c2b6a37bdde6060b4a888a80 |
Hashes for msgspec-0.13.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6957112ca69d6b7cecf6e02aaac5da7702e92e9b261fac692264124f3b5cba65 |
|
MD5 | 0536c31c95f5a8ff506926fdc1cbd444 |
|
BLAKE2b-256 | e9e5dec8792d002b7b197e4208aeda975ef38549dce968d34b6457a810abe0c9 |
Hashes for msgspec-0.13.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5d51fe5eef8c6b4545cb9a06a83034c02e6158077fd134d372cff1db2b812ac |
|
MD5 | 1f3a2defe610c0446a6f48af46575510 |
|
BLAKE2b-256 | 92270499e6cad69c45bbc78ec2efb9d6e41b53715339abbe4f019b43533d4f7e |
Hashes for msgspec-0.13.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a408bb35bcbe46c02e76eda300fb55e7f8d6b31ce52cf143248b6d241cf82cd |
|
MD5 | f7f11c04506dc7946bcc17c6ad8b44b2 |
|
BLAKE2b-256 | ae5f240da6a6db66c55104fb4f79264363de07870512211da9d9894196f20ef2 |
Hashes for msgspec-0.13.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d8ec7b202c24f013ff71ba451e879b47d0ebb2ad6fa195d662bf9b58651a60d |
|
MD5 | 76d51b9a344c3297737c45a113753c1a |
|
BLAKE2b-256 | 36de05f51971c76c174e4d2f20cc7643886668d3b3ff0aacf5e40ff944abf447 |
Hashes for msgspec-0.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 610ba7e84ad84147e996252b8b736b5bda214d6117f6158cdb3bae1135bd5e90 |
|
MD5 | d08a91bc8e6002aecdf9aa43ea72745d |
|
BLAKE2b-256 | 7446f476fbe1e356c2d73d5d3fa6e6c75286c0a578300b2fab05eef2b542119e |
Hashes for msgspec-0.13.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbcd283629a5c5b3e03591381adfc623104ada08bfa50733c43f756c1229ab8c |
|
MD5 | 88e8139024daeceb12e6de9ae068f1e0 |
|
BLAKE2b-256 | 95166d61fb9fbfa22876edf8db36d54c1b9f919ec7d51e7a8b8a891443a9eb68 |
Hashes for msgspec-0.13.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e3ef9b42215642f53f9e07caf037432568025bf2924a907a69b6afe0a70caf2 |
|
MD5 | 07d17d447c620665b136506f6e76ff76 |
|
BLAKE2b-256 | e53ea571020d498c2f16efa21f8450f329b3d9896bd3858582d5873a9c5ee50c |
Hashes for msgspec-0.13.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 698659567159fe87fa3b513307c9a095a05add3cbcff3d5c8669f4a386f1b08d |
|
MD5 | 5a7d25092b562bdca72316f2b36c5fb8 |
|
BLAKE2b-256 | 85b0270986107dd216451244ed3f1510f20c92d588b9e1546e0f068d3530b559 |