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.
Metadata
Release files for serpyco 1.3.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| serpyco-1.3.13.tar.gz | 41.1 kB | Details |
Release files / serpyco-1.3.13.tar.gz
| Download URL | serpyco-1.3.13.tar.gz |
|---|---|
| Size | 41.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7ab5591aace2bc295dd68d5886619d4851e3699ae8cf7babce63c288e33904bf
|
|
BLAKE2b-256 checksum How to use checksums |
ce5568639cc29f952015a0b8afaa441fc8887a52ad409f1be9f77caa95dd4d1a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.5
|