perde 0.0.2

Last updated:

0 purchases

perde 0.0.2 Image
perde 0.0.2 Images
Add to Cart

Description:

perde 0.0.2

perde: python-wrapped serde
Heavily under construction towards 0.1.0 🎅







Python wrapper around the powerful Rust serialization framework.

Serialization & deserialization of python data structures.
Supports various types including dataclasses, generic types, enum and common built-in types.
Supports various serialization formats. By design, perde can support as many format as serde can.
Provides string case conversion of field names, skipping serialization/deserialization options, structure flattening.
Precise type checking based on type hints.
Very fast.


Install
pip install perde

Usage
>>> import perde

Assume you have a dataclass,
>>> @dataclass
... class A:
... a: int
... b: str

To serialize class A to JSON,
>>> perde.json.dumps(A(a=10, b='x'))
'{"a":10,"b":"x"}'

To deserialize JSON to class A,
>>> perde.json.loads_as(A, '{"a":10,"b":"x"}')
A(a=10, b='x')

To deserialize JSON to a dictionary,
>>> perde.json.loads('{"a":10,"b":"x"}')
{'a': 10, 'b': 'x'}

More formats are supported.
>>> perde.yaml.dumps(A(10, "x"))
'---\na: 10\nb: x'
>>> perde.yaml.loads_as(A, '---\na: 10\nb: x')
A(a=10, b='x')
>>> perde.msgpack.dumps(A(10, "x"))
b'\x82\xa1a\n\xa1b\xa1x'
>>> perde.msgpack.loads_as(A, b'\x82\xa1a\n\xa1b\xa1x')
A(a=10, b='x')

Supported formats

JSON (perde.json)
YAML (perde.yaml)
MessagePack (perde.msgpack)
TOML (perde.toml)
CBOR
Pickle
RON
BSON
Avro
JSON5
Postcard
URL
Environment variables
AWS Parameter Store
S-expressions
D-Bus
FlexBuffer
XML

Supported types

dataclass
Primitive types

int
str
float
bool
bytes
bytearray


Generic types

dict /typing.Dict
list / typing.List
set / typing.Set
frozenset / typing.FrozenSet
tuple / typing.Tuple
typing.Optional
typing.Union
typing.Any


Enum types

Enum
IntEnum
Flag
IntFlag


More built-in types

datetime.datetime
datetime.date
datetime.time
decimal.Decimal
uuid.UUID



Attributes
Attributes allow to modify the way of serialization/deserialization.
For example, to serialize/deserialize the field names as camelCase,
>>> @perde.attr(rename_all="camelCase")
... @dataclass
... class A:
... foo_bar: int
... bar_bar: int

>>> perde.json.dumps(A(foo_bar=1, bar_bar=2))
'{"fooBar":1,"barBar":2}'
>>> perde.json.loads_as(A, '{"fooBar":1,"barBar":2}')
A(foo_bar=1, bar_bar=2)

See the book for more details.
Benchmark
JSON

YAML

TOML

MessagePack

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.