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 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 5-60x 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.5-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c79e7115f0143688c5d866359e7b6b76dd1581a81c9aeac7805a9d6320e9f2ca |
|
MD5 | 9c16979b30b222745316331876d7d95e |
|
BLAKE2b-256 | 2940fc8e44be4868c412af2f278c4ef26ba5fb2390541d843059c9095f6c3c66 |
Hashes for msgspec-0.18.5-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b491b2549d22e11d7cfe34a231f9bd006cb6b71adefa070a070075d2f601e75c |
|
MD5 | 6bf6265ed79da1731fef7d806aed55a5 |
|
BLAKE2b-256 | ce34d46337875d11ebde1468fba8524d0e282b4bc04abf99566def430020968d |
Hashes for msgspec-0.18.5-cp312-cp312-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a7b682cca3ba251a19cc769d38615ddd9551e086858decd950c156c2e79ecc1 |
|
MD5 | 18efd4a0ea34fc7e1a7f400c1416ead7 |
|
BLAKE2b-256 | 204f8bf4ec736f7be3efcda9d4ad1244d84dc6a903b3c94d15de585c4a0e1232 |
Hashes for msgspec-0.18.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d318593e0ddc11b600552a470ec27baeb0b86a8e37903ac5ce7472ba0d6f7bf8 |
|
MD5 | 3ace263679b2c2e8cd06ca219b029f6e |
|
BLAKE2b-256 | 6e631501c6da853713d450e740262a094f28d94c4ff31354552b8eb365f5e417 |
Hashes for msgspec-0.18.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b6af133ba491a09ef8dcbc2d9904bcec220247e2067bb75d5d6daa12e0739d6c |
|
MD5 | 076e2b46a0f26c38a6f2ff09e22a3f2a |
|
BLAKE2b-256 | 049eadc6b5508c435b9db0f1ce74559d11b4cb64019b7e5e2e042101e6d75d1c |
Hashes for msgspec-0.18.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 261cc6e3a687e6f31b80056ab12f6adff3255f9b68b86d92b0b497f8b289c84c |
|
MD5 | 14f9f194f267fe1836260b21cc2aa12c |
|
BLAKE2b-256 | 35a94c2050c46511f29d50d9a81c7c6a6895c2ec213a8cdec7b12c37c97a42bb |
Hashes for msgspec-0.18.5-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b3d206af4280172948d014d20b2cea7939784a99ea9a7ac943ce71100dbe8f98 |
|
MD5 | a0d930ca13e11889b7bd190ab1eec98a |
|
BLAKE2b-256 | 706946d9fe9819c018b30596f7e3116dda71474ad3b947ecc82c07273cebe46e |
Hashes for msgspec-0.18.5-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 024f880df7d2f8cfdb9f9904efa0f386d3692457159bd58f850c20f11c07d16f |
|
MD5 | 04432e086472a2655194be5cf1fb5ed2 |
|
BLAKE2b-256 | 935b8325a3969db88da2e6103cf13f8fee522008705fbae64fd778c2f54805e2 |
Hashes for msgspec-0.18.5-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f7c0460aefdc8f01ea35f26e38c62b574bbf0b138ade860f557bbf9e9dac50c |
|
MD5 | ef1eebcc86e7f9e7bb4b9368ee5a7a8f |
|
BLAKE2b-256 | 745832f568c935564786badfca42edabafb19f1a77e4c46bcdcdbd000701fd1a |
Hashes for msgspec-0.18.5-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f55c4610cb0514aef8b35bfd0682f4cc2d7efd5e9b58acf30abd90b2a2376b5d |
|
MD5 | 8370cccc18881a3eaf93d089e17acf39 |
|
BLAKE2b-256 | 942f1dd6b7adb0021a76b8537637570e1f58c61e7aefce30ed28efef6ec1fdb9 |
Hashes for msgspec-0.18.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01ed3472a0508f88a25a9d3bccafb840110f0fc5eb493b4baa43646e4e7c75c2 |
|
MD5 | 143b858ce7ab37796c3ae8e28f26b1f6 |
|
BLAKE2b-256 | 95b0eb20eff8da97b8c7614d2a95ecee2eff6f511bccb6c2698f2f650866d715 |
Hashes for msgspec-0.18.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13da9df61745b7757070dae6e3476ab4e13bb9dd3e3d11b050dfcae540058bd1 |
|
MD5 | de68c1b5f0c769cdd9df003c4a7c771d |
|
BLAKE2b-256 | 768710ebf2528fb21200a78246c07ccbc39862c6e37b069e8b1b7ab0854023a0 |
Hashes for msgspec-0.18.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0017f6af35a3959002df4c82af60c1df2160701529dd89b17df971fde5945257 |
|
MD5 | 0fe6294346e637aff17799a898c61d22 |
|
BLAKE2b-256 | 71d6af62787df3fbbadbfcb785585f2bf46ef12ac549d058debb54719b96ab50 |
Hashes for msgspec-0.18.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee1f9414523d9a53744d21a6a2b6a636d9008be016963148a2646b38132e11dd |
|
MD5 | ee28a74f41d26e33c1fd0e7dcff8e6fb |
|
BLAKE2b-256 | 533d5c1e41c77b7d7415b66247b3abb46a1891174cefade054d1cc312733c571 |
Hashes for msgspec-0.18.5-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4c2fc93a98afefd1a78e957ca63363a8e5fd1b58bf70a8d66413c8f2a4723a2 |
|
MD5 | 7ce78cdbec0ff12abeb1f529f5136762 |
|
BLAKE2b-256 | 873cb9c55256e6423922f6474d1e2904d8d08414f43e0ceb0da9ea0809eea2d2 |
Hashes for msgspec-0.18.5-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b547c7ad9786a79b0090a811d95d2d04063625a66fd96ed767cdfbabd8087c67 |
|
MD5 | 65afa4f957d16a4776a9231f230f9578 |
|
BLAKE2b-256 | ba87c99b6bedf0f9b698418986be87e9c3833377eee87b091dfceb73799dab01 |
Hashes for msgspec-0.18.5-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0ec78bd93684db61dfccf7a421b2e1a525b1a0546b4d8c4e339151be57d58a6 |
|
MD5 | 22b3cbb848e84e58eaf11a7490d85af6 |
|
BLAKE2b-256 | a5f248a2cf5fdf7957e72ea97bc55166f435279702a0d34501629ae4e5d3a216 |
Hashes for msgspec-0.18.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5999eb65646b131f439ebb07c22446e8976b7fd8a312dca09ce6fa2c21162bb |
|
MD5 | fa042f97f5ee64d237ea38e74d061c46 |
|
BLAKE2b-256 | 308cde630d61b6ba5d1bfb5d9516472ea2485e12cb862da75b96205de7e7c535 |
Hashes for msgspec-0.18.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 773a38ead7832d171d1b9406bf42448a218245584af36e42c31f26d9f48a493a |
|
MD5 | 2a0f95114380e7ec0a480808f0c7b862 |
|
BLAKE2b-256 | 31e3be4e37d6fb0243ea56e7eacb27d91e16ef6e62889198110dc149aca58a2d |
Hashes for msgspec-0.18.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf885edac512e464c70a5f4f93b6f778c83ea4b91d646b6d72f6f5ac950f268e |
|
MD5 | 78b51d5505f82e10ea06c916e4b42182 |
|
BLAKE2b-256 | 24020eee28f987d660e012c0860e9163a22cb53d2ab68f8a8153f3d5a0ea3074 |
Hashes for msgspec-0.18.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50479d88f3c4e9c73b55fbe84dc14b1cee8cec753e9170bbeafe3f9837e9f7af |
|
MD5 | ec29ca57a8b4a442b8e21a5ee035b99e |
|
BLAKE2b-256 | 338e79dcf3ea62a35b508b8bf8fc8be4563cf5469e7736202a955a0a6d30d998 |
Hashes for msgspec-0.18.5-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fae28faef5fd61847930d8e86fd83c18f991a338efd8fbf69c1d35d42c652f41 |
|
MD5 | 61ee772b86bc30adb93727b18fa62fe5 |
|
BLAKE2b-256 | da298f4224d90af151c77ef1020e4db81688cf9e1772157c31e63860adf35f82 |
Hashes for msgspec-0.18.5-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c30fadc1a1118097920dd868e42469fed32c7078ca2feff2fc19e7c017065322 |
|
MD5 | 9a416771e299cf11c53dd3c57109d122 |
|
BLAKE2b-256 | 21241d52d8120455ba780e8d4187abf829b4b695eb86a12b6b6c0d8c5c0e4c79 |
Hashes for msgspec-0.18.5-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eccba21248f90f332335b109e89685e79940367974812cd13975313f480f3dd8 |
|
MD5 | 7da663f7c48b9be7fa23fc7ca391bb61 |
|
BLAKE2b-256 | 41a318388c240708abfe0e55400343c1a26232bc9d21bc2d474a6da6d4378b56 |
Hashes for msgspec-0.18.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be2440fa5699e1b3062d17fdfd8c6a459d72bb4edbce403353af6f39c8c5a6fa |
|
MD5 | c838d077b44caebe80ff639061c74a24 |
|
BLAKE2b-256 | aebf993d8b1a6039bee9ffb21187fb2885f959c8990f835f655198660517a849 |
Hashes for msgspec-0.18.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd8a64da668b4eeef4b21dcecc640ed6950db661e2ea42ae52bbac5a2dbffb3a |
|
MD5 | 38ddc307ea6e7b6874cd914d68e941ff |
|
BLAKE2b-256 | 2bbed8cd02604b726b8b534865ecd845c67978b9ab47a52902324af7f5c2ea01 |
Hashes for msgspec-0.18.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0027fba5362a3cb1bdd5503709aa2dbffad22dffd50f415086ed5f74f229ead9 |
|
MD5 | 3e3b23d1641736728ad1f176b5fdba58 |
|
BLAKE2b-256 | c16e93b638690cb25184ae459b7f73a44fc4d3057ea7042683fb4ccfc2f12f62 |
Hashes for msgspec-0.18.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f290bfe7e21e8069890d101d8a060500b22a3aeb7860274644c4ec9240ddbedc |
|
MD5 | 015caf088c6ae35b11a6dfb88bba80b6 |
|
BLAKE2b-256 | 59dbbdf0d19bdacfa6af634bab50e562e201489c5f3693861e62f189cef2a68c |
Hashes for msgspec-0.18.5-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 482bdf77f3892dd603061b2b21ac6a4492bb797a552c92e833a41fe157162257 |
|
MD5 | 4edc9bc0522f34763b0664c736ba0500 |
|
BLAKE2b-256 | 770594769569b8f6090ed9bb3b28b0512588e4127100e23c31a78d21729ea939 |
Hashes for msgspec-0.18.5-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f387cabddf2dc26d6fa7f1a8158deefc8db9e0626eacebbe4875f421c66d574 |
|
MD5 | 9f7789bd67bdd2687681df1d7da59d12 |
|
BLAKE2b-256 | 9d320dd53470ee681fa6e2385db903130361bbdcdec96bf65ba1bf28e0136a5a |
Hashes for msgspec-0.18.5-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7b49cba0577edc8ac166263b5fec3619fe5a267805cfc041bccaf8a0c58ef05 |
|
MD5 | 49b8d7bc165f3db3133bc4ef3a7a63ff |
|
BLAKE2b-256 | 38490e8b4ac2512979dbdf424460be0f21334ec091a8fea880762ba2e9ec1ac5 |
Hashes for msgspec-0.18.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6431305c645fb2a88a6da1fcec53dbaac61697f1219000b9589f9286532aabc0 |
|
MD5 | 9d1d5f2a1538052ae3006b68aaa7190e |
|
BLAKE2b-256 | 1e790bff48661a91f83148e7b8154afd67d716e9fdf46780360166e0c478f923 |
Hashes for msgspec-0.18.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9420750f19c311e490db3edff9d153621c4989c582cf1be40c307c86d6cc2c1e |
|
MD5 | 52b84fef34070d0db05e064768b527ad |
|
BLAKE2b-256 | c2912d011b42352442776ba33096532cde64654ebb7acd3a0e20cbf166f57600 |
Hashes for msgspec-0.18.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4eeb22921ca6cdfbf17ca874eccbe23eb010c89ffb3017b628940c37d53ce4a |
|
MD5 | 7f03de6173c0841353c7a05e16afeb7e |
|
BLAKE2b-256 | de1d20f734858b9c8c861720f23c5f0956ce113d18bd215f06fa5af4cf379044 |
Hashes for msgspec-0.18.5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c13e0a510bbd00cb29d193fceff55d1e17a99c9f97284cdbe61c15496c2f7803 |
|
MD5 | b3061b44e36f6fc2b6dc55e4f735677a |
|
BLAKE2b-256 | 8e1c6ac1ad2987ed037e6443999f33dcd077a55d5bab9a44e3080efff7f66030 |