示例#1
0
class TodoSchema(Schema):
    id = fields.Integer()
    title = fields.Str()
    description = fields.Str(attribute="desc")

    @post_load
    def post(self, data, **kwargs):
        return Todo(**data)


todo_schema = TodoSchema(many=True)

# my
factory = Factory(
    schemas={Todo: DSchema(name_mapping={"desc": "description"})})
parser = factory.parser(List[Todo])

# my debug
factory_debug = Factory(
    schemas={Todo: DSchema(name_mapping={"desc": "description"})},
    debug_path=True)
parser_debug = factory_debug.parser(List[Todo])


# pydantic
class PydTodo(BaseModel):
    id: int
    title: str
    description: str

示例#2
0
class TodoSchema(Schema):
    id = fields.Integer()
    title = fields.Str()
    description = fields.Str(attribute="desc")

    @post_load
    def post(self, data):
        return Todo(**data)


todo_schema = TodoSchema(many=True)

# my
factory = Factory(
    schemas={Todo: DSchema(name_mapping={"desc": "description"})})
parser = factory.parser(List[Todo])

# test
todos = [{
    "id": i,
    "title": "title %s" % i,
    "description": "5some long description %s %s %s" % (i, i * 10, i)
} for i in range(10)]


def do1():
    return parser(todos)


def do2():
    return todo_schema.load(todos)[0]
示例#3
0
@dataclass
class ComplexTodo:
    id: int
    title: str
    description: Qwerty


# my
factory = Factory(schemas={
    SimpleTodo:
    Schema(name_mapping={
        "desc": ("description", "qwerty", 0),
    })
},
                  debug_path=True)
simple_parser = factory.parser(List[SimpleTodo])
complex_parser = factory.parser(List[ComplexTodo])

# test
todos = [{
    "description": {
        "qwerty": ["5some long description %s %s %s" % (i, i * 10, i)],
    },
    "id": i,
    "title": "title %s" % i,
} for i in range(10)]


def do_simple():
    return simple_parser(todos)