Skip to main content

Deserialize to objects while staying DRY

Project description

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.

Installation

pip install desert

or with Poetry

poetry add desert

Usage

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

@dataclass
class Person:
    name: str
    age: int

@dataclass
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)])

Documentation

https://desert.readthedocs.io/

Limitations

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

Acknowledgements

2019.12.18

Changes

  • Improve error message for unknown generics. #10

2019.12.10

Changes

  • Add UnknownType exception with better error message for types that should be generic. #8

2019.12.09

Changes

  • Marshmallow schema Meta arguments are accepted, allowing exclusion of unknown fields and other options. #3

2019.11.06 (2019-11-06)

Changes

  • Add twine and wheel development dependencies. #2


2019.11.06 (2019-11-06)

Changes

  • Switch to calver

Backward-incompatible Changes

  • Non-optional fields without a default or factory now have required=True so raise marshmallow.exceptions.ValidationError when missing. #1


0.1.0 (2019-06-22)

Changes

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

desert-2019.12.18.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

desert-2019.12.18-py2.py3-none-any.whl (13.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file desert-2019.12.18.tar.gz.

File metadata

  • Download URL: desert-2019.12.18.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.3

File hashes

Hashes for desert-2019.12.18.tar.gz
Algorithm Hash digest
SHA256 a2a1129c0ab23126225da9fc7038d69fad8e0de5839d3f01015907730a9a9031
MD5 f92872b6e8ae6e028d56427ae2e81dcf
BLAKE2b-256 c7ca6376558a2e264cd2b66243515de79e11761a684caff3efcda0e82f803e5e

See more details on using hashes here.

File details

Details for the file desert-2019.12.18-py2.py3-none-any.whl.

File metadata

  • Download URL: desert-2019.12.18-py2.py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.37.0 CPython/3.7.3

File hashes

Hashes for desert-2019.12.18-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 74a50a1d0cc25d53ea6a96e234ca963b2f37ea9105215d631ba966853bbb1d50
MD5 059545448bce747ba3cf71e528bf385b
BLAKE2b-256 4c7016a5d8eb8bdb39d69c4fb2ae70d3835505a7e5974b714c7b1d444185f85f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page