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.15.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5fc1971fb06ba4a282a7dd5c7dab95d53c7785203d1f9100a0b8ade041605714 |
|
MD5 | 374dc8c9e996bdc8b7b91659ea4b7f05 |
|
BLAKE2b-256 | afa25c053df971d51137f9417ae04f437ae7a9fcab30164019b8d4f2356451d7 |
Hashes for msgspec-0.15.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e0b6ef1a716f9232ca9d9934ef06bd0fd3dc2ace5df7b96fa7971d1d72ec15cc |
|
MD5 | b2692d22686909d01c9aef085ae4762d |
|
BLAKE2b-256 | 1dfc50f9525000aa3080276018a4b01a1f51b5b2f01db4d57b23688a7d3b86d0 |
Hashes for msgspec-0.15.1-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d8c6ef247ca5178f161288a46654b88849975e4c24adff9ad7c778f77b0f2e1 |
|
MD5 | ce68cd3843ec32cc8066ee83103f9d83 |
|
BLAKE2b-256 | 71e5e3cbe6e37bea89dc1830be1dcf2d44c44885f30816094a053dcac1143a1d |
Hashes for msgspec-0.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46e275ad73531b0a8d8c4b36c2f1fd7c286b89545b806e10da8443c8f4b258ca |
|
MD5 | 8b1e0118162fda81d0bf0dd7d6f3608c |
|
BLAKE2b-256 | 9cad94126422b51a28cac086951fa1830d81bbb5d2729ee119993792eec63846 |
Hashes for msgspec-0.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80d753014680dfdf4a8f8a133f6e6a64e4a8f16f1722652512277a360ee9e66c |
|
MD5 | c02e744f0f0578f8c71f99be117faeb6 |
|
BLAKE2b-256 | 74031fe1a274fd88db32f89e27d4a80ee0f5238cf837ec079907ffad5921e8d4 |
Hashes for msgspec-0.15.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09aad00f25fc8f37bd118554a46c448f028bbf67fb048cd3f09671f634c5315c |
|
MD5 | 88caaffdd9839b7de163ae76069b4296 |
|
BLAKE2b-256 | 8b7ed6d7dbab3d7419104cef0a9d3d9ef0d4ff4f58befb026ea885c3172551eb |
Hashes for msgspec-0.15.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef239496d2d75d94ac89a54016e92c94d7486d19a4ab9dca7f11f8a837cccdb3 |
|
MD5 | 600bae0aafb4caf4c719b7e6319feae3 |
|
BLAKE2b-256 | 297673db35696368593b1dfaebc5879ef0e870fd7a63b7c81fd7d3bc03ee18d0 |
Hashes for msgspec-0.15.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e95dec734d2b8efaf8c9a3bbb6e162336c9b3ffc58a2b34001c05a0f6e8e581 |
|
MD5 | 4349d8d6846c8bb5cbb2a8c41255b1c1 |
|
BLAKE2b-256 | 52e3044c6f7a85111e6cb17d7a27e3ca1141d19bd1923ae3a0a7b3498dbc1347 |
Hashes for msgspec-0.15.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1d8104ee7b6babba778c9b73771964189ab0bf95f3fe513e26425f9b4ff58d10 |
|
MD5 | 898a52d6e70de0682e940e3ff2d31918 |
|
BLAKE2b-256 | 21107fdf71b77280b244b3bd8e22d5804c2cbedb1285ca38c7b145ef4d8c0334 |
Hashes for msgspec-0.15.1-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0af2ae0f398ffe1b88fd1540d64bd23b490434d632305700aa7e54d90e5fb618 |
|
MD5 | 0618507bf9f10eab8cdd6b55ff6d81a8 |
|
BLAKE2b-256 | 6b2e3d3fc6c195de447dacd9a629dcb4e6c22284f184afa6a91e057324b6dc85 |
Hashes for msgspec-0.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c0c4706ee200b61b510f76f505e03730abc6fbdd4336f6fdc99538798df7ddc |
|
MD5 | ada141ea4f8e11059d25e38083bba011 |
|
BLAKE2b-256 | 89be8c7f6c72a3c3c06ef40557d25143435da27697b0ca8d5bfdf1b3fc9d9e0f |
Hashes for msgspec-0.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a515af7c8b25e7f38475f91d7b733c711d128dbe7febb9fa3621d8386893cae6 |
|
MD5 | 518507729711850642636bd41fe8566a |
|
BLAKE2b-256 | d5085c068d71eee167954ea0c712623ca8243d3c79e9049cf06a5e3a16b8b3de |
Hashes for msgspec-0.15.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd1ae653ad3e3914dafa11156243e92a594e2c916a19dbbcf72102a1bef812c2 |
|
MD5 | a0f0210b4c3c7cbf930a29186c3b35e2 |
|
BLAKE2b-256 | f322145eff6ff794797c53cfbd8523c83b36d7e3b95d0baaaf0a4eeacec808dc |
Hashes for msgspec-0.15.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 217fa8a0eba122401c3fae3d07e1444556447ba3b9d65fc6647421b35430f2e2 |
|
MD5 | bb138274099e9538e612e2c2ffbe67ee |
|
BLAKE2b-256 | f8eb013df7c20eb6ec74e41b99505bfe52e73ba95f4e8983f961cd6f55ca24bb |
Hashes for msgspec-0.15.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba8744d0f51f5a169c28545e98087c10039d7ee93c92f97209f7ec69a926470a |
|
MD5 | 6fc9925f565cd6ec1515acc63d175d45 |
|
BLAKE2b-256 | 4dd513a33b09de8d0b8063fe6e7e445025cf1ee6c9505527b11f60050f3e9c2e |
Hashes for msgspec-0.15.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7afb2719019c8e304c7abc6c30d3f0516f43ace563a0b223805de19ae500cbab |
|
MD5 | 9f3eb0a5f2dee88602e5c568af147c6c |
|
BLAKE2b-256 | 37c96418fca95154f19af87ce73a3d2f2fe5e75bedaf6586e253a93012a0db0f |
Hashes for msgspec-0.15.1-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c67ed9bec9da6fc42255f6351fc423447ee535f0c9834b678bb1e049ab37e69 |
|
MD5 | 22287135bffb4b044f7b9a59cde5322a |
|
BLAKE2b-256 | 255f1b706a4942083a7ea433369a2d3eae3453f8034f084088ceb5ee8efce535 |
Hashes for msgspec-0.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50ebfe068e6330afcb32bbc6863984175b99c1988a7ede5e8f6f898f5270e815 |
|
MD5 | a7fdf1f5bdfc1ec0f93163d5222e314c |
|
BLAKE2b-256 | 9a29cfe1566aabf1c419df66b557c5ef08db5aca000d47d66410cc298f715947 |
Hashes for msgspec-0.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f01e7388de0bb2d30ac5dfdce9a63f8643d1bc9657e24efb1f7e2ffdf70732b |
|
MD5 | f25d8fb42f249edc6c7d79ab76954988 |
|
BLAKE2b-256 | e861be9eefce28da3f1a76387e5b51d19af490178bea8eeecd7fcd60c461f538 |
Hashes for msgspec-0.15.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6652d4152091266150ba238ba674db59a2349c0b3548401c9881f3702d6ee6fc |
|
MD5 | d3c71618e68c86518beb7a6b7f698acc |
|
BLAKE2b-256 | 9d9473d07f23b34ebbf874e079d6e0311deae79686eafe0f737e488ebbf0bd10 |
Hashes for msgspec-0.15.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4edb271657402cb31935d573b176f088fa2b77abf5aa8c4e2dceaf113bf5970 |
|
MD5 | 7e18ecd1c5685b351d7b75c6dfb4545c |
|
BLAKE2b-256 | 55e0f6af96b8898bf0e8172c179e0953bfa8e2ab37d7c4e14f84ea7d94025022 |
Hashes for msgspec-0.15.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18a3870c6348dee8a2f315a7c95219707123550e4fa648b7a2ec9f327e96e46c |
|
MD5 | 67b88941ba6cfd308851c319f523a772 |
|
BLAKE2b-256 | 97f51faa1b91fd3f9a541fdef38e769b7428007b0e49f926c4e52768e54458b1 |
Hashes for msgspec-0.15.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1016f241013f5569716bb7ae28897bc2f7d72ea1f0120673afa8ceb9823f9fd6 |
|
MD5 | e3617419fec1c0fac84d4872d9be0f13 |
|
BLAKE2b-256 | 7a3020701b992d5601f775dca6a7c733943cf1c4abb68e35ad9061ac80557e6c |
Hashes for msgspec-0.15.1-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d288240680f3e0153a735f411a22ae16e47498d501b4dfa0434a1f888173b26 |
|
MD5 | e014567415a25b789833a14eeae7042b |
|
BLAKE2b-256 | 63a23210124fc9d49714869ac202ecc1a4a58b464d4fcfcb73b48c8e2d4c4e03 |
Hashes for msgspec-0.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 154a790227c32ab66671df48af991b288a97456cc488d21b1eea63f390eae617 |
|
MD5 | 1e50c585680ed524a2979c5483700e00 |
|
BLAKE2b-256 | 1f3ae89d0e0ba4490997f684591517f498583a4aaa2689572b0763761ed836c1 |
Hashes for msgspec-0.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51b11b0da147348500c54a7be4f804d63accce9c74410e15e994f6ec69177bdc |
|
MD5 | ee2ec7d51a0399876024d4420bf91c4f |
|
BLAKE2b-256 | 480f21ea0fb2ebcd2b0b9fa737acace8cf5b10d8edb4ed04a8830d534c0cad93 |
Hashes for msgspec-0.15.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d365daaa42e8a42691046d0eead11ffc26ff1e72b0eb291488ddd2cd5e642513 |
|
MD5 | cdb79635ded6103f587510c9ccf7f96d |
|
BLAKE2b-256 | 253e17f8f232441e573ac92fec51a6693646f8eecfa605ed5d68d543bd943c0c |
Hashes for msgspec-0.15.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9074e743f538297a30ee043b5cd31c6fcd4d99a1995f619c01137d83ec0e5963 |
|
MD5 | 47ad1ecd1d5d5473e76db1f633e211a1 |
|
BLAKE2b-256 | fc04305f9288dfdff37a3b1e8647e230903f7b611943be8f4e307e4d16785698 |