Fast serialization of dataclasses using Cython
Project description
What is Serpyco ?
Serpyco is a serialization library for Python 3.6+ dataclasses that works just by defining your dataclasses:
import dataclasses
import typing
import serpyco
@dataclasses.dataclass
class Example(object):
name: str
num: int
tags: typing.List[str]
serializer = serpyco.Serializer(Example)
result = serializer.dump(Example(name="foo", num=2, tags=["hello", "world"]))
print(result)
{'name': 'foo', 'num': 2, 'tags': ['hello', 'world']}
Serpyco works by analysing the dataclass fields and can recognize many types : List, Set, Tuple, Optional, Union… You can also embed other dataclasses in a definition.
The main use-case for Serpyco is to serialize objects for an API, but it can be helpful whenever you need to transform objects to/from builtin Python types.
Serpyco is tested for Python versions 3.8 to 3.12.
Features
Serialization and unserialization of dataclasses
Validation of input/output data
Very fast
Extensible through custom encoders
Installing
Serpyco is best installed via pip:
pip install serpyco
It has only 3 (4 with python 3.6 dataclasses backport) dependencies:
rapid-json: used for data validation and fast JSON dump/load
python-dateutil: used for serializing datetime objects
typing_inspect: used to inspect types as needed to create serializers
Documentation
Contributing
Serpyco is written using Python and Cython for parts needing speed.
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
File details
Details for the file serpyco-1.3.13.tar.gz
.
File metadata
- Download URL: serpyco-1.3.13.tar.gz
- Upload date:
- Size: 41.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ab5591aace2bc295dd68d5886619d4851e3699ae8cf7babce63c288e33904bf |
|
MD5 | e500443f169c4cb0e01ccf8ba7949b34 |
|
BLAKE2b-256 | ce5568639cc29f952015a0b8afaa441fc8887a52ad409f1be9f77caa95dd4d1a |