An utility class for creating instances of dataclasses
Project description
dataclass_factory
dataclass_factory is a modern way to convert dataclasses or other objects to and from more common types like dicts
Help
See documentation for more details.
TL;DR
Install
pip install dataclass_factory
Use
from dataclasses import dataclass
import dataclass_factory
@dataclass
class Book:
title: str
price: int
author: str = "Unknown author"
data = {
"title": "Fahrenheit 451",
"price": 100,
}
factory = dataclass_factory.Factory()
book: Book = factory.load(data, Book) # Same as Book(title="Fahrenheit 451", price=100)
serialized = factory.dump(book)
Requirements
- python >= 3.6
You can use dataclass_factory
with python 3.6 and dataclass
library installed from pip.
On python 3.7 it has no external dependencies outside of the Python standard library.
Advantages
- No schemas or configuration needed for simple cases. Just create
Factory
and callload
/dump
methods - Speed. It is up to 10 times faster than
marshmallow
anddataclasses.asdict
(see benchmarks) - Automatic name style conversion (e.g.
snake_case
toCamelCase
) - Automatic skipping of "internal use" fields (with leading underscore)
- Enums, typed dicts, tuples and lists are supported out of the box
- Unions and Optionals are supported without need to define them in schema
- Generic dataclasses can be automatically parsed as well
- Cyclic-referenced structures (such as linked-lists or trees) also can be converted
- Validators, custom parser steps are supported.
- Multiple schemas for single type can be provided to support different ways of parsing of the same type
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
dataclass_factory-2.11.tar.gz
(18.4 kB
view hashes)
Built Distribution
Close
Hashes for dataclass_factory-2.11-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 25ece9d4ab657faa53cafa1ff5f95cceea5645a0b4be1c2c5ba3d21f729ee515 |
|
MD5 | 4e25bbcf0b2655fb2e502b7b325823a4 |
|
BLAKE2b-256 | d2027b0d3ed9cdc5de89ae7fb3477e94b8dffac4d95d07cdf77723c14018172a |