Skip to content

Latest commit

 

History

History
111 lines (68 loc) · 3.28 KB

README.rst

File metadata and controls

111 lines (68 loc) · 3.28 KB
https://travis-ci.org/MacHu-GWU/attrsmallow-project.svg?branch=master https://img.shields.io/badge/Star_Me_on_GitHub!--None.svg?style=social

Welcome to attrsmallow Documentation

attrs is a powerful library helps you to write concise and correct classes. And marshmallow is a powerful framework to write serializer/deserializer and data validator for complex object.

attrsmallow is a glue layer to taking advantage from them.

Quick Links

Usage

A blog example:

import attr
import marshmallow
from attrsmallow import BaseModel, BaseSchema

@attr.s
class User(BaseModel):
    id = attr.ib()
    name = attr.ib()


class UserSchema(BaseSchema):
    id = fields.Integer(required=True)
    name = fields.String(required=True)

    Model = User


User.Schema = UserSchema


@attr.s
class Post(BaseModel):
    id = attr.ib()
    title = attr.ib()
    user = attr.ib()


class PostSchema(BaseSchema):
    id = fields.Integer()
    title = fields.String()
    user = fields.Nested(UserSchema)

    Model = Post


Post.Schema = PostSchema

post_data = dict(id=1, title="Hello World!", user=dict(id=1, name="Alice"))
post = Post.load(post_data)

Install

attrsmallow is released on PyPI, so all you need is:

$ pip install attrsmallow

To upgrade to latest version:

$ pip install --upgrade attrsmallow