Skip to main content

Inspired by Marshmallow Models and by ORM libraries.

The Toasted Marshmallow Models package makes it easy to define serializable classes based on the ultra fast serialization that Toasted Marshmallow provides.

Installing toastedmarshmallow-models

pip install toastedmarshmallow-models

Using Toasted Marshmallow Models

Using Toasted Marshmallow Models in an existing class requires your class to inherit the Model class and specify the relevant Marshmallow fields. For example:

from marshmallow import fields
from toastedmarshmallow_models import Model

class Entity(Model):  # Inherit Model
    # Define Marshmallow fields
    id = fields.Integer()
    name = fields.String()

    def __init__(self, id, name):
        self.id = id
        self.name = name

How it works

The Toasted Marshmallow Models package makes it easy to dump and load models.

Dump methods:

entity = Entity(id=1, name='John Doe')

print(entity.to_dict())
# {"id": 1, "name": "John"}

print(entity.to_json())
# '{"id": 1, "name": "John"}'

Load Methods:

entity = Entity.from_dict({"id": 1, "name": "John"}) # creates an Entity instance

entity = Entity.from_json('{"id": 1, "name": "John"}') # creates an Entity instance

Features

Validation:

entity = Entity(id='i-am-not-a-valid-int', name='John Doe')

entity.validate()  # throws marshmallow.ValidationError if not valid

Get validation errors:

entity = Entity(id='i-am-not-a-valid-int', name='John Doe')

entity.get_validation_errors()  # returns dict(id=['Not a valid integer.'])

Nested Models:

class ChildEntity(Model):
    name = fields.String()

    def __init__(self, name: str):
        self.name = name


class ParentEntity(Model):
    name = fields.String()
    # Use NestedModel to define parent-child relationships
    children = fields.Nested(NestedModel(ChildEntity), many=True)

    def __init__(self, name: str, children: List[ChildEntity]):
        self.children = children
        self.name = name

Self Referencing Model:

class Employee(Model):
    name = fields.String()
    # Use SelfReferencingModel to define self-referencing relationships
    subordinates = fields.Nested(SelfReferencingModel('Employee'), many=True, allow_none=True)

    def __init__(self, name: str, subordinates: List['Employee'] = None):
        self.subordinates = subordinates
        self.name = name

Release files for toastedmarshmallow-models 1.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for toastedmarshmallow-models 1.0.4
File Size Uploaded
toastedmarshmallow-models-1.0.4.tar.gz 3.6 kB Details

Release files / toastedmarshmallow-models-1.0.4.tar.gz

Download URL toastedmarshmallow-models-1.0.4.tar.gz
Size 3.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0cc66724d10a52a5a178d1321a767c190412a6de703d6fee0bc4cc6f05f7f01b
BLAKE2b-256 checksum
How to use checksums
a91fca3bf352e5e07c44b90cd7cd0a0416c947a2dadeb7559c9dd572d27af2b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.4 This release

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page