marshmallow-annotations allows you to create marshmallow schema from classes with annotations on them
# schema.py
from marshmallow_annotations import AnnotationSchema
from .music import Album, Artist
class AlbumScheme(AnnotationSchema):
class Meta:
target = Album
register_as_scheme = True
class ArtistScheme(AnnotationSchema):
class Meta:
target = Artist
register_as_scheme = True
scheme = ArtistScheme()
scheme.dump(
Artist(
id=1, name="Abominable Putridity",
albums=[
Album(
id=1,
name="The Anomalies of Artificial Origin"
)
]
)
)
# {
# "albums": [
# {
# "id": 1,
# "name": "The Anomalies of Artificial Origin"
# }
# ],
# "id": 1,
# "name": "Abominable Putridity"
# }
marshmallow-annotations is available on pypi and installable with:
pip install marshmallow-annotations
marshmallow-annotations supports Python 3.6+ and marshmallow 2.x.x
Note
If you are install marshmallow-annotations
outside of a virtual
environment, consider installing with
pip install --user marshmallow-annotations
rather than using sudo or
adminstrator privileges to avoid installing it into your system Python.
Keeping up with entity definitions, ORM mappings and schema shapes can be a huge pain the butt. If you change one thing, you need to change three things.
Instead, marshmallow-annotations wants to drive schema shapes from your entity defintions (with a little help from you of course).
- For more information, please visit the documentation.
- Found a bug, have a question, or want to request a feature? Here is our issue tracker.
- Need the source code? Here is the repository