Desert: DRY deserialization

docs Documentation Status
Latest commit
Travis-CI Build Status
Coverage Status
PyPI Package latest release
PyPI Wheel
Supported versions
Supported implementations

Desert generates serialization schemas for dataclasses and attrs classes. Writing code that’s DRY (“don’t repeat yourself”) helps avoid bugs and improve readability. Desert helps you write code that’s DRY.


pip install desert

or with Poetry

poetry add desert


A simple example models two Person objects in a Car.

from dataclasses import dataclass

# Or using attrs
# from attr import dataclass

from typing import List

import desert

class Person:
    name: str
    age: int

class Car:
    passengers: List[Person]

# Load some simple data types.
data = {'passengers': [{'name': 'Alice', 'age': 21}, {'name': 'Bob', 'age': 22}]}

# Create a schema for the Car class.
schema = desert.schema(Car)

# Load the data.
car = schema.load(data)
assert car == Car(passengers=[Person(name='Alice', age=21), Person(name='Bob', age=22)])


String annotations and forward references inside of functions are not supported.