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
~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.14.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 291b2917114ac873c1aa2f495c2a01d17dc534540843387c96be7a87c5c8f75d |
|
MD5 | 04e45b28ad4d7898e885b11d8a46ce5f |
|
BLAKE2b-256 | b5164f8e56418ad66ba1d7650b9eb6e307309c80ba26ba02f3ae5d0da2a20734 |
Hashes for msgspec-0.14.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 487ce8509e494e3f6a65d3e2a7b1c4a0ab5ede999334b0e1938fa28da057fcfc |
|
MD5 | c11aac34735f379f1ed3663efdf55b10 |
|
BLAKE2b-256 | 626172559daf0370ef09a9320609969499cdf6a18ff28468d12e722ebf3bf2fa |
Hashes for msgspec-0.14.1-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 654595f4c9659814adbe44883ccf436990c45b9a9c8b2a9d2762dd096392cf67 |
|
MD5 | 08cc9b9aa5984cff7f65e9920d289f09 |
|
BLAKE2b-256 | 4e12e323b85c8637fcd02c611373d94eec5ddd9d916318241f3a6722166f6742 |
Hashes for msgspec-0.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5c2041a49a4a97328237af0c6c596b98e3aa26f8561ab2c30a0524cb6340a5e |
|
MD5 | 6c16fdc305e7db2abda3d295fd4179b4 |
|
BLAKE2b-256 | 09514e3da9bda7d61f6e2f00a2a4f25122775d1e501b15437c25fa182d646a41 |
Hashes for msgspec-0.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0058f1e01ba4b6798135b5d107b2d4cb442278c569d3e848947be30a7f7f429 |
|
MD5 | a59b9408b1ad152821fe538e4c6585fe |
|
BLAKE2b-256 | af9c558334fe6dcd744a449ceb056b1a6775f54cb81d31448fd23f7eef4d7077 |
Hashes for msgspec-0.14.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1439a41e963e316abcbfdd5481ef95d828272df8d8e503aa779152d7c9058dd1 |
|
MD5 | 06751cc59fc0154615bca3b0e5e54193 |
|
BLAKE2b-256 | 3153c3824d7d343bbe97b4287231eddbc3252794a841e77dfda54ea5dec5e0f8 |
Hashes for msgspec-0.14.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6d7470823390cd0dcc16e9df51a161728d0884826a0d0e0acde5839a68d66c4 |
|
MD5 | 5040b106c8b75026026d7f3726e25534 |
|
BLAKE2b-256 | feed306494df91f093b2cbfeff2d2c8aaa2f5d92f17fcf9d47a544106f128fef |
Hashes for msgspec-0.14.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 180c20b722a5efcc615580fb89cfb9016a21852fc154bdb3d2014f97deb4142b |
|
MD5 | 42546417c28027253ce9c4f2442cfdfb |
|
BLAKE2b-256 | 3794614730ea7ee2bca2b2c053a01cacdb9d69216ba963447920c99006a0e7af |
Hashes for msgspec-0.14.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f04efc87250f35b27d8704df14a4b304b1efc901b3eebb6476f88bc09f1241fe |
|
MD5 | 65fb64560928eb73f237580952e6449f |
|
BLAKE2b-256 | 720951a2aeaf9b13b6a827a9c9280391b4fd10a27cf5c45cf78235cbb2ec4ff8 |
Hashes for msgspec-0.14.1-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7a169690662482dcbd6a3f79fe0a07e4e54672e41bff1f46144c20fd13243e3 |
|
MD5 | 4d479de37bdb76e9e067576ed9cbd649 |
|
BLAKE2b-256 | b7c5f691a53800a24d25c128fc6ae8d2ce4cec505b89ff17cbc09a1babbc0d54 |
Hashes for msgspec-0.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06e3038932e7deebbff59310d737b8753f34783af0cc47d2bdcb85333dd96e67 |
|
MD5 | 4238cffceca928c8db1aecb4ec707a2f |
|
BLAKE2b-256 | d9eeb140dc429f19774a8d1dac9466004994b9c64560cd38ab387b5c87dddc23 |
Hashes for msgspec-0.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fc66cc096c2a491492d11a8a678d209e63dc8f7c2244b54d89fcd4a18121d43b |
|
MD5 | e3d631bdfbef611a95767eaf1964c827 |
|
BLAKE2b-256 | 2e93d545cab7c0838772fa3dfa5ac6fd624cc6cd9edb97e4cf2c117d03b7ead5 |
Hashes for msgspec-0.14.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d490f02e1e3924538587ae49489b15b37c9e244bf84c268796693c3c3690df5 |
|
MD5 | 5acb067dd1b0b3aae3eb24cd440bbf8d |
|
BLAKE2b-256 | 1c45be560ae83bb75b537473fa0dcf6132ccbceff7654a2ed452b353ac4dc62b |
Hashes for msgspec-0.14.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0298c9d1584b9038623229c78f0c6e5286a164f7e74de96df0ac82a69f4ca33a |
|
MD5 | 666ef2fbf309956addcaa4fc67167348 |
|
BLAKE2b-256 | 3c77043c0739141320c7b5cf4b49dd59e6ab44ab134a63e82769da9a3a580763 |
Hashes for msgspec-0.14.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f27b7f846818abf25b138dcfe2c56e9d138742f4b164154abeb843add16c9064 |
|
MD5 | 4ef133e1860d977fe17688538de1a719 |
|
BLAKE2b-256 | 74cf85ec85dda0f863303949c30dca9a2de7795314534ac1c2347b8da2a2733c |
Hashes for msgspec-0.14.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1934d5f768eb336a27249b9c6a457f15c4efb4dbd4ae56b4646682b75dd02328 |
|
MD5 | 4e124fe3e00b41ce1380fd0cbc2e92e2 |
|
BLAKE2b-256 | 1964f2ef67955488c0f7506c8f01a05dc562f4760332d62edf684b60efd2c956 |
Hashes for msgspec-0.14.1-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 852ae70eb9240a3542e49240b088bfbbb99c01e8fbab4efd93d6661898c86226 |
|
MD5 | 425bb6b7f1049835296ddb8075032c33 |
|
BLAKE2b-256 | 10a6aff1f81400fba2ea0588526d3cdb9364ad58202b22885533d21c5af46ca5 |
Hashes for msgspec-0.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 37b6b366f81c86591cbc3507274ccea5f8c243502a890b2dd3253d5be829c2bf |
|
MD5 | fc4940915ee8eb80675cd3e55042761a |
|
BLAKE2b-256 | 6dacb87b5918953a34aa6e4a15ce9362edebe912c5326358a81c10d284b027f6 |
Hashes for msgspec-0.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7d8d7c0406379d0676d82f39aa4c618b8677503a677e2177a8a59fa5b7d2fad3 |
|
MD5 | 6452ccc5426274e0ae63275dcd86c9c4 |
|
BLAKE2b-256 | b3f32104b5ab3756b35b3fe126807cf2cee45492e436485466eb7ee5faf60f63 |
Hashes for msgspec-0.14.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8356dca33a9ebc0b6b53a45f77b130a22cdbb9cec14280f96e20d7121e93f460 |
|
MD5 | 8f8041904ea646b04fb38f802a085453 |
|
BLAKE2b-256 | 3e2652ec2a2e7c60785cc759c3dfc3510abccdc612b6ac1f2eb33d2cd11a154f |
Hashes for msgspec-0.14.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f219547416ea4ada1f210c4a0da7c76845f0fac76457f0674ad4aa96a3f1cb8 |
|
MD5 | 48f6adecd727b3720ae7a8e6478d737c |
|
BLAKE2b-256 | ff88d38617db56dde24015adce933451f2638a4114186c86f0f703ad168cbc19 |
Hashes for msgspec-0.14.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5417df2fadc85b31da81588e1eb81dcc064ac61c7215aa2b8576a82f69b5b5e |
|
MD5 | 12a12de9bb17291f8998978fb4527fb8 |
|
BLAKE2b-256 | 396f230f4bab36c82305c1840f34d972a63a5513607ba83806d7439931c21238 |
Hashes for msgspec-0.14.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38e324d07c644da3f92a54e3ee13aeb459ccf3a05bcbf496e65b537cafb182c3 |
|
MD5 | 4764e875805558c6baa4403639b25720 |
|
BLAKE2b-256 | a1030cd6849f13082dba54ccbd12fe12c582bce5d284b9bad771e78a043c7b97 |
Hashes for msgspec-0.14.1-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b9f6137185653d412a52a79543c746e37ff1391b5f6fc8ef755e22175f3a65e |
|
MD5 | dfa13ae4abdcc2f03c1af05e3beb06ed |
|
BLAKE2b-256 | de6d95df6070a20fbeae01a78e4931395a40ab647d8ce32bb40f82fe5906e054 |
Hashes for msgspec-0.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09460fc3a4aec4f34ceff180f5a227ce28eb9521720059de0c21057a4a775323 |
|
MD5 | 60a92d2c64020b4410a917a354a1d6cb |
|
BLAKE2b-256 | 8d84acef1b58bc652a8bc401826ec0dbfbb9034b212a20d2f55609f7df49e78b |
Hashes for msgspec-0.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a303fe7000d89c58a45d7bfd089280668e421a77a5d365765c101ce7f32f0f4b |
|
MD5 | 38e1e5283cd2f17a73860ffa058f4c5b |
|
BLAKE2b-256 | fea7aef6b2fae4d5b037b7e56e151dee9656c0ec0b1da0cfb3c75f3beb2b6826 |
Hashes for msgspec-0.14.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 54469a55b4260c12daf357cc52460c0dab5a0ea073ff3db62ead3f3496ccdcd6 |
|
MD5 | e5d2576f3ff5481a516646e518203c90 |
|
BLAKE2b-256 | 25b10cbe33b0d41d7d6c28c28fb23876a66cefb7f3c1d2d153d12ec68a9f0019 |
Hashes for msgspec-0.14.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4c5ec7d747eab9de830bce763fe493522b0504ae0b204d0fd6a0c41b76753d1 |
|
MD5 | d523a8fcae9ef7699df4273c1fe9d62b |
|
BLAKE2b-256 | 97062c223c77d876d96c296a65a0d90050cecb479a9815fd3916792dde1a3808 |