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.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b7e0354c37b742e1c02fe0cd3ced97db516c8da62ac5a408609e9f5858aaf24 |
|
MD5 | 2387d38387e8ec8588697f79d69810db |
|
BLAKE2b-256 | 35bc296309f75a5f7851a3f88f0bfb0250662730555f9ed3a18509fb523bb7b7 |
Hashes for msgspec-0.15.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9d61de44b248feef82c8979a1e9912c923527cfb1d01c93b7bb5d6ca93ed09d6 |
|
MD5 | 8ac5ca9bc9981ce123f95d16d77e094b |
|
BLAKE2b-256 | d68c1dfa0f28a38a20df4ae4511a4788b15a4aee52c8bc394d11e02f8ec3a2ec |
Hashes for msgspec-0.15.0-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cee590163788fce21c5998d09198ef08ec06c1ca68ef50f2d5ed9e54d308538 |
|
MD5 | b58a4cb711e53a57b051cdd2b635ee12 |
|
BLAKE2b-256 | 8c77af7e8fb4e786c6002a47685f9845871740951a5b9135f5a8bb075c7dded0 |
Hashes for msgspec-0.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20bf8018bff6bb85f5315ba6fd47b2f9373ab67e8bb59b0d7a7def22bbbf9f70 |
|
MD5 | 09f71941eb0ebedc13a5597ebaa465b9 |
|
BLAKE2b-256 | c4252fd3c28ccfb3580b3f27372eea38cfe06b414fb30b0a6b0013729e0eb7f6 |
Hashes for msgspec-0.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a46a9818570362d4022161684cdb97ecd102953043059ee4902862940f48f8d |
|
MD5 | 5b5cdad2855c9e3cce1b929664dfd898 |
|
BLAKE2b-256 | 813433fb589280fcb05d10fdfbf08c205c2acd493def18befa801c57b0b751b0 |
Hashes for msgspec-0.15.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 381c7a891adcc741e617956ba987912bc21864f9dd27b8cfb03bfb0aded5e1fd |
|
MD5 | cf84db566f6cae28488c801e8e9142af |
|
BLAKE2b-256 | b3d805e26b695f273d6aa21825a964ec5742726f0336486c39f49846fd4fcb15 |
Hashes for msgspec-0.15.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c75fd847709e30265f050375c408fec1c07797694162834aa86ab3b3cf055da |
|
MD5 | 69aa786c5529c15c944a181e2e9681ef |
|
BLAKE2b-256 | 2dcbadf40e298dc06cb25e61724bea00e7dd557bef1c3c0e34203577bf3b5502 |
Hashes for msgspec-0.15.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42c2f9fe0b58dc6f2b15720490c67554b5ba0007d3ee94340ca4448bda917287 |
|
MD5 | 3002dd8687e1b1e03090af11071655ed |
|
BLAKE2b-256 | dbfda365a273791d32273a65f4beba92384cb71da4253b08961bad8d767018d6 |
Hashes for msgspec-0.15.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05fc603508e0c8021249d3e531fa4bb72d167bdfa76d869d48f96a5b8f9b50bf |
|
MD5 | 3d313b67c4ffc8ced5f1b6ea2e569a8c |
|
BLAKE2b-256 | 4e30ff5f241aae54d4795606bc0755807b2e9781fa79112dd4b421fc45ea765b |
Hashes for msgspec-0.15.0-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf3ab3f8d5752dbe68babc77d21b42575b916793515442e3890aef680e212154 |
|
MD5 | 4d7a0a935bd622eade21a745e874ba68 |
|
BLAKE2b-256 | 37da4a8669ed5375e888df1916db69ee79393c6e0dd91a5fd9966df9f071cdba |
Hashes for msgspec-0.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | beb3789519253b22338cca48053ba5ac8b442633e3af8f58e264d776a98ff6d0 |
|
MD5 | 96fb0fcbf9a31f74ab678bce116b49b9 |
|
BLAKE2b-256 | 09a722e98b4ea8f18a192ce3733ff4ea12988c00da66a8fccd9048b006a7ad31 |
Hashes for msgspec-0.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff80bd40469915cc61686086a2503b901e17040f8a191099d8ccaa45dc72df8c |
|
MD5 | f5e5c3d9556bbe7d06bdf0f2ad3f567e |
|
BLAKE2b-256 | 6efc75a4b7128bd9b3b323cae91549b8ed233b580808ba72b0172de3922207d8 |
Hashes for msgspec-0.15.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b57b6869ef1717c0343465198e19284d1e6aa5f292af2726284e4dfedfedeef |
|
MD5 | e718fcd53ca3383f7cc8097f38249568 |
|
BLAKE2b-256 | 40f140604fdf74bfa93635d86ac2116f9d332e65a16e60c70855f4b96070c610 |
Hashes for msgspec-0.15.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 415519f68cd3f1a224f87ed415459ac3b86e4f6e82815a036e4238c62006f696 |
|
MD5 | 165dd3b3676d4125789215d9059b894a |
|
BLAKE2b-256 | 92bc901267d37597e9a46f31de52cd3647d5cf6a38bc538d981d601c2203cb5d |
Hashes for msgspec-0.15.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f77cc91d3cb8a7bccfba28fe4aec537178384509bfce222f8eca287b7e5d0214 |
|
MD5 | 0c5556cd0ee36b6a095b613b899e6e71 |
|
BLAKE2b-256 | 3a66f5bd979eaaeade2dfff01cca6e2f754e19d3cd68d9a7e348ce0de123d66d |
Hashes for msgspec-0.15.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d3cde786110a92f764666b9f963b4389d5d1798bf1aca2422a59931d8d1f694 |
|
MD5 | a3ad9890419d710ef39011836c32afcc |
|
BLAKE2b-256 | e2c381ab31bb3ad8225c83a46aeba6829a7b9ec58df92b8b8e003f97acf937c7 |
Hashes for msgspec-0.15.0-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9178a7550a5516295c682e6e5c143782503719b4c816496349a4a0f1b62397ef |
|
MD5 | 1423ef3b3663ec7fc69d0a1162732942 |
|
BLAKE2b-256 | 8a4e0840fd02912d095bbed686e4f4e2c84947fec8c6e08fbfd3c8352edee7ad |
Hashes for msgspec-0.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 550b359c49562d52849103b87b4f7381fbc0adf958afa316599befb9a3e3379e |
|
MD5 | 3d3e1dccf3b2627f6fc46e23c23fa100 |
|
BLAKE2b-256 | a5182eccf2b9b08703fb04b71236357a2dd512fd22974f2a42605fe6ccf7cdbe |
Hashes for msgspec-0.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07ee1d1a15e3b319dcd7326470216928a7b58d47460b253577ccd0ab5dcf5c3c |
|
MD5 | 529bfb3daecdddc2a4978b8145044feb |
|
BLAKE2b-256 | 00e779c4fac7145b3b4db3fe7865c7df563bda8ce4907852b6f41df4f005b4f1 |
Hashes for msgspec-0.15.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 346960762d648a6512b51f30be7c1267630e0bbc6fd65e8b23a3f54e5f562656 |
|
MD5 | a42737dffeea1bbfb1c38eda91ce3897 |
|
BLAKE2b-256 | 5ad4904b58771c4a1d658c3050db56720daa54c4ec0563e60e2ff60283e09c23 |
Hashes for msgspec-0.15.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ddef8fdc06676dd1bec9fe67b3128f84079469ee6424384cbb29a90c9033b559 |
|
MD5 | c3a753c6bd11fcd7b3ab242ec2fcca15 |
|
BLAKE2b-256 | 02fc5883d85fdd50b709ae3713dffc4555d9d78d4dcb9b8792a89bc52a266d7c |
Hashes for msgspec-0.15.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cd198ed4445914ebc25a24b6cc6020902bb6b888fc9b39500ef4500841b1b437 |
|
MD5 | 719929dcf4c6f6bd4d5b08b0e2501b30 |
|
BLAKE2b-256 | 09fbd2a7faf2f0b1de216e18871aa3eef9be470eeb8e6ae7bdb6272c1c6ea60f |
Hashes for msgspec-0.15.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c4c7e0abfac3a67f3e1d51e1d1313fd4205528e17663ff264b1945c3370b18bd |
|
MD5 | 5d235f29eb5b5d7c902ace033d181572 |
|
BLAKE2b-256 | 97e780135117fa6df9cbab2226f261dc1566878776e25a2e8f3e8bf9f78d1d0e |
Hashes for msgspec-0.15.0-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 22713a1f618b4094c0268c6fbeef530397e5f3fa5292e4afd51caddad645843f |
|
MD5 | 3c37722e8ade75a873a31019a59a1a18 |
|
BLAKE2b-256 | a4670c447ba7d362746550f32dfa04beb46ca11460958c7c02b1b4814365f017 |
Hashes for msgspec-0.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fffa7ec85f27577f7f5471b390bf902d58ccd89b3612cf40bfb92f4ba75e6c95 |
|
MD5 | 4a0138e4c85457d97b0c3260cd4084a3 |
|
BLAKE2b-256 | 220543cc25daa884ac60282bba0717ab649510c74167757e365c844bedf6f248 |
Hashes for msgspec-0.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 490c88d76d573cce16653434ace3d9a8a8675ef6e350f114752fe60e69b6a232 |
|
MD5 | 2042ad9bcda92de6e167ecc785069c01 |
|
BLAKE2b-256 | 79515d511271d5504f240d12095441f414365bea1f28bdbf6536e8b7f1b00c79 |
Hashes for msgspec-0.15.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc253e4ad51d360590358ab2cee5a6139f04ad994e0fcbff52e7f61fca475c3e |
|
MD5 | a37e4ff59e99968f1fd1f42604ddb2f3 |
|
BLAKE2b-256 | d1de8d6f49160e273a7951baffdfcd8ab4254e1982d7ffdeaa702db59957b8b5 |
Hashes for msgspec-0.15.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b5b7c1b69416eab3ab2ad1c9593b749226b80555532292fae5fe9d154794089 |
|
MD5 | 9609ba505c2e7ac1d30e2b1cefd7f20c |
|
BLAKE2b-256 | 0b08fb5c1c7cadbaf7cbad71f6b0ebef19127b0333adc76b57ffe794dafe8935 |