1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
from marshmallow import Schema, fields
class PetSchema(Schema):
description = dict(id="Pet id", name="Pet name", password="Password")
id = fields.Int(dump_only=True, metadata={"description": description["id"]})
name = fields.Str(
required=True,
metadata={
"description": description["name"],
"deprecated": False,
"allowEmptyValue": False,
},
)
password = fields.Str(
load_only=True, metadata={"description": description["password"]}
)
class SampleSchema(Schema):
runs = fields.Nested("RunSchema", many=True)
count = fields.Int()
class RunSchema(Schema):
sample = fields.Nested(SampleSchema)
class AnalysisSchema(Schema):
sample = fields.Nested(SampleSchema)
class AnalysisWithListSchema(Schema):
samples = fields.List(fields.Nested(SampleSchema))
class PatternedObjectSchema(Schema):
count = fields.Int(dump_only=True, metadata={"x-count": 1})
count2 = fields.Int(dump_only=True, metadata={"x_count2": 2})
class SelfReferencingSchema(Schema):
id = fields.Int()
single = fields.Nested(lambda: SelfReferencingSchema())
multiple = fields.Nested(lambda: SelfReferencingSchema(many=True))
class DefaultValuesSchema(Schema):
number_auto_default = fields.Int(load_default=12)
number_manual_default = fields.Int(load_default=12, metadata={"default": 42})
string_callable_default = fields.Str(load_default=lambda: "Callable")
string_manual_default = fields.Str(
load_default=lambda: "Callable", metadata={"default": "Manual"}
)
numbers = fields.List(fields.Int, load_default=list)
class CategorySchema(Schema):
id = fields.Int()
name = fields.Str(required=True)
breed = fields.Str(dump_only=True)
class CustomList(fields.List):
pass
class CustomStringField(fields.String):
pass
class CustomIntegerField(fields.Integer):
pass
|