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.3-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8522032407d6182450f9f8d44d483284aea54fe7029ca38dab83894be97cdbe3 |
|
MD5 | c19a4b8b5558b6f69cc803b6aede6fed |
|
BLAKE2b-256 | 40acccf6e7594006e28e1060f2052ef892fa25b9629b504d3774363ad5f45c69 |
Hashes for msgspec-0.18.3-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fa1ae2adaa8f91cc8d29d5abdcc5f71bafc72dbb9c8ffb767e998d30cc9b6fc |
|
MD5 | 81c851c9677da78c6ae96d228395c3e4 |
|
BLAKE2b-256 | c311fb61a99ddf5ff59a493e174876fa1b1b0d31c5ed47a698552a467c0eebef |
Hashes for msgspec-0.18.3-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e37add9994c127895af0ef6af8873dc04842bf694805c3f2d8de59d6e430b679 |
|
MD5 | b45635903431dce3e8946582cae4b313 |
|
BLAKE2b-256 | 1e2d82989ef74c1eadbaf9b3d1604727c387401d10c8790b88a1c1bf543e87f8 |
Hashes for msgspec-0.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e393a8327c69812da6fd3dd96fc29097723cd41e9494a3729c42004e47dfbe0 |
|
MD5 | 92f7490194abd2ecebd329f1a02691fd |
|
BLAKE2b-256 | e694840fe1e2102d3b07e88bfeffc491ece1653aa0dada9517ee93fee3c9e040 |
Hashes for msgspec-0.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6b9f19df2244c0159275bf6ea53fffd4da8ffcfad9b1c14bff3851c9c3668132 |
|
MD5 | ba615d4e28155a3b2a76725059909b85 |
|
BLAKE2b-256 | 861ae8ce0c9732a8194cdec0e24679417782c96db1aa60791eb50ad8de871eef |
Hashes for msgspec-0.18.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f4062d631b1113f3a3077fa525e25ac39f8eae99b962f6f288737f126bae9b3 |
|
MD5 | d2de34bb587db834d06140133b2b2def |
|
BLAKE2b-256 | 0b474ae735fecfabb72d974acfcf49ba821e0b39d993a411b26642adaff7f91e |
Hashes for msgspec-0.18.3-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd0c5b8c85e689bd259ee8555ea3e4add131ac0c6ff4ca31d48629d952ef83ca |
|
MD5 | 24d1902e3ce0ba583eb4301987f4953b |
|
BLAKE2b-256 | 757dd2417d0f96af909894ce8d6f2f31a1d9471ad85d408a9b465b1e4791dcfe |
Hashes for msgspec-0.18.3-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90901ed52e975618be71accd4f45c9027aa28607066a632bd334088fbeb5da78 |
|
MD5 | 4431bb7e9fac149a658f73cad033cdaf |
|
BLAKE2b-256 | 7500abc8b7798235764027ae2947d7192627a50bd52cb8772533880560d31a23 |
Hashes for msgspec-0.18.3-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0508947cc544ddce174665f44cdd0da4efdc7d114d8d3644fa194ee141f73a16 |
|
MD5 | da8b27bb5e75e49c8f366c214e9d4c87 |
|
BLAKE2b-256 | 6c0bec40cb98c7bf921623e0ecea0ea5a675a1c7c206736e040288987ddef888 |
Hashes for msgspec-0.18.3-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abb49caa334a835f32d3fd74e37d0e8f21e966bee5b79da8a5a21470339d987b |
|
MD5 | 210e628dffce5735ad7a9bf0d3825ae6 |
|
BLAKE2b-256 | 33b54e821a68e9642a0c88b28374e0f2d421a6455fd4eb0a953381c0a49d0a8e |
Hashes for msgspec-0.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb4e50deb015d91d852be37a6f1d68217fc0e2f3ac98005e867c6f306d1de544 |
|
MD5 | 2084e60e72e51b1a98fdcfee5cb02619 |
|
BLAKE2b-256 | 598cea517e2ee258d1b139ae7086bf3cce40d2ce5955c3c908e4b1d0e08edc18 |
Hashes for msgspec-0.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 641b1a32e584f0bf8f9b94176e09adadcd3b7ebd6864c44e9edd9f043c050593 |
|
MD5 | 0f90e3c49ba849b62ff29efdff9b7115 |
|
BLAKE2b-256 | e3f838458d3c1d8b59668ea24fe7a908e81ac45cb342cfb024b23c045b681ece |
Hashes for msgspec-0.18.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 588c655312e2e3d4d26e2b2708fcfb680e1d2a4cf4c441d8bee8856152966825 |
|
MD5 | b2835513b7d38aa272789bf97434cef2 |
|
BLAKE2b-256 | b0bc564b0535e91806296d8ec32025de5e5b68acfbf2234d3e9fba53931c75e6 |
Hashes for msgspec-0.18.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94a16aaee51a9f2c6f1f0c083ef4c8192b5daebc4e6b5f33a94a875ad4c67304 |
|
MD5 | 7c3308759e78564d0fee36af215e2876 |
|
BLAKE2b-256 | 14dc7058f023985ffefc017a160412df6d799f8340067a9a7d651869dfad9925 |
Hashes for msgspec-0.18.3-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea17dfb8caae519aea6cb3962151cde321b05ed062815fc98be841ed974a16d3 |
|
MD5 | ca4f1703b5f905a6ef98078ac3367c2c |
|
BLAKE2b-256 | 9300a3ab6efd0c45a81677004b3a2c7203cb6a85632f98ea63ed4b834d2f5827 |
Hashes for msgspec-0.18.3-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d69e336b150f6d0745c9bf08acd173db4a04d97888cdf6a8e7354824374bff2 |
|
MD5 | abaab7845a7cddcb4b99a6fd22cac9aa |
|
BLAKE2b-256 | 29bf65ccfbd8bde1e355778f946e2d598a864ef8062ecb98231dfddb315e54cf |
Hashes for msgspec-0.18.3-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a64822fc823d400bc2700f5dae378b63d0c585a70cfcf4cd20628a449505424a |
|
MD5 | 59cfb33eff15ef375a91b8b968bc18f2 |
|
BLAKE2b-256 | b86e89c73acb98b17ea9ac719908a697abb7ae55e279bf2b214e723ba5b22b52 |
Hashes for msgspec-0.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e346d70ca54ba7c96e5c8aea693a73469faf89ba503a970a2695ae61e5dd9d53 |
|
MD5 | 373907939a7266a40f10f8a9cba32a56 |
|
BLAKE2b-256 | 2c0a1d8ab5ca1a49d8283f88f649e5e9cc03dfac4c8bfe58e82e702f85cea484 |
Hashes for msgspec-0.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b5e19937cba1c27d144638fbb70e3e1ce59828a2bed918154d93b0d01319c570 |
|
MD5 | 874dad59949ef61946f9dfb3594c28b8 |
|
BLAKE2b-256 | a6bbafb0d4040e9ffb844d1ec02f0155224afe4837bafaeb35df10ae05a0880a |
Hashes for msgspec-0.18.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1f943c2718bc409a041270cf99b435cfab3fcf07386e86f2a75039dabe7b213 |
|
MD5 | 930672e7f71e0f2f8ec65165d245134f |
|
BLAKE2b-256 | 71bca3886603daffc9636b790c69b93549ac9113e416cb80ffbea19253982f87 |
Hashes for msgspec-0.18.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b4ec8da22b29c48268a42007f3469a649915355e02852c8060ad46886c16b0e |
|
MD5 | 0a525aeb8b697d15518e1c8f0596f52e |
|
BLAKE2b-256 | 8628b6bee2ee37ba56662d28f4a8217f5bcbacb370f7be7e116cecac5240256c |
Hashes for msgspec-0.18.3-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08537be42672d903877182a626b5619396224cde69abb855a46ff530f01d5b76 |
|
MD5 | 4ecae21b2fbff4632bcab3323d47f563 |
|
BLAKE2b-256 | f03ac07a09f8ed6d363f59db6050e786710cf68067c6d26b98ccc80d6166e907 |
Hashes for msgspec-0.18.3-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b2983e8b3d8b99eb9c347803baaa42de27a9205826143c6c23eca728d338ac9 |
|
MD5 | 43a1bd5df94b1f006758753f5c3a06cb |
|
BLAKE2b-256 | 5947ae080e687f36582e086cb34e05295620a161acb79cf06fbe47f279583c15 |
Hashes for msgspec-0.18.3-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0fdea736edf7154d35fee99a87ab8ca0036faed28d8820436fec9a455e8d7b37 |
|
MD5 | 4a26f8b16fe24afce7f4b3def1385b7b |
|
BLAKE2b-256 | 0a4e2f3c3fd1e5ec18bac42aec7d7d9650ed28a5358dc861981b27dd9b0b84ca |
Hashes for msgspec-0.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 351edc34b76fd44890131608414a5d298a1f5c5a21943eb4ace3f3f81ea4fed4 |
|
MD5 | 74507740e3e6aae3f037966711473dba |
|
BLAKE2b-256 | c146b43d47a2ed435cb2a7474d18678b6fe1b1ae00018185d95a790ae6d437fc |
Hashes for msgspec-0.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee30d21482fd0efba116f716298fcdbbb788c94b4860cceabc3b606c745299f3 |
|
MD5 | 5032ec63075b6a98668a2538905f47fb |
|
BLAKE2b-256 | c658e7bf1a3783ea99a193e5369a748bc8a302a7834cd1f08cd8d2388fda88a1 |
Hashes for msgspec-0.18.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8691aa006c9c7b05985716037980c550b98c28f528c0ed4996e9a22eb4000d52 |
|
MD5 | 9048da982130cbf73e01b5ff0bc85797 |
|
BLAKE2b-256 | c911c36c998f5c8a259361827c9a1d22a2f1b22dd1df9b1341fdd7e641718656 |
Hashes for msgspec-0.18.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c29517539ded0d54ea9efb81808a5536f25ecc1334876ff16ad44fa8197941b3 |
|
MD5 | 6bdbec5d1740d070d2a2dc81f3e1694e |
|
BLAKE2b-256 | 6b25966255b4db2435ed1c21cd1169d80bb025e93cf0f47f19084791bdf2aac1 |
Hashes for msgspec-0.18.3-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36a74189b308c8bc6a330f712b3438bafc15ee54bf818524fce8cf785198768d |
|
MD5 | 1c6747dc28149f433806410a996ee951 |
|
BLAKE2b-256 | c2641f542bed3670c2f34a640247dba7dcbc570de3861ad74229373a97900109 |
Hashes for msgspec-0.18.3-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f8b8ef0e8c560452adf878aff733ff9e92b043dcbd5d052606b95dcdc7d44f7 |
|
MD5 | f88f52b73b15550c637e68cabfac47b3 |
|
BLAKE2b-256 | 5b69ad126710547e212d659275af987c0cb6e8f9b35397dea500c3ae69e06391 |
Hashes for msgspec-0.18.3-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4377cf414bffe0b7734ff0ac3c09586265ced5aac6a469ce0d704b7b434214b2 |
|
MD5 | 4bce2de12f0e38f09a25175b2bb76c11 |
|
BLAKE2b-256 | 17a298ac129bee4fe4b4c807b511ccf3ea300c8568c4c46204d09d654cdb42c2 |
Hashes for msgspec-0.18.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 505acede80a3cfab62d4235fb212ce42d9d6a6d46fb16545df0c867fc1bff11b |
|
MD5 | ea68dbdbdb090e31e7edf6e2ca0b618f |
|
BLAKE2b-256 | 7c8beb1912c35032e156239193791a181316c974dc7bfde037222d7b98d2c905 |
Hashes for msgspec-0.18.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 35eb00e1637e82c2172e1ef84631b9bf79a231ada88c46ec171a5fb3ebca83bd |
|
MD5 | a0d4a1fbae2f6101e85994c8d842b3e5 |
|
BLAKE2b-256 | f5d0fab2e7056718a7233b506c1b747fbb66418fbc993a16c898a21b7c81b127 |
Hashes for msgspec-0.18.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba4912ff716c76a30110b8ffc8f1c7301bc2c7d7e1b1fae27ba6fffa69dfef9a |
|
MD5 | 11cea2fc42b01488cb57f3ddd9ad2451 |
|
BLAKE2b-256 | f02cb46468051168dfb0e6c3a54be6d8a331eb3a1c3f883b8cbf32e54365f173 |
Hashes for msgspec-0.18.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25a7a7e9fd77ecd44b2cca6703df597e96f9ddf015ec198b338218d46e330a8f |
|
MD5 | d8d59d18cb1beed181a2c86fefb8f24c |
|
BLAKE2b-256 | be34772a96ee19b01dc17591e831e8b8893c0ada8eb842ec13bd3f39ee828464 |